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 - nflist.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30640-c2c58e18c5) Lines: 3111 3230 96.3 %
Date: 2026-01-27 08:51:18 Functions: 316 323 97.8 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
A4S4_fa 41594
A4clean3 707
A5file 273
A5vec 154
C32D4pol 3616
C3pol_f 788
C3vec 147
C3vec_F 164
C4qfbsolve 27611
C4vec 2251
C5bnf 56
C5cleanB 427
C5prim 1819
C6fill 8515
MgenF 402
P2Nfa 294
P2fa 6482
Pell2prfa 5712
RgVV_nb 34363
RgXV_polred 4829
S4_get_disc 23849
S4data 65787
S4makeid 40425
S4makeidclass 35021
Sextract 214
X2m 1879
X2p 6177
Y2m 2262
ZV_is_1 45691
ZV_iseven 110113
ZX_red_disc 81
ZX_red_disc2 731
_nfsubfields 6024
_nfsubfields1 5081
arch0 103
arch1 40
arch1g 63
arch2 40
arch2g 63
arch3 33
archA462 91
archD40 97
archD41 97
archD42 98
archS4621 60
archS4623 60
aut2 6424
authI 30242
bigdisc 3898
bnfY 11674
bnf_get_disc 8899
bnrcfC9 36
ceildiv 2490
ceilsqrt 147
ceilsqrtdiv 7151
ceilsqrtn 191
ceilsqrtndiv 18
checkS4data 65787
checkU 1085784
checkcondC3 279
checkcondCL 4032
checkcondDL 8253
checkcondell_i 6084
checkfield 349
checkfield_i 2310
cmp2 700
condrel 142
condrel_dummy 21
condrel_i 180
condrelresolvent 88
cored 1136
cubicimag 165
cubicreal 183
cubictypedec 11396
cyc_is_trivial 3616
cycfindaut 1358
cyclicgalois 1456
cyclicprimegen 1222
decp 78
divide 27096
divisorsabsdisc 717
divisorsdisc 290
divisorsdisc_i 1007
divispowerall 15
divissquare 21
divissquareall 49
doA462 20251
doA4S4 637
doC32C4 49
doC32C4_i 2961
eltlist2 23968
extractS3cond 77
fa_is_fundamental_pm 2420
floorsqrt 147
floorsqrtdiv 34512
floorsqrtn 2778
floorsqrtndiv 237
fund_pm 3475
gal_get_order 51
gceilsqrtdiv 28
gceilsqrtn 1120
getarchD4 130
getpell 2381
getpol 886
gets2s3 91
gfloorsqrtdiv 36762
glco46M 637
group_add_elt 28
group_nTk 1431
grouptranslate 1716
gtoset_shallow 34889
ideallistsquare 1890
idlist 34363
is_fundamental_pm 296978
isok3 3623
isprM 2653
issolvable 110134
issquareclass 4172
lcmiu 16
lcmuu 240
makeA4 49
makeA46 49
makeA462 49
makeA462vec 49
makeA46S46Pvec 91
makeA4S4 41944
makeA4S4resolvent 28
makeA4S4vec 91
makeA4_i 49
makeA5 14
makeA56 7
makeA56resolvent 7
makeA56vec 56
makeA56vec_i 63
makeA5_i 21
makeA5cond 7
makeA5condvec 35
makeA5resolvent 4221
makeA5vec 98
makeA5vec_i 133
makeC1 63
makeC1resolvent 21
makeC1vec 28
makeC2 133
makeC2resolvent 14
makeC2vec 107
makeC3 47
makeC32C4 56
makeC32C4_i 56
makeC32C4resolvent 16
makeC32C4vec 49
makeC32D4 7
makeC32D4resolvent 2
makeC32D4vec 6
makeC3C3 7
makeC3C3resolvent 9
makeC3C3vec 7
makeC3_f 250
makeC3_i 76
makeC3resolvent 14
makeC3vec 157
makeC4 644
makeC4resolvent 14
makeC4vec 133
makeC4vec_i 133
makeC5 49
makeC5vec 42
makeC6 75
makeC6resolvent 28
makeC6vec 61
makeC9 14
makeC9vec 7
makeCL 21
makeCL_f 38
makeCLall 0
makeCLresolvent 25
makeCLvec 166
makeD4 76
makeD4vec 54
makeD612 56
makeD612resolvent 14
makeD612vec 49
makeD9 21
makeD9resolvent 2
makeD9vec 7
makeDL 1344
makeDLresolvent 23
makeDLvec 1133
makeGid 23968
makeMgen 66
makeMgenresolvent 35
makeMgenvec 80
makeS32 49
makeS32common 77
makeS32resolvent 14
makeS32vec 42
makeS36 63
makeS36resolvent 21
makeS36vec 49
makeS3C3 49
makeS3C3vec 42
makeS3resolvent 14
makeS3vec 1296
makeS4 77
makeS462 37
makeS462vec 30
makeS46M 56
makeS46Mpols 637
makeS46Mvec 42
makeS46P 49
makeS46Ppols 343
makeS4_i 77
makeV4 49
makeV4pairs 21
makeV4pairssimple 7
makeV4resolvent 21
makeV4vec 42
makepol6 8373
makepol6abs 28
makepolC3 78
makepolC4 23595
makepolC5 1820
makepolS32 560
makevunits 23968
minlim 105
mullist2 76
mybnrclassfield 41756
mybnrclassfield_N 28
mybnrclassfield_X 58571
mynfsubfield 181
mynfsubfields 51
myshallowconcat1 45043
nfY 35
nfcoredisc 644757
nfcoredisc2 629202
nflist 3147
nflist_A462_worker 175
nflist_A46S46P_worker 880
nflist_A4S4_worker 22698
nflist_A4S4_worker_i 22712
nflist_C32C4_worker 1131
nflist_C32D4_worker 3896
nflist_C3C3_worker 32
nflist_C3_worker 4007
nflist_C4vec_worker 2245
nflist_C5_worker 3945
nflist_C6_worker 795
nflist_C9_worker 11
nflist_CL_worker 4826
nflist_D4_worker 1093
nflist_D612_worker 784
nflist_D9_worker 219
nflist_DL_worker 4963
nflist_Mgen_worker 2339
nflist_S32_worker 7458
nflist_S36_worker 14717
nflist_S3C3_worker 413
nflist_S3I_worker 999
nflist_S3R_worker 407
nflist_S462_worker 432
nflist_S46M_worker 252
nflist_V4_worker 5024
nflist_parapply 2543
nflistfile 273
nfmakenum 1539
nfmakesome 168
nfmakesomehard 14
nfmakevecnum 1446
nfresolvent 429
nfresolvent_i 429
nfresolvent_small 393
nonabelianfilter 1194
oddnorm 27418
ok_disc 899
ok_int 565953
ok_intu 256
ok_s 103
okfield 844
okgal 2275
okgal1 805
okgal2 21
parselectS36 35
pol2s 11924
polD4onecond 30242
polV4 224515
polsubC4_D 27605
polsubcycloC2 0
polsubcycloC2_i 0
polsubcycloC3 7
polsubcycloC3_i 7
polsubcycloC4 63
polsubcycloC4_i 60037
polsubcycloC5 7
polsubcycloC5_i 3994
polsubcycloC6 0
polsubcycloC6_i 0
polsubcycloV4_i 28
polsubcyclofast 154
polsubcyclofast_i 154
prMconj 57
quadcubpow 57625
r2 58331
sceildiv 2139002
sceilsqrtn 407
sfloordiv 1179779
stable_arch 4515
sturmseparate 2605
sum2sq 329
to_principal_unit 110137
uC3pol_f 414136
ufund_pm 5241
uis_fundamental_pm 670397
uis_fundamental_pm_i 680132
usum2sq 7857
veccond_to_A5 0
vecs 22
vecs14 14
vecsliceA5 14
vecsliceA5all 273
vecsliceA5cond 0
vecslicebyX 273
zvV_to_ZXV 150
zv_is_1 41461

Generated by: LCOV version 1.16