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 30702-bddb8d6928) Lines: 3110 3230 96.3 %
Date: 2026-02-23 02:23:56 Functions: 316 323 97.8 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
A4S4_fa 35652
A4clean3 606
A5file 234
A5vec 132
C32D4pol 21678
C3pol_f 738
C3vec 162
C3vec_F 192
C4qfbsolve 23659
C4vec 1932
C5bnf 46
C5cleanB 364
C5prim 1552
C6fill 7458
MgenF 396
P2Nfa 210
P2fa 6805
Pell2prfa 6189
RgVV_nb 29454
RgXV_polred 9786
S4_get_disc 20442
S4data 56394
S4makeid 34650
S4makeidclass 30018
Sextract 240
X2m 1614
X2p 5400
Y2m 4212
ZV_is_1 39306
ZV_iseven 94404
ZX_red_disc 90
ZX_red_disc2 642
_nfsubfields 27162
_nfsubfields1 24402
arch0 108
arch1 54
arch1g 54
arch2 54
arch2g 54
arch3 48
archA462 78
archD40 150
archD41 150
archD42 156
archS4621 84
archS4623 84
aut2 36204
authI 152004
bigdisc 23388
bnfY 17313
bnf_get_disc 10482
bnrcfC9 180
ceildiv 4890
ceilsqrt 162
ceilsqrtdiv 6118
ceilsqrtn 210
ceilsqrtndiv 72
checkS4data 56394
checkU 961440
checkcondC3 305
checkcondCL 3511
checkcondDL 8946
checkcondell_i 5425
checkfield 366
checkfield_i 2412
cmp2 600
condrel 168
condrel_dummy 18
condrel_i 180
condrelresolvent 96
cored 1164
cubicimag 150
cubicreal 174
cubictypedec 9768
cyc_is_trivial 21678
cycfindaut 5052
cyclicgalois 2256
cyclicprimegen 1104
decp 108
divide 23334
divisorsabsdisc 630
divisorsdisc 332
divisorsdisc_i 962
divispowerall 18
divissquare 18
divissquareall 42
doA462 17358
doA4S4 546
doC32C4 42
doC32C4_i 2538
eltlist2 20544
extractS3cond 66
fa_is_fundamental_pm 2072
floorsqrt 162
floorsqrtdiv 30846
floorsqrtn 2844
floorsqrtndiv 1386
fund_pm 2994
gal_get_order 54
gceilsqrtdiv 24
gceilsqrtn 996
getarchD4 204
getpell 2442
getpol 816
gets2s3 78
gfloorsqrtdiv 32778
glco46M 546
group_add_elt 24
group_nTk 4587
grouptranslate 1980
gtoset_shallow 30937
ideallistsquare 5508
idlist 29454
is_fundamental_pm 260292
isok3 3108
isprM 2274
issolvable 94404
issquareclass 3576
lcmiu 96
lcmuu 1440
makeA4 42
makeA46 42
makeA462 42
makeA462vec 42
makeA46S46Pvec 78
makeA4S4 35952
makeA4S4resolvent 24
makeA4S4vec 78
makeA4_i 42
makeA5 12
makeA56 6
makeA56resolvent 6
makeA56vec 48
makeA56vec_i 54
makeA5_i 18
makeA5cond 6
makeA5condvec 30
makeA5resolvent 3618
makeA5vec 84
makeA5vec_i 114
makeC1 54
makeC1resolvent 18
makeC1vec 24
makeC2 114
makeC2resolvent 12
makeC2vec 138
makeC3 66
makeC32C4 48
makeC32C4_i 48
makeC32C4resolvent 24
makeC32C4vec 42
makeC32D4 42
makeC32D4resolvent 12
makeC32D4vec 36
makeC3C3 42
makeC3C3resolvent 18
makeC3C3vec 42
makeC3_f 276
makeC3_i 96
makeC3resolvent 12
makeC3vec 186
makeC4 552
makeC4resolvent 12
makeC4vec 114
makeC4vec_i 114
makeC5 42
makeC5vec 36
makeC6 90
makeC6resolvent 24
makeC6vec 78
makeC9 48
makeC9vec 42
makeCL 90
makeCL_f 81
makeCLall 0
makeCLresolvent 42
makeCLvec 204
makeD4 132
makeD4vec 72
makeD612 48
makeD612resolvent 12
makeD612vec 42
makeD9 54
makeD9resolvent 12
makeD9vec 42
makeDL 1224
makeDLresolvent 30
makeDLvec 1038
makeGid 20544
makeMgen 108
makeMgenresolvent 30
makeMgenvec 120
makeS32 42
makeS32common 66
makeS32resolvent 12
makeS32vec 36
makeS36 54
makeS36resolvent 18
makeS36vec 42
makeS3C3 42
makeS3C3vec 36
makeS3resolvent 12
makeS3vec 1128
makeS4 66
makeS462 42
makeS462vec 48
makeS46M 48
makeS46Mpols 546
makeS46Mvec 36
makeS46P 42
makeS46Ppols 294
makeS4_i 66
makeV4 42
makeV4pairs 15
makeV4pairssimple 5
makeV4resolvent 18
makeV4vec 36
makepol6 7284
makepol6abs 24
makepolC3 108
makepolC4 20251
makepolC5 1552
makepolS32 480
makevunits 20544
minlim 90
mullist2 96
mybnrclassfield 124527
mybnrclassfield_N 24
mybnrclassfield_X 158271
mynfsubfield 186
mynfsubfields 54
myshallowconcat1 49279
nfY 30
nfcoredisc 552666
nfcoredisc2 539316
nflist 6567
nflist_A462_worker 150
nflist_A46S46P_worker 756
nflist_A4S4_worker 19458
nflist_A4S4_worker_i 19470
nflist_C32C4_worker 972
nflist_C32D4_worker 23376
nflist_C3C3_worker 192
nflist_C3_worker 3570
nflist_C4vec_worker 1926
nflist_C5_worker 3390
nflist_C6_worker 744
nflist_C9_worker 66
nflist_CL_worker 9786
nflist_D4_worker 3174
nflist_D612_worker 672
nflist_D9_worker 1314
nflist_DL_worker 5514
nflist_Mgen_worker 2406
nflist_S32_worker 6402
nflist_S36_worker 12630
nflist_S3C3_worker 354
nflist_S3I_worker 882
nflist_S3R_worker 366
nflist_S462_worker 822
nflist_S46M_worker 216
nflist_V4_worker 4308
nflist_parapply 2490
nflistfile 234
nfmakenum 1710
nfmakesome 144
nfmakesomehard 12
nfmakevecnum 1632
nfresolvent 450
nfresolvent_i 450
nfresolvent_small 378
nonabelianfilter 1080
oddnorm 23502
ok_disc 786
ok_int 497838
ok_intu 1536
ok_s 618
okfield 888
okgal 2496
okgal1 2040
okgal2 18
parselectS36 30
pol2s 10830
polD4onecond 152004
polV4 201600
polsubC4_D 23659
polsubcycloC2 0
polsubcycloC2_i 0
polsubcycloC3 5
polsubcycloC3_i 5
polsubcycloC4 45
polsubcycloC4_i 51915
polsubcycloC5 5
polsubcycloC5_i 3430
polsubcycloC6 0
polsubcycloC6_i 0
polsubcycloV4_i 20
polsubcyclofast 110
polsubcyclofast_i 110
prMconj 396
quadcubpow 49398
r2 49998
sceildiv 1916964
sceilsqrtn 366
sfloordiv 1053126
stable_arch 3870
sturmseparate 2502
sum2sq 282
to_principal_unit 94404
uC3pol_f 355632
ufund_pm 4494
uis_fundamental_pm 602424
uis_fundamental_pm_i 609882
usum2sq 6734
veccond_to_A5 0
vecs 60
vecs14 12
vecsliceA5 12
vecsliceA5all 234
vecsliceA5cond 0
vecslicebyX 234
zvV_to_ZXV 180
zv_is_1 35538

Generated by: LCOV version 1.16