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 - buch2.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30347-cb65b7994e) Lines: 2197 2397 91.7 %
Date: 2025-06-27 09:22:08 Functions: 155 166 93.4 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Buchall 62600
Buchall_deg1 1204
Buchall_param 65219
FB_aut_perm 66257
FBgen 66255
Fincke_Pohst_bound 265721
Fincke_Pohst_ideal 265726
FlxqX_chinese_unit 1379
GRHchk 496208
GRHok 1532668
RgC_expbitprec 1234924
RgM_expbitprec 48790
RgV_is1 105
SPLIT 1406542
SPLIT_i 1250411
SUnits_archclean 77
Ur_ZC_mul 1390139
Vbase_to_FB 3349
ZM_remove_unused 164
ZV_divrem 1390140
ZV_mul 7283
_nfnewprec 57721
act_arch 2055029
add 2247849
addRe_modIm 6896358
add_cyclotomic_units 64079
add_principal_part 32152
add_rel 2422427
add_rel_i 2905903
add_to_fact 2841500
already_known 2901765
assign_subFB 67027
automorphism_matrices 64071
automorphism_perms 64007
bad_check 96221
bad_subFB 307582
ballvol 66255
be_honest 7
bnf_build_cheapfu 285479
bnf_build_cycgen 26726
bnf_build_matalpha 20
bnf_build_units 50730
bnf_compactfu 37415
bnf_compactfu_mat 70
bnf_get_B 2780294
bnf_get_C 2814834
bnf_get_GD 276750
bnf_get_Ur 1390139
bnf_get_W 1395111
bnf_get_ga 271794
bnf_get_vbase 1390218
bnf_has_fu 285758
bnfinit0 2618
bnfisprincipal0 1838847
bnfnewprec 7
bnfnewprec_shallow 97
bnftestprimes 63
bnrnewprec 7
bnrnewprec_shallow 0
buchall_end 65210
cache_prime_dec 920982
can_factor 18121439
chinese_unit 94
chinese_unit_slice 274
chinese_unit_worker 274
class_group_gen 64007
clean_cols 93042
cleanarch 3064767
cleanarchunit 133867
compute_R 96284
compute_invres 64007
compute_multiple_of_R 121743
compute_multiple_of_R_pivot 577305
dbg_newrel 0
delete_FB 66257
delete_cache 64080
diagact_arch 64105
divide_p 5458638
divide_p_elt 2326
divide_p_id 185342
divide_p_quo 5270974
dump_gen 1225896
err_units 0
expand 0
expandext 32172
expbitprec 2838082
extract_full_lattice 64013
fact_ok 1226443
fact_update 1978654
factorgen 16711334
fixarch 1304765
free_GRHcheck 134657
genback 28770
get_archclean 40
get_clg2 64105
get_embs 122425
get_fs 7507522
get_log_embed 723847
get_norm_fact 1229312
get_norm_fact_primes 69
get_pr_lists 1390198
get_random_ideal 55669
get_regulator 48887
get_y 69
getfu 64006
i2print 0
idealHNF_mulred 3508
idealmulpowprime2 4488
init_GRHcheck 134656
init_famat 65756
init_red_mod_units 1107781
init_rel 64078
inv_fact 0
isprincipal 174513
isprincipalall 1406502
isprincipalarch 1234928
isprincipalfact 32173
isprincipalfact_or_fail 0
isprincipalforce 0
isprincipalgen 0
isprincipalgenforce 0
log2Mbound 94
log2fubound 94
makecycgen 4956
makematal 20
makeunits 24907
matbotid 62484
matbotidembs 55510
matenlarge 55510
modIm 204587
myprecdbl 73
needed_bitprec 3831
nf_cxlog_normalize 194924
nfcyclotomicunits 64079
nfsign_from_logarch 162325
nfsign_fu 241154
nfsign_tu 239976
nfsign_units 35
not_given 389
nthideal 64008
pr_index 3349
pr_orbit_fill 11865
pre_allocate 122465
prec_arch 1408313
primeneeded 64008
reallocate 64078
recover_partFB 1390198
red_mod_units 1107781
rel_embed 1014787
rnd_rel 55669
set_fact 2249948
set_rel_alpha 946275
signunits 7
small_norm 66724
split_ideal 1390135
step 28024188
store 9190627
subFB_change 26426
subFBgen 66256
tailres 1129376
tailresback 2258741
trim_list 122465
triv_gen 464583
try_elt 1631
vec_chinese_units 94
wr_rel 0

Generated by: LCOV version 1.16