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 30482-15ec328664) Lines: 1467 1530 95.9 %
Date: 2025-09-07 09:24:11 Functions: 116 119 97.5 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
FFT 56
FFT_i 98
FFTinv 56
QX_complex_roots 296374
RgX_gtofp_bit 7031306
RgX_normalize1 35887
X2XP1 5990048
ZX_Uspensky 1313816
ZX_Uspensky_equal 28
ZX_Uspensky_equal_yes 14
ZX_Uspensky_no 21
ZX_deg1root 15274
ZX_graeffe 5383
ZX_realroots_irred 48637
ZX_rescale2prim 2233641
ZX_sturm 6395
ZX_sturm_i 123165
ZX_sturm_irred 116770
ZX_sturmpart 1128184
ZX_to_ZiX 16455495
ZiX_sqr 99044199
_gen_nored 11196739
_gen_one 14469553
_gen_zero 326148
_intervalcmp 0
_mp_add 24658168
_mp_cmul 34756894
_mp_mul 4373676
_mp_sqr 6297285
_mp_sub 0
_sqrtnr 22709
a_posteriori_errors 537117
abs_update 8005010
abs_update_r 778664
all_roots 536067
append_clone 1613941
bkeval_single_power 5234785
check_ab 1178811
checkbound 2354750
checkvalidpol 267046
clean_roots 536114
cleanroots 231749
cmp_complex_appr 2238432
conformal_basecase 1403818
conformal_mapping 467899
conformal_pol 1403935
dblexp 6548827
dbllog2 302680429
dft 502342
dual_modulus 1012414
eval_rel_pol 13137917
fft 14159448
fft2 7462
findpower 40958125
fix_roots 537115
fix_roots1 398400
fujiwara_bound 2271592
fujiwara_bound_real 1406823
graeffe 49507761
homothetie 1610033
homothetie2n 9957475
homothetie_gauss 36501769
ind_maxlog2 902613
initdft 996294
isexactpol 239739
isexactscalar 931700
isreal 961854
isvalidcoeff 1230095
logmax_modulus 4450735
logmin_modulus 1614751
logmodulus 606735
logpre_modulus 606735
logradius 493948
lower_bound 40957385
mydbllog2i 226440563
mydbllog2r 56754053
mydbllogr 9546160
mygprec 63754377
mygprec_absolute 4339178
mygprec_special 537119
mygprecrc 215180396
mygprecrc_special 2178432
myshiftic 135825274
myshiftrc 35506679
newton_polygon 5507064
optimize_split 493953
parameters 493951
pol_to_gaussint 17588699
polgraeffe 14
polmod_to_embed 84
polrootsbound 27300
polrootsbound_i 27293
polsolve 166675
quicktofp 6978625
realroots 50627
refine_F 502335
refine_H 2460295
root_error 1912273
roots 8018
roots_aux 239767
roots_com 239739
rootsdeg0 42
scalepol 4289164
scalepol2n 0
sol_ok 3378
solve_exact_pol 231145
split_0 494275
split_0_1 468225
split_0_2 468225
split_1 467902
split_2 493951
split_complete 1525657
split_fromU 493953
split_pols 166675
splitcauchy 166682
splitpoleval 5234055
tocomplex 1213851
update_radius 493951
usp 1125955

Generated by: LCOV version 1.16