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 30702-bddb8d6928) Lines: 1624 1787 90.9 %
Date: 2026-02-23 02:23:56 Functions: 204 223 91.5 %
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_Rg_translate_FpX 0
RgX_sqrhigh_i 0
RgX_sqrhigh_i2 0
RgXn_div_FpXQX 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
RgX_Rg_translate_FpXQX 5
RgXn_sqrt 6
RgXn_sqrhigh 12
RgXQX_RgXQ_mul 30
RgX_rem_FpXQX 56
RgXn_inv_FpX 72
RgXn_div_FpX 83
rfrac_deflate 100
rfrac_deflate_max 100
rfrac_deflate_order 100
RgXQV_RgXQ_mul 102
RgXn_reverse 132
RgX_sqr_FpXQX 160
QXY_QXQ_evalx 252
RgXn_sqr2 252
RgXQM_mul 276
RgXX_to_RgM 276
RgXQ_trace 399
RgXnV_red_shallow 414
RgXn_powers 414
zero_FpXQX_mod 456
RgXV_maxdegree 486
RgX_RgXnV_eval 828
_zero 1052
RgX_homogenize_deg 1080
ZX_unscale_divpow 1194
RgXQV_red 1200
RgX_sqr_FpX 1200
QXQX_homogenous_evalpow 1416
_oneXn 1656
RgX_mul_FpXQX 1659
RgXY_swap 1758
RgXn_powu_i 1956
RgXV_rescale 2058
RgXQ_norm 2094
RgX_divs 2454
RgXQ_matrix_pow 2485
RgXV_RgV_eval 2526
QXV_QXQ_eval 2741
RgX_digits 2772
do_QXQ_eval 2993
RgXY_derivx 3288
RgX_muls 3378
_mulXn 3828
RgXn_eval 4773
RgXV_unscale 5536
QXQM_to_mod_shallow 5756
RgXQV_factorback 6101
RgM_to_RgXV_reverse 6173
QX_ZXQV_eval 6271
RgXQ_powers 7338
QXQ_powers 8061
ZXQ_powers 9896
_sqrXn 10035
RgX_pseudodivrem 10083
_RgX_divrem 10122
RgXn_sqr 10232
RgXQX_pseudodivrem 10291
QXQXV_to_mod 10626
ZX_unscale_div 11109
RgXQM_red 11302
RgX_sqr_QXQX 11476
QXQC_to_mod_shallow 12721
ZXQX_dvd 15129
RgX_homogenize 15504
QXQV_to_mod 19125
RgM_to_RgXX 20091
_gen_zero 20727
RgX_affine 25851
RgX_recip 26307
RgXY_swapspec 27932
RgXQX_RgXQ_translate 28657
QXQX_to_mod 31139
RgX_sqr_i 32195
RgX_sqrspec_basecase 32223
RgX_sqrspec 32251
RgX_normalize 34038
RgX_splitting 37362
RgX_rem_QXQX 42468
RgX_unscale 44407
RgXn_expint 45331
RgX_integXn 48253
RgX_recip_shallow 50902
RgX_Rg_add_shallow 55451
RgX_mul2n 55944
RgX_rem_FpX 57032
RgXQC_red 58424
_sqr 63072
_ZXQmul 66977
RgXV_to_RgM 67560
_pow 75688
zero_FpX_mod 76743
RgX_sqrspec_basecase_limb 82691
RgXQ_pow 87243
RgXQ_powu 102811
ZXQ_powu 105660
RgXQX_pseudorem 110885
RgX_pseudorem 110885
_ZXQsqr 111705
RgXQX_divrem 127667
QXQ_to_mod 141702
RgX_RgV_eval 142939
RgX_mul_QXQX 145358
Kronecker_to_mod 158190
RgV_to_RgX_reverse 160544
QXQX_to_mod_shallow 173615
RgX_addspec 189858
RgX_div_by_X_x 223548
_mul 238923
get_Rg_algebra 252881
RgM_to_RgXV 254828
RgX_rotate_shallow 271626
RgV_to_RgM 287605
RgX_homogenous_evalpow 335443
RgX_RgXQ_eval 355597
RgX_liftred 387128
RgXQX_red 432049
_gen_cmul 439544
RgXn_div 441637
RgX_addmulXn 446028
RgX_mul_FpX 505681
_add 529807
_gen_sqr 545092
RgXn_recip_shallow 545488
ZX_unscale 577003
_red 615734
RgXn_inv 692087
RgX_deriv 707314
RgX_valrem_inexact 715304
QXQ_to_mod_shallow 716802
gen_bkeval 748506
RgX_inflate 753865
RgXn_inv_fast 776810
RgXn_inv_i 776810
rem 858871
_one 867340
_cmul 885185
ZX_z_unscale 1002637
RgX_deflate 1011455
RgXn_div_fast 1043246
RgXn_div_i 1043246
RgX_Rg_sub 1048917
RgX_sqr 1108200
RgX_sqr_fast 1118432
Rg_to_RgC 1161802
RgX_shift 1167644
RgX_mulhigh_i2 1366413
RgX_mul_normalized 1431637
RgXY_degreex 1615757
ZX_unscale2n 1633960
_gen_mul 1694928
RgXn_div_gen 1819901
_gen_nored 1845866
_gen_one 1882226
RgV_to_RgX 1917620
RgX_recipspec_shallow 2149227
RgXn_mulhigh 2171435
RgX_mulhigh_i 2219700
RgX_blocks 2320689
RgX_mulXn 2384045
RgX_val 3145813
RgX_recip_i 3153396
RgX_rescale 3692583
Rg_RgX_sub 4215000
RgX_Rg_divexact 4425677
RgX_Rg_translate_basecase 4869676
RgX_Rg_translate_i 4869829
RgX_Rg_translate 5174842
RgX_Rg_translate_fast 5174842
RgXn_mul_basecase 5688682
Rg_get_0 5849239
RgX_neg 6201712
RgX_renormalize_lg 6640131
RgXn_red_shallow 6680630
RgX_addspec_shallow 7481596
RgXn_mul2 8004558
RgX_addmulXn_shallow 8034014
RgXn_mul 9282254
gen_bkeval_powers 10187594
gen_RgXQ_eval_powers 11712292
RgX_divrem 11801014
RgX_rem 12495569
RgX_rem_fast 12495569
RgX_to_RgC 12792597
brent_kung_optpow 16647976
_gen_add 16925931
RgX_divrem_i 19673284
RgX_equal 21212367
RgX_Rg_div 25629641
RgX_mulspec_basecase 28709374
RgX_mul_i 32660593
RgX_mulspec 33906709
RgX_Rg_add 35692269
RgX_even_odd 42284656
RgX_sub 61395429
RgX_valrem 67505529
RgXspec_kill0 68828335
RgX_mul 88063350
RgX_mulspec_basecase_limb 93309852
RgX_mul_fast 99565304
RgX_add 121730959
Rg_get_1 132157993
RgX_shift_shallow 147198306
RgX_Rg_mul 168857956

Generated by: LCOV version 1.16