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 - base4.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30640-c2c58e18c5) Lines: 1696 1847 91.8 %
Date: 2026-01-27 08:51:18 Functions: 170 185 91.9 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl_invgen 4926971
Q_nffactor 18517
Q_to_famat 191415
RM_round_maxrank 81633
ZM_famat_limit 545386
ZV_cba 28
ZV_cba_extend 49
Z_cba 757267
Z_cba_rec 6827597
Z_dcba_rec 0
Z_ppgle 0
Z_ppio 986062
Z_ppo 18885808
Z_to_famat 365735
_idealaddtoone 488687
_idealmulred 28502
_idealsqrred 35359
_mul 11281
_sqr 35359
addmul_mat 59618
append 153958
chk_vdir 21
err_divexact 7
ext_inv 18043
ext_mul 59629
ext_pow 0
ext_sqr 33738
factorbackprime 46720
famatV_factorback 13814
famatV_zv_factorback 26995
famat_Z_gcd 0
famat_add 159708
famat_div 193688
famat_div_shallow 10311
famat_idealfactor 0
famat_inv 192110
famat_inv_shallow 26335
famat_makecoprime 2068898
famat_mul 426099
famat_mul_shallow 163530
famat_mulpow_shallow 83262
famat_mulpows_shallow 85387
famat_pow 60642
famat_pow_shallow 56947
famat_pows_shallow 84676
famat_reduce 277798
famat_remove_trivial 40782
famat_sqr 22776
famat_sub 19361
famat_to_Fp_coprime 665
famat_to_nf 0
famat_to_nf_moddivisor 18606
famatsmall_reduce 184670
get_random_a 111171
gpidealfactor 189
gpidealval 7119
hnf_QC_QC 7
hnf_Q_Q 21
hnf_Q_QC 77
hnf_Z_QC 70
hnf_Z_ZC 77
idealHNF_Z_factor 0
idealHNF_Z_factor_i 151569
idealHNF_factor 123959
idealHNF_factor_i 151569
idealHNF_inv 68963
idealHNF_inv_Z 195745
idealHNF_mul 433736
idealHNF_mul_two 699920
idealHNF_norm_pval 3780899
idealHNF_val 3896146
idealadd 82432
idealaddmultoone 35
idealaddtoone 98
idealaddtoone0 70
idealaddtoone_i 17633
idealaddtoone_raw 471053
idealappr 14
idealappr0 14
idealapprfact 0
idealapprfact_i 40664
idealcoprime 84
idealcoprimefact 25169
idealdiv 39252
idealdiv0 56
idealdivexact 5131
idealdivpowprime 13007
idealdown 2242
idealfactor 142173
idealfactor_limit 142600
idealfactor_partial 24696
idealhnf 665
idealhnf0 413
idealhnf_principal 1289946
idealhnf_shallow 1594560
idealhnf_two 577429
idealintersect 21
idealinv 111543
idealismaximal 77
idealismaximal_i 77
idealismaximal_int 42
idealismaximal_mat 21
idealispower 3774
idealmin 7
idealmul 490318
idealmul0 70
idealmul_aux 490319
idealmulelt 258597
idealmulpowprime 476932
idealmulred 17221
idealnorm 105520
idealnumden 246845
idealpow 776863
idealpow0 2499
idealpow_aux 776861
idealpowprime 865893
idealpowred 75734
idealpows 195071
idealprod 1034
idealprodprime 666
idealprodval 1887
idealpseudomin 133425
idealpseudomin_nonscalar 0
idealpseudominvec 1212431
idealpseudored 1265757
idealred0 133929
idealred_elt 8871
idealredmodpower 32566
idealredmodpower_i 65118
idealsqr 38785
idealsqr_aux 38785
idealsqrprime 234708
idealsqrtn_int 7492
idealtwoelt 79955
idealtwoelt0 2485
idealtwoelt2 42
idealtyp 14833743
idealval 9300248
in_ideal 28
isideal 91
lcmuu 1253333
make_integral 10920
mat_ideal_two_elt 228050
mat_ideal_two_elt2 21
matreduce 63
nfV_eltembed 84
nfV_idealhnf 84
nf_coprime_part 126
nf_get_Gtwist 133936
nf_get_Gtwist1 12667
nf_remove_denom_p 4137173
nf_to_Fp_coprime 87320
nfdivmodpr 0
nfkermodpr 0
nfmulmodpr 7
nfpowmodpr 0
nfsolvemodpr 0
nfweilheight 84
nfweilheight_i 84
not_in_ideal 14
ok_elt 209795
p_makecoprime 84823
prV_e_muls 14314
prV_lcm_capZ 67530
prV_primes 40253
pr_hnf 3056105
pr_inv 15504
pr_inv_p 36652
pr_uniformizer 50756
ramified_root 7485
ramified_root_simple 7
sunits_makecoprime 98
to_Fp_coprime 89777
to_famat 0
to_famat_shallow 2670579
trivial_merge 28
twistG 12709
u_ppo 53766399
vec_mulid 91
vecdiv 903
vecinv 826
vecmul 15845636
vecpow 0
vecsqr 185983
zk_pvalrem 4095761

Generated by: LCOV version 1.16