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 - headers - pariinl.h (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30702-bddb8d6928) Lines: 1420 1535 92.5 %
Date: 2026-02-23 02:23:56 Functions: 649 707 91.8 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
F2m_clear 0
F2m_coeff 6669077
F2m_copy 171186
F2m_flip 1326630
F2m_set 684
F2v_clear 10496094
F2v_coeff 484375981
F2v_copy 3321
F2v_ei 36
F2v_flip 1326630
F2v_set 71611365
F2v_to_F2x 31540
F2xX_shift 0
F2x_clear 10496094
F2x_coeff 486369463
F2x_copy 51225974
F2x_div 1303960
F2x_equal 3919682
F2x_equal1 2460684
F2x_flip 1326630
F2x_renormalize 95983744
F2x_set 88375950
F2xqX_div 28421
F3m_coeff 2769458
F3m_copy 0
F3m_set 0
Flm_copy 5402208
Flm_row 7252393
Flv_copy 2180330
Flx_constant 285355
Flx_copy 142744985
Flx_div 1687822
Flx_div_pre 18308015
Flx_equal1 6962060
Flx_lead 833186
Flx_mulu 930938
FlxqX_div 0
FlxqX_div_pre 140118
Flxq_add 0
Flxq_sub 0
FpV_FpC_mul 0
FpXQX_div 3883
FpXQX_renormalize 3987829
FpXQ_add 0
FpXQ_sub 0
FpXX_renormalize 727907
FpXY_Fq_evaly 17646
FpX_div 4721224
FpX_renormalize 124916191
Fp_add 140035649
Fp_addmul 5965486
Fp_center 64091375
Fp_center_i 14907496
Fp_div 12886720
Fp_divu 12942821
Fp_double 9236882
Fp_halve 208593
Fp_inv 19728429
Fp_invsafe 936638
Fp_mul 161350383
Fp_muls 15240
Fp_mulu 52963346
Fp_neg 26557498
Fp_red 67839622
Fp_sqr 24635450
Fp_sub 152069025
FqXQ_add 0
FqXQ_div 0
FqXQ_inv 0
FqXQ_invsafe 0
FqXQ_mul 19521
FqXQ_pow 0
FqXQ_sqr 0
FqXQ_sub 0
FqX_Fp_mul 473857
FqX_Fq_mul 362866
FqX_add 109452
FqX_ddf 6
FqX_degfact 38273
FqX_deriv 34323
FqX_div 32731
FqX_div_by_X_x 57886
FqX_divrem 0
FqX_extgcd 370471
FqX_factor 120518
FqX_factor_squarefree 6
FqX_gcd 6792
FqX_get_red 5222
FqX_halfgcd 0
FqX_halve 16638
FqX_integ 0
FqX_is_squarefree 586116
FqX_mul 311918
FqX_mulu 18816
FqX_neg 21397
FqX_normalize 3396
FqX_powu 1110
FqX_red 21711
FqX_rem 32366
FqX_roots 6231
FqX_sqr 61590
FqX_sub 58806
FqX_to_mod 150
FqXn_exp 0
FqXn_expint 5651
FqXn_inv 6108
FqXn_mul 225774
FqXn_sqr 0
Fq_red 2673676
Fq_to_FpXQ 64150
GENbinbase 758342627
QV_isscalar 45863693
Q_abs 6745241
Q_abs_shallow 98286
Qtoss 30310
R_abs 0
R_abs_shallow 10546
RgC_fpnorml2 521944
RgC_gtofp 27850381
RgC_gtomp 492
RgM_dimensions 8289474
RgM_fpnorml2 19171
RgM_gtofp 6744387
RgM_gtomp 18
RgM_minor 888
RgM_shallowcopy 18733771
RgV_gtofp 41
RgV_is_QV 120170
RgV_is_ZV 27304234
RgV_isin 94415
RgV_isin_i 94415
RgV_isscalar 1016765
RgXQX_div 1632
RgXQX_rem 103325
RgX_coeff 2288440
RgX_copy 87899368
RgX_div 6070535
RgX_equal_var 23005453
RgX_fpnorml2 52456
RgX_gtofp 6058447
RgX_is_QX 340488
RgX_is_ZX 18976387
RgX_is_monomial 1126985
RgX_is_rational 58128
RgX_isscalar 0
RgX_renormalize 299898
RgX_shift_inplace 415795
RgX_shift_inplace_init 415795
RgX_to_RgV 120
Rg_col_ei 1223949
Rg_to_Fq 648
ZC_hnfrem 8930067
ZM_ZV_mod 507471
ZM_hnfrem 304613
ZM_lll 5923259
ZV_ZV_mod 6910811
ZV_dvd 20119
ZV_isscalar 19831121
ZV_to_zv 2350283
ZXQ_mul 1761117
ZXQ_sqr 758082
ZX_equal1 9418
ZX_is_monic 6248993
ZX_renormalize 130398609
Z_ispower 84
Z_issquare 333725
abgrp_get_cyc 10341438
abgrp_get_gen 1490316
abgrp_get_no 294080
absfrac 38818792
absfrac_shallow 22634
addmuliu 467062
addmuliu_inplace 47470630
affc_fixlg 209244
affgr 666165
bid_get_MOD 1825191
bid_get_U 3108139
bid_get_arch 35289
bid_get_archp 2030418
bid_get_cyc 4851034
bid_get_fact 2117419
bid_get_fact2 1863168
bid_get_gen 54894
bid_get_gen_nocheck 0
bid_get_grp 4906426
bid_get_ideal 61642
bid_get_mod 1282044
bid_get_no 0
bid_get_sarch 41016
bid_get_sprk 1825821
bin_copy 391397714
bit_accuracy 2540630344
bit_accuracy_mul 2723553
bit_prec 119515338
bnf_get_clgp 4539796
bnf_get_cyc 3114466
bnf_get_fu 22094
bnf_get_fu_nocheck 247268
bnf_get_gen 1418065
bnf_get_logfu 2419720
bnf_get_nf 8341690
bnf_get_no 7129
bnf_get_reg 478
bnf_get_sunits 1150710
bnf_get_tuN 241836
bnf_get_tuU 259660
bnr_get_bid 1730091
bnr_get_bnf 3135955
bnr_get_clgp 2400122
bnr_get_cyc 2137347
bnr_get_gen 6726
bnr_get_gen_nocheck 50
bnr_get_mod 65175
bnr_get_nf 1196206
bnr_get_no 236910
both_odd 105205499
cbrtr 0
cbrtr_abs 0
cgetalloc 8188
cgetc 869859
cgiv 84642801
checkell_i 4792547
closure_arity 246813422
closure_codestr 207809192
closure_get_code 24
closure_get_data 207798210
closure_get_dbg 11318
closure_get_frame 11754422
closure_get_oper 207809192
closure_get_text 29965
closure_is_variadic 35543572
col_ei 5035784
coltrunc_init 634506
const_col 8300765
const_vec 28812027
const_vecsmall 16694583
constant_coeff 1202295
cxcompotor 15487730
cxnorm 78033830
cxtofp 7721492
cxtoreal 280383
cyc_get_expo 2337052
cyclic_perm 85638
dbllog2r 77639953
degpol 4563661510
div_content 49458
divsBIL 6665936168
ellQp_get_p 972
ellQp_get_prec 264
ellQp_get_zero 1254
ellR_get_prec 199500
ellR_get_sign 318462
ell_get_a1 7710844
ell_get_a2 6090617
ell_get_a3 7553959
ell_get_a4 7316795
ell_get_a6 8888999
ell_get_b2 6317483
ell_get_b4 2185902
ell_get_b6 3311244
ell_get_b8 2826355
ell_get_c4 9443502
ell_get_c6 11550422
ell_get_disc 14413155
ell_get_j 1822598
ell_get_type 10712355
ell_is_inf 40709128
ellff_get_a4a6 684525
ellff_get_field 1743876
ellinf 1035744
ellnf_get_bnf 102
ellnf_get_nf 1737690
equali1 949083775
equalim1 116343437
err_get_compo 231
err_get_num 52320
gaddgs 105449163
gal_get_den 23759
gal_get_e 78
gal_get_gen 13188
gal_get_group 68807
gal_get_invvdm 23765
gal_get_mod 20158
gal_get_orders 5696
gal_get_p 4935
gal_get_pol 30872
gal_get_roots 27795
gc_GEN 193190334
gc_INT 3467103796
gc_INT_affii 6494728
gc_all 83743676
gc_leaf 938834966
gc_slice 1839531
gc_upto 1634002955
gchar_copy_precs 1051
gchar_get_DLdata 163434
gchar_get_S 31722
gchar_get_U 0
gchar_get_Ui 9414
gchar_get_basis 28129
gchar_get_bnf 176034
gchar_get_cyc 13867
gchar_get_evalprec 3438
gchar_get_hnf 0
gchar_get_loccyc 43314
gchar_get_m0 2856
gchar_get_mod 7050
gchar_get_modP 3510
gchar_get_nalg 1753
gchar_get_nc 31950
gchar_get_nf 209112
gchar_get_nfprec 11544
gchar_get_nfree 276
gchar_get_nm 1602
gchar_get_ns 31722
gchar_get_ntors 276
gchar_get_prec 16110
gchar_get_r1 14952
gchar_get_r2 534
gchar_get_sfu 1505
gchar_get_u0 3660
gchar_get_zm 241651
gchar_set_HUUi 540
gchar_set_basis 1351
gchar_set_cyc 1351
gchar_set_evalprec 1554
gchar_set_m0 811
gchar_set_nalg 540
gchar_set_nf 1823
gchar_set_nfprec 2556
gchar_set_nfree 540
gchar_set_ntors 540
gchar_set_prec 1051
gchar_set_u0 1818
gcmpgs 644293
gdivsg 495196
gen_I 1084886
gener_Fq_local 25643
gequalgs 25008
get_F2x_degree 1646654
get_F2x_mod 2131016
get_F2x_var 2160103
get_F2xqX_degree 172132
get_F2xqX_mod 289
get_F2xqX_var 321719
get_Flx_degree 70404613
get_Flx_mod 21667237
get_Flx_var 57575545
get_FlxqX_degree 271902
get_FlxqX_mod 6257
get_FlxqX_var 226354
get_FpXQX_degree 3100
get_FpXQX_mod 125643
get_FpXQX_var 44382
get_FpX_degree 6059121
get_FpX_mod 2900095
get_FpX_var 5925991
gisdouble 2541251
gmax_shallow 9666189
gmaxsg 0
gmin_shallow 721125
gminsg 0
gmulgs 18422718
gmulgu 242229834
gsubgs 1452946
gtodouble 51066755
gtofp 209169354
gtomp 19224
gtos 64998729
gtou 80523
guncloneNULL 41138554
guncloneNULL_deep 40975
gval 5279
hash_str 2153759
hash_str_len 26401268
icopy_avma 6438535955
idealchineseinit 4652
idealred 116279
identity_ZV 6953
identity_perm 2669476
identity_zv 2690279
inf_get_sign 1175589
inv_content 0
is_bigint 459571836
is_const_t 4143164610
is_extscalar_t 5794
is_intreal_t 8212451
is_matvec_t 515583786
is_noncalc_t 68515739
is_pm1 1868526921
is_qfb_t 0
is_rational_t 4267332
is_real_t 52689687
is_recursive_t 7666291268
is_scalar_t 317009614
is_universal_constant 251467960
is_vec_t 37627299
isint1 15016022
isintm1 4870435
isintzero 2415243377
ismpzero 8212380
isonstack 6803784907
killblock 1021032
leading_coeff 144879061
leafcopy_avma 465037706
lg_increase 216320572
lgcols 292575236
lgpol 2226592792
lincombii 31741285
locs_get_Lgenfil 1104
locs_get_Lsprk 166230
locs_get_cyc 44701
locs_get_famod 1104
locs_get_m_infty 179550
locs_get_mod 7050
logint 625960
matpascal 3396
matslice 13865892
mkcol 8967487
mkcol2 132497870
mkcol2s 3785352
mkcol3 69873
mkcol3s 270
mkcol4 88686
mkcol4s 0
mkcol5 74
mkcol6 199261
mkcolcopy 28548
mkcols 34638
mkcomplex 77390089
mkerr 0
mkfrac 35091626
mkfraccopy 4122523
mkfracss 1036434
mkintmod 6893415
mkintmodu 1568
mkmat 4014043
mkmat2 28268990
mkmat22 42576995
mkmat22s 177924
mkmat3 14238
mkmat4 72
mkmat5 0
mkmatcopy 104712
mkmoo 92498
mkoo 1072709
mkpadic 1717
mkpolmod 2646078
mkqfb 21181114
mkquad 49382
mkrfrac 598629
mkrfraccopy 12
mkvec 58224359
mkvec2 144129241
mkvec2copy 93469
mkvec2s 187736
mkvec3 104492544
mkvec3s 449514
mkvec4 8556758
mkvec4s 18
mkvec5 11709027
mkvec5s 0
mkvec6 0
mkvec6s 230
mkveccopy 105021
mkvecs 135
mkvecsmall 110001020
mkvecsmall2 192400521
mkvecsmall3 83531138
mkvecsmall4 14681907
mkvecsmall5 1378350
modpr_get_T 11837095
modpr_get_p 1616032
modpr_get_pr 26648725
mul_content 2243957
mul_denom 9013678
mulsubii 3241577
nbits2extraprec 1226490696
nbits2ndec 175
nbits2nlong 10009426
nbits2prec 154733251
nbrows 131032316
nchar2nlong 103432615
ndec2nbits 7055
ndec2nlong 34636
ndec2prec 27581
nfV_to_scalar_or_alg 22472
nf_get_G 259409
nf_get_M 18238186
nf_get_Tr 18812
nf_get_degree 60304253
nf_get_diff 3591
nf_get_disc 395890
nf_get_index 3151321
nf_get_invzk 8289217
nf_get_pol 82973408
nf_get_r1 19644958
nf_get_r2 3359
nf_get_ramified_primes 55168
nf_get_roots 1392187
nf_get_roundG 1472823
nf_get_sign 444883
nf_get_varn 1286597
nf_get_zk 3752
nf_get_zkden 4574177
nf_get_zkprimpart 4535005
normalize_frac 14528046
odd 1612625086
pari_calloc 38598
pari_err_BUG 12
pari_err_COMPONENT 180
pari_err_CONSTPOL 16
pari_err_COPRIME 74
pari_err_DIM 584
pari_err_DOMAIN 2333
pari_err_FILE 0
pari_err_FILEDESC 0
pari_err_FLAG 77
pari_err_IMPL 444
pari_err_INV 17112
pari_err_IRREDPOL 51
pari_err_MAXPRIME 0
pari_err_MODULUS 987
pari_err_OP 323
pari_err_OVERFLOW 122
pari_err_PACKAGE 0
pari_err_PREC 200
pari_err_PRIME 78
pari_err_PRIORITY 198
pari_err_ROOTS0 48
pari_err_SQRTN 6065
pari_err_TYPE 12850
pari_err_TYPE2 2958
pari_err_VAR 287
pari_free 399785010
pari_malloc 588944276
pari_realloc 1488
pari_realloc_ip 83313
pari_stack_alloc 790291746
pari_stack_base 790324708
pari_stack_delete 28373
pari_stack_init 32857
pari_stack_new 714273676
pari_stack_pushp 4589
perm_conj 358417
perm_inv 2319536
perm_mul 66752827
perm_sqr 621
pol0_F2x 11006679
pol0_Flx 86119540
pol1_F2x 3320906
pol1_Flx 46560675
pol_0 70447703
pol_1 3205139
pol_x 3210958
pol_xn 1912296
pol_xnall 218
polx_F2x 904873
polx_Flx 29991119
polx_zx 0
polxn_Flx 312
powIs 1244
powii 31170827
pr_get_e 13744777
pr_get_f 22354209
pr_get_gen 10242083
pr_get_p 78657821
pr_get_tau 41964112
pr_is_inert 14556451
pr_norm 929588
prec2lg 3726373769
prec2nbits 86032718
prec2nbits_mul 492275
prec2ndec 8318
precdbl 403718
qfb_disc 13263018
qfb_disc3 4155687
qfb_is_qfi 39488032
quad_disc 878
quadnorm 50036
random_Fq 0
remsBIL 6590685742
rnf_get_absdegree 1193766
rnf_get_alpha 1224
rnf_get_degree 2148198
rnf_get_disc 297
rnf_get_idealdisc 1188
rnf_get_index 76
rnf_get_invzk 875
rnf_get_k 1050
rnf_get_map 116010
rnf_get_nf 672819
rnf_get_nfdegree 18304
rnf_get_nfpol 218047
rnf_get_nfvarn 4172
rnf_get_nfzk 6050
rnf_get_pol 2437436
rnf_get_polabs 280352
rnf_get_ramified_primes 2420
rnf_get_varn 412
rnf_get_zk 3834
row 619700
row_i 729
rowcopy 175704
rowpermute 12184213
rowslice 65348393
rowslicepermute 148298
rowsplice 234
ser_isexactzero 8667720
shallowcopy 23097203
sqrfrac 3500152
sqrti 5468669
sqrtnr 2394318
sqrtr 68760901
sstoQ 936600
sturm 280
submulii 25597074
submuliu 5600
submuliu_inplace 47839902
truecoef 0
trunc_safe 0
ulogint 1368069
upr_norm 295985
uutoQ 1370734
vec_append 2960996
vec_ei 1420772
vec_lengthen 14199
vec_prepend 268160
vec_setconst 0
vec_shorten 9891
vec_to_vecsmall 3056437
veclast 8026575
vecmodii 0
vecmoduu 39492
vecpermute 17101064
vecreverse 596110
vecreverse_inplace 2184
vecslice 546931644
vecslicepermute 2190792
vecsmall_append 3480699
vecsmall_coincidence 0
vecsmall_concat 1205833
vecsmall_copy 3760384
vecsmall_ei 464212
vecsmall_indexmax 18
vecsmall_indexmin 18
vecsmall_isin 72
vecsmall_lengthen 442
vecsmall_lexcmp 5587624
vecsmall_max 1000238
vecsmall_min 2016
vecsmall_pack 72
vecsmall_prefixcmp 77219344
vecsmall_prepend 160159
vecsmall_reverse 2581
vecsmall_shorten 60021
vecsmall_to_col 6665143
vecsmall_to_vec 434890
vecsmall_to_vec_inplace 2587
vecsmallpermute 64896693
vecsmalltrunc_append 83705115
vecsmalltrunc_init 138032579
vecsplice 329415
vectrunc_append 12345899
vectrunc_append_batch 8286
vectrunc_init 8975479
zc_to_ZC 6653249
zero_F2m 0
zero_F2m_copy 720362
zero_F2v 3077779
zero_F2x 1136
zero_Flm 2324702
zero_Flm_copy 192668
zero_Flv 47467494
zero_Flx 1215247
zero_zm 0
zero_zv 29691642
zero_zx 0
zerocol 101368133
zeromat 92012
zeromatcopy 11712149
zeropadic 732027
zeropadic_shallow 14516
zeropol 36014483
zeroser 118723
zerovec 24985171
zerovec_block 24936
zm_copy 0
zm_row 0
zm_to_zxV 0
zm_transpose 190
znstar_get_N 33125439
znstar_get_U 148222
znstar_get_Ui 40087
znstar_get_conreycyc 6835734
znstar_get_conreygen 2820038
znstar_get_cyc 221928
znstar_get_faN 6277461
znstar_get_gen 13842
znstar_get_no 11
znstar_get_pe 2458793
zv_copy 1861406
zv_to_ZV 427533
zv_to_zx 89268
zx_renormalize 10035
zx_shift 0
zx_to_zv 0

Generated by: LCOV version 1.16