Code coverage tests

This page documents the degree to which the PARI/GP source code is tested by our public test suite, distributed with the source distribution in directory src/test/. This is measured by the gcov utility; we then process gcov output using the lcov frond-end.

We test a few variants depending on Configure flags on the pari.math.u-bordeaux.fr machine (x86_64 architecture), and agregate them in the final report:

The target is to exceed 90% coverage for all mathematical modules (given that branches depending on DEBUGLEVEL or DEBUGMEM are not covered). This script is run to produce the results below.

LCOV - code coverage report
Current view: top level - basemath - RgX.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30074-db9b3c0519) Lines: 1628 1784 91.3 %
Date: 2025-03-13 08:38:27 Functions: 204 222 91.9 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
RgXQX_mul 0
RgXQX_powers 0
RgXQX_sqr 0
RgXV_prod 0
RgX_RgXQV_eval 0
RgX_RgXn_eval 0
RgX_Rg_eval_bk 0
RgX_sqrhigh_i 0
RgX_sqrhigh_i2 0
RgX_translate_FpX 0
RgXn_exp 0
RgXn_inv_FpXQX 0
RgXn_powu 0
RgXn_sqr_basecase 0
_RgX_mul 0
_gen_sub 0
_sub 0
_zeroXn 0
RgXn_div_FpXQX 6
RgXn_sqrt 6
RgXn_sqrhigh 12
RgXQX_RgXQ_mul 30
RgX_rem_FpXQX 60
RgXn_inv_FpX 78
RgXn_div_FpX 102
rfrac_deflate 108
rfrac_deflate_max 108
rfrac_deflate_order 108
RgXQV_RgXQ_mul 114
RgXn_reverse 132
RgX_sqr_FpXQX 168
QXY_QXQ_evalx 198
RgXn_sqr2 270
RgXQM_mul 276
RgXX_to_RgM 276
RgXQ_trace 408
RgXnV_red_shallow 414
RgXn_powers 414
RgXV_maxdegree 504
zero_FpXQX_mod 528
RgX_RgXnV_eval 828
RgXQV_red 1038
_zero 1056
RgX_homogenize_deg 1080
RgXY_degreex 1189
ZX_unscale_divpow 1194
RgX_sqr_FpX 1218
QXQX_homogenous_evalpow 1416
_oneXn 1662
RgXY_swap 1758
RgX_mul_FpXQX 1782
RgXn_powu_i 1956
RgXV_rescale 2058
RgX_divs 2286
RgXV_RgV_eval 2526
RgXQ_matrix_pow 2538
QXV_QXQ_eval 2574
RgX_digits 2706
do_QXQ_eval 2772
RgXY_derivx 3288
RgX_muls 3439
_mulXn 3833
RgXQ_norm 4409
RgXn_eval 4422
RgXV_unscale 5358
QXQM_to_mod_shallow 5676
QX_ZXQV_eval 5916
RgXQV_factorback 6101
RgM_to_RgXV_reverse 6173
RgXQ_powers 7350
QXQ_powers 7908
_RgX_divrem 9714
_sqrXn 10036
ZXQ_powers 10098
RgX_pseudodivrem 10166
RgXn_sqr 10258
RgXQX_pseudodivrem 10370
QXQXV_to_mod 10848
ZX_unscale_div 11140
RgXQM_red 11142
RgX_sqr_QXQX 11507
QXQC_to_mod_shallow 12552
ZXQX_dvd 14860
QXQV_to_mod 15730
RgX_homogenize 16056
RgM_to_RgXX 20116
_gen_zero 20727
RgX_affine 25428
RgX_recip 26904
RgXQX_translate 27822
RgXY_swapspec 28066
QXQX_to_mod 32136
RgX_sqr_i 32220
RgX_sqrspec_basecase 32254
RgX_sqrspec 32288
RgX_normalize 33540
RgX_splitting 37398
RgX_rem_QXQX 41850
RgX_unscale 43630
RgXn_expint 45378
RgX_integXn 48360
RgX_recip_shallow 50904
RgX_Rg_add_shallow 55845
RgX_mul2n 55944
_sqr 57720
RgXQC_red 58014
RgX_rem_FpX 58560
RgXV_to_RgM 67364
_pow 75688
RgX_sqrspec_basecase_limb 84578
RgXQ_pow 87562
_ZXQmul 88974
RgXQ_powu 100100
zero_FpX_mod 122013
RgXQX_divrem 132673
ZXQ_powu 134358
RgX_RgV_eval 142939
QXQ_to_mod 143820
RgX_mul_QXQX 147652
_ZXQsqr 155958
Kronecker_to_mod 160575
RgV_to_RgX_reverse 161379
QXQX_to_mod_shallow 173610
RgX_addspec 196648
RgX_div_by_X_x 215607
_mul 237183
get_Rg_algebra 240906
RgM_to_RgXV 259106
RgX_rotate_shallow 271746
RgV_to_RgM 287909
RgX_RgXQ_eval 357705
RgX_liftred 390511
RgXQX_red 435076
_gen_cmul 439544
RgX_addmulXn 452989
RgXn_div 500810
_gen_sqr 507157
_add 534258
RgXQX_pseudorem 540957
RgX_pseudorem 540957
RgXn_recip_shallow 551725
RgX_mul_FpX 571041
RgX_homogenous_evalpow 571311
_red 620762
RgX_inflate 684210
RgXn_inv 692124
RgX_deriv 707433
QXQ_to_mod_shallow 718793
RgX_valrem_inexact 730350
gen_bkeval 747943
RgXn_inv_fast 775764
RgXn_inv_i 775764
ZX_unscale2n 790874
RgX_deflate 846453
_one 873440
ZX_unscale 873557
_cmul 891741
RgX_Rg_sub 1050049
RgXn_div_fast 1100427
RgXn_div_i 1100427
Rg_to_RgC 1162339
RgX_sqr 1174325
RgX_sqr_fast 1184583
ZX_z_unscale 1262706
RgV_to_RgX 1280371
RgX_shift 1360226
RgX_mulhigh_i2 1362184
RgX_mul_normalized 1473784
_gen_mul 1577845
_gen_nored 1738903
_gen_one 1773931
RgXn_div_gen 1876005
RgX_recipspec_shallow 2165258
RgXn_mulhigh 2240810
RgX_mulhigh_i 2289182
RgX_blocks 2390496
RgX_mulXn 2592968
RgX_val 3159739
rem 3477058
RgX_rescale 3721245
Rg_RgX_sub 4249509
RgX_recip_i 4382342
RgX_translate_basecase 4883731
RgX_translate_i 4883893
RgX_translate 5125558
RgX_translate_fast 5125558
RgX_renormalize_lg 5287601
RgXn_mul_basecase 5680298
Rg_get_0 6033444
RgX_Rg_divexact 6155862
RgXn_red_shallow 6809008
RgX_neg 7572264
RgX_addspec_shallow 7667078
RgXn_mul2 8068137
RgX_addmulXn_shallow 8637877
RgXn_mul 9479928
gen_bkeval_powers 10686392
RgX_to_RgC 11523044
RgX_divrem 12308736
gen_RgXQ_eval_powers 12469869
RgX_rem 12563796
RgX_rem_fast 12563796
_gen_add 16545688
brent_kung_optpow 16689790
RgX_divrem_i 20276169
RgX_equal 21296311
RgX_Rg_div 26137948
RgX_mulspec_basecase 27692450
RgX_mul_i 31638202
RgX_mulspec 32904583
RgX_Rg_add 38287348
RgX_even_odd 42646695
RgX_sub 60949157
RgXspec_kill0 66777750
RgX_valrem 70973715
RgX_mul 88609633
RgX_mulspec_basecase_limb 93802909
RgX_mul_fast 100378743
RgX_add 124480720
Rg_get_1 134660995
RgX_shift_shallow 150966729
RgX_Rg_mul 167379620

Generated by: LCOV version 1.16