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 - rootpol.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30536-6f6fcf9613) Lines: 1467 1530 95.9 %
Date: 2025-11-02 09:21:49 Functions: 116 119 97.5 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
_intervalcmp 0
_mp_sub 0
scalepol2n 0
ZX_Uspensky_equal_yes 14
polgraeffe 14
ZX_Uspensky_no 21
ZX_Uspensky_equal 28
rootsdeg0 42
FFT 56
FFTinv 56
polmod_to_embed 84
FFT_i 98
sol_ok 3378
ZX_graeffe 5390
ZX_sturm 6395
fft2 7462
roots 8018
ZX_deg1root 15275
_sqrtnr 22709
polrootsbound_i 27293
polrootsbound 27300
RgX_normalize1 35901
ZX_realroots_irred 48654
realroots 50627
ZX_sturm_irred 116777
ZX_sturm_i 123172
polsolve 166720
split_pols 166726
splitcauchy 166728
solve_exact_pol 231145
cleanroots 231763
isexactpol 239753
roots_com 239753
roots_aux 239781
checkvalidpol 267060
QX_complex_roots 296419
_gen_zero 326151
fix_roots1 398464
conformal_mapping 467926
split_1 467926
split_0_1 468285
split_0_2 468286
logradius 493973
split_2 493976
optimize_split 493978
split_fromU 493978
update_radius 493978
parameters 493979
split_0 494341
dft 502364
refine_F 502366
all_roots 536124
clean_roots 536168
fix_roots 537222
a_posteriori_errors 537226
mygprec_special 537232
logmodulus 606753
logpre_modulus 606753
abs_update_r 778662
ind_maxlog2 902675
isexactscalar 931714
isreal 961903
initdft 996341
dual_modulus 1012448
usp 1126055
ZX_sturmpart 1128224
check_ab 1178850
tocomplex 1213954
isvalidcoeff 1230235
ZX_Uspensky 1313868
conformal_basecase 1403888
conformal_pol 1404007
fujiwara_bound_real 1406898
split_complete 1525907
homothetie 1610085
append_clone 1614182
logmin_modulus 1614795
root_error 1912592
mygprecrc_special 2179184
ZX_rescale2prim 2233771
cmp_complex_appr 2238537
fujiwara_bound 2271769
checkbound 2354828
refine_H 2460486
scalepol 4289397
mygprec_absolute 4339996
_mp_mul 4374504
logmax_modulus 4450911
splitpoleval 5235072
bkeval_single_power 5235425
newton_polygon 5507190
X2XP1 5990236
_mp_sqr 6298328
dblexp 6549042
quicktofp 6979051
RgX_gtofp_bit 7031551
abs_update 8005095
mydbllogr 9546594
homothetie2n 9957601
_gen_nored 11201211
eval_rel_pol 13138113
fft 14159155
_gen_one 14472181
ZX_to_ZiX 16457193
pol_to_gaussint 17589032
_mp_add 24660884
_mp_cmul 34763067
myshiftrc 35506682
homothetie_gauss 36498409
findpower 40957380
lower_bound 40957428
graeffe 49505523
mydbllog2r 56174346
mygprec 63757547
ZiX_sqr 99027020
myshiftic 135801413
mygprecrc 215187810
mydbllog2i 226443498
dbllog2 302103588

Generated by: LCOV version 1.16