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 30622-caa25a75db) Lines: 1420 1535 92.5 %
Date: 2026-01-22 09:18:00 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 7888426
F2m_copy 179219
F2m_flip 1549598
F2m_set 798
F2v_clear 11655039
F2v_coeff 658662894
F2v_copy 4487
F2v_ei 42
F2v_flip 1549598
F2v_set 100801726
F2v_to_F2x 37392
F2xX_shift 0
F2x_clear 11655041
F2x_coeff 665182332
F2x_copy 60313211
F2x_div 1527652
F2x_equal 4652778
F2x_equal1 2861924
F2x_flip 1549598
F2x_renormalize 114809663
F2x_set 124067998
F2xqX_div 33161
F3m_coeff 3143922
F3m_copy 0
F3m_set 0
Flm_copy 6065356
Flm_row 8483402
Flv_copy 2550620
Flx_constant 326605
Flx_copy 167139541
Flx_div 1775265
Flx_div_pre 20325594
Flx_equal1 8116649
Flx_lead 961521
Flx_mulu 1103959
FlxqX_div 0
FlxqX_div_pre 148240
Flxq_add 0
Flxq_sub 0
FpV_FpC_mul 0
FpXQX_div 4526
FpXQX_renormalize 4304613
FpXQ_add 0
FpXQ_sub 0
FpXX_renormalize 849578
FpXY_Fq_evaly 20587
FpX_div 5215859
FpX_renormalize 141453194
Fp_add 180861229
Fp_addmul 11043542
Fp_center 75943128
Fp_center_i 17112802
Fp_div 15033893
Fp_divu 15120013
Fp_double 20819991
Fp_halve 247271
Fp_inv 22943390
Fp_invsafe 1042775
Fp_mul 198761709
Fp_muls 17780
Fp_mulu 67512763
Fp_neg 31182779
Fp_red 81226124
Fp_sqr 63433149
Fp_sub 202247443
FqXQ_add 0
FqXQ_div 0
FqXQ_inv 0
FqXQ_invsafe 0
FqXQ_mul 22766
FqXQ_pow 0
FqXQ_sqr 0
FqXQ_sub 0
FqX_Fp_mul 541157
FqX_Fq_mul 383653
FqX_add 127694
FqX_ddf 7
FqX_degfact 47683
FqX_deriv 40061
FqX_div 34012
FqX_div_by_X_x 69699
FqX_divrem 0
FqX_extgcd 410135
FqX_factor 139705
FqX_factor_squarefree 7
FqX_gcd 8256
FqX_get_red 6090
FqX_halfgcd 0
FqX_halve 19411
FqX_integ 0
FqX_is_squarefree 683802
FqX_mul 344575
FqX_mulu 21942
FqX_neg 24956
FqX_normalize 4128
FqX_powu 1295
FqX_red 25354
FqX_rem 37743
FqX_roots 7273
FqX_sqr 71855
FqX_sub 68607
FqX_to_mod 175
FqXn_exp 0
FqXn_expint 6590
FqXn_inv 7126
FqXn_mul 263403
FqXn_sqr 0
Fq_red 3097838
Fq_to_FpXQ 73652
GENbinbase 942417784
QV_isscalar 53434528
Q_abs 8001485
Q_abs_shallow 117951
Qtoss 35322
R_abs 0
R_abs_shallow 13097
RgC_fpnorml2 577393
RgC_gtofp 33395858
RgC_gtomp 574
RgM_dimensions 9418897
RgM_fpnorml2 21302
RgM_gtofp 8139276
RgM_gtomp 21
RgM_minor 1036
RgM_shallowcopy 21264098
RgV_gtofp 56
RgV_is_QV 135181
RgV_is_ZV 32124023
RgV_isin 110144
RgV_isin_i 110144
RgV_isscalar 1198126
RgXQX_div 1904
RgXQX_rem 127559
RgX_coeff 2669861
RgX_copy 103122050
RgX_div 7000059
RgX_equal_var 26880983
RgX_fpnorml2 58395
RgX_gtofp 6815099
RgX_is_QX 392102
RgX_is_ZX 21900571
RgX_is_monomial 1319316
RgX_is_rational 60988
RgX_isscalar 0
RgX_renormalize 349807
RgX_shift_inplace 479070
RgX_shift_inplace_init 479070
RgX_to_RgV 140
Rg_col_ei 1372892
Rg_to_Fq 756
ZC_hnfrem 10325848
ZM_ZV_mod 548335
ZM_hnfrem 332711
ZM_lll 6976905
ZV_ZV_mod 7879543
ZV_dvd 23485
ZV_isscalar 23311756
ZV_to_zv 3202377
ZXQ_mul 2110046
ZXQ_sqr 938815
ZX_equal1 12850
ZX_is_monic 7285124
ZX_renormalize 147654907
Z_ispower 98
Z_issquare 454492
abgrp_get_cyc 11940798
abgrp_get_gen 1710489
abgrp_get_no 329700
absfrac 46339287
absfrac_shallow 27969
addmuliu 535943
addmuliu_inplace 58056440
affc_fixlg 249618
affgr 898901
bid_get_MOD 2088304
bid_get_U 3604114
bid_get_arch 36962
bid_get_archp 2302897
bid_get_cyc 5605191
bid_get_fact 2397355
bid_get_fact2 2128047
bid_get_gen 63966
bid_get_gen_nocheck 0
bid_get_grp 5669738
bid_get_ideal 72834
bid_get_mod 1514753
bid_get_no 0
bid_get_sarch 48594
bid_get_sprk 2089038
bin_copy 486307555
bit_accuracy 3103545523
bit_accuracy_mul 3175484
bit_prec 138430299
bnf_get_clgp 5252608
bnf_get_cyc 3617982
bnf_get_fu 22840
bnf_get_fu_nocheck 255902
bnf_get_gen 1626082
bnf_get_logfu 2801881
bnf_get_nf 9647166
bnf_get_no 8362
bnf_get_reg 648
bnf_get_sunits 1340578
bnf_get_tuN 253036
bnf_get_tuU 270366
bnr_get_bid 1994493
bnr_get_bnf 3632466
bnr_get_clgp 2717699
bnr_get_cyc 2435360
bnr_get_gen 7847
bnr_get_gen_nocheck 70
bnr_get_mod 71882
bnr_get_nf 1336237
bnr_get_no 252249
both_odd 120829390
cbrtr 0
cbrtr_abs 0
cgetalloc 10166
cgetc 973371
cgiv 100917169
checkell_i 5593196
closure_arity 371236825
closure_codestr 321278154
closure_get_code 0
closure_get_data 321237997
closure_get_dbg 13669
closure_get_frame 14253093
closure_get_oper 321256570
closure_get_text 37144
closure_is_variadic 45436427
col_ei 5584676
coltrunc_init 740250
const_col 9672049
const_vec 32704817
const_vecsmall 19081439
constant_coeff 1389280
cxcompotor 17146495
cxnorm 87889111
cxtofp 8547328
cxtoreal 337203
cyc_get_expo 2677039
cyclic_perm 99911
dbllog2r 90233759
degpol 5328367349
div_content 55351
divsBIL 7979978413
ellQp_get_p 1134
ellQp_get_prec 308
ellQp_get_zero 1463
ellR_get_prec 232750
ellR_get_sign 371535
ell_get_a1 8997078
ell_get_a2 7106182
ell_get_a3 8814047
ell_get_a4 8536723
ell_get_a6 10370961
ell_get_b2 7371027
ell_get_b4 2550216
ell_get_b6 3863115
ell_get_b8 3297414
ell_get_c4 11017266
ell_get_c6 13473699
ell_get_disc 16813603
ell_get_j 2126269
ell_get_type 12498687
ell_is_inf 52336573
ellff_get_a4a6 800028
ellff_get_field 2036857
ellinf 1869933
ellnf_get_bnf 119
ellnf_get_nf 2027236
equali1 1165274858
equalim1 139416543
err_get_compo 290
err_get_num 62608
gaddgs 123244970
gal_get_den 27166
gal_get_e 91
gal_get_gen 14531
gal_get_group 79772
gal_get_invvdm 27173
gal_get_mod 23110
gal_get_orders 6129
gal_get_p 5636
gal_get_pol 35239
gal_get_roots 31663
gc_GEN 249056228
gc_INT 4059034017
gc_INT_affii 8306023
gc_all 108463827
gc_leaf 1112549600
gc_slice 2076961
gc_upto 1917489328
gchar_copy_precs 1223
gchar_get_DLdata 190664
gchar_get_S 36925
gchar_get_U 0
gchar_get_Ui 10959
gchar_get_basis 32758
gchar_get_bnf 205324
gchar_get_cyc 16148
gchar_get_evalprec 4006
gchar_get_hnf 0
gchar_get_loccyc 50419
gchar_get_m0 3295
gchar_get_mod 8225
gchar_get_modP 4095
gchar_get_nalg 2038
gchar_get_nc 37191
gchar_get_nf 243829
gchar_get_nfprec 13433
gchar_get_nfree 322
gchar_get_nm 1869
gchar_get_ns 36925
gchar_get_ntors 322
gchar_get_prec 18756
gchar_get_r1 17444
gchar_get_r2 623
gchar_get_sfu 1726
gchar_get_u0 4222
gchar_get_zm 281769
gchar_set_HUUi 626
gchar_set_basis 1569
gchar_set_cyc 1569
gchar_set_evalprec 1811
gchar_set_m0 943
gchar_set_nalg 626
gchar_set_nf 2091
gchar_set_nfprec 2949
gchar_set_nfree 626
gchar_set_ntors 626
gchar_set_prec 1223
gchar_set_u0 2104
gcmpgs 740201
gdivsg 529508
gen_I 1248821
gener_Fq_local 27998
gequalgs 29176
get_F2x_degree 1926301
get_F2x_mod 2495377
get_F2x_var 2511135
get_F2xqX_degree 200841
get_F2xqX_mod 341
get_F2xqX_var 375365
get_Flx_degree 78341309
get_Flx_mod 24074736
get_Flx_var 64185091
get_FlxqX_degree 317195
get_FlxqX_mod 7972
get_FlxqX_var 264059
get_FpXQX_degree 3589
get_FpXQX_mod 146583
get_FpXQX_var 51630
get_FpX_degree 6120264
get_FpX_mod 3323157
get_FpX_var 6640930
gisdouble 2813800
gmax_shallow 13507872
gmaxsg 0
gmin_shallow 803235
gminsg 0
gmulgs 22126249
gmulgu 282059288
gsubgs 1721630
gtodouble 58539664
gtofp 247859427
gtomp 22428
gtos 85854408
gtou 99537
guncloneNULL 47533097
guncloneNULL_deep 1446004
gval 6230
hash_str 2758762
hash_str_len 31367350
icopy_avma 7952945986
idealchineseinit 5427
idealred 135184
identity_ZV 8053
identity_perm 3146186
identity_zv 3167416
inf_get_sign 1411489
inv_content 0
is_bigint 560621060
is_const_t 4812432944
is_extscalar_t 6876
is_intreal_t 9190834
is_matvec_t 654784938
is_noncalc_t 85685470
is_pm1 2169253552
is_qfb_t 0
is_rational_t 4903032
is_real_t 62049112
is_recursive_t 9018042796
is_scalar_t 373586371
is_universal_constant 325790290
is_vec_t 43864906
isint1 17375601
isintm1 5575870
isintzero 2787735083
ismpzero 9190725
isonstack 8156275858
killblock 1922084
leading_coeff 166969377
leafcopy_avma 558144080
lg_increase 313843123
lgcols 342234706
lgpol 2614465088
lincombii 37017099
locs_get_Lgenfil 1288
locs_get_Lsprk 193878
locs_get_cyc 52029
locs_get_famod 1288
locs_get_m_infty 209418
locs_get_mod 8225
logint 739948
matpascal 3983
matslice 16503192
mkcol 10368603
mkcol2 155477213
mkcol2s 4416244
mkcol3 88314
mkcol3s 315
mkcol4 103467
mkcol4s 0
mkcol5 93
mkcol6 232470
mkcolcopy 32518
mkcols 40411
mkcomplex 87102872
mkerr 0
mkfrac 41506721
mkfraccopy 4951753
mkfracss 1209563
mkintmod 8088730
mkintmodu 1813
mkmat 4660119
mkmat2 33321193
mkmat22 49901908
mkmat22s 207578
mkmat3 17001
mkmat4 84
mkmat5 0
mkmatcopy 110548
mkmoo 99991
mkoo 1299241
mkpadic 2009
mkpolmod 3085749
mkqfb 27851528
mkquad 69118
mkrfrac 697355
mkrfraccopy 14
mkvec 70582667
mkvec2 181307549
mkvec2copy 111655
mkvec2s 213258
mkvec3 116972743
mkvec3s 524441
mkvec4 10108745
mkvec4s 21
mkvec5 14964214
mkvec5s 0
mkvec6 0
mkvec6s 301
mkveccopy 122521
mkvecs 168
mkvecsmall 127640321
mkvecsmall2 229451653
mkvecsmall3 101752741
mkvecsmall4 18534782
mkvecsmall5 1689365
modpr_get_T 13681136
modpr_get_p 1878988
modpr_get_pr 30918654
mul_content 2545504
mul_denom 10506541
mulsubii 3726454
nbits2extraprec 1438828521
nbits2ndec 228
nbits2nlong 12331626
nbits2prec 181439154
nbrows 152394461
nchar2nlong 124494941
ndec2nbits 8270
ndec2nlong 41584
ndec2prec 33314
nfV_to_scalar_or_alg 23281
nf_get_G 282572
nf_get_M 21364539
nf_get_Tr 21440
nf_get_degree 69857041
nf_get_diff 4398
nf_get_disc 418476
nf_get_index 3569108
nf_get_invzk 9450598
nf_get_pol 95759276
nf_get_r1 23021861
nf_get_r2 4143
nf_get_ramified_primes 58532
nf_get_roots 1537650
nf_get_roundG 1709400
nf_get_sign 513485
nf_get_varn 1450070
nf_get_zk 4382
nf_get_zkden 5285486
nf_get_zkprimpart 5245239
normalize_frac 17110990
odd 2085638619
pari_calloc 47720
pari_err_BUG 32
pari_err_COMPONENT 215
pari_err_CONSTPOL 21
pari_err_COPRIME 84
pari_err_DIM 719
pari_err_DOMAIN 2863
pari_err_FILE 0
pari_err_FILEDESC 36
pari_err_FLAG 98
pari_err_IMPL 539
pari_err_INV 20014
pari_err_IRREDPOL 63
pari_err_MAXPRIME 0
pari_err_MODULUS 1316
pari_err_OP 406
pari_err_OVERFLOW 156
pari_err_PACKAGE 0
pari_err_PREC 238
pari_err_PRIME 98
pari_err_PRIORITY 245
pari_err_ROOTS0 63
pari_err_SQRTN 7084
pari_err_TYPE 15386
pari_err_TYPE2 3493
pari_err_VAR 372
pari_free 499675572
pari_malloc 734525018
pari_realloc 1890
pari_realloc_ip 2220960
pari_stack_alloc 1017355857
pari_stack_base 1022944669
pari_stack_delete 5631712
pari_stack_init 6040566
pari_stack_new 922574242
pari_stack_pushp 5851
perm_conj 418287
perm_inv 2712181
perm_mul 78979166
perm_sqr 632
pol0_F2x 13201903
pol0_Flx 100245180
pol1_F2x 3920865
pol1_Flx 51714771
pol_0 82897341
pol_1 3636239
pol_x 3660170
pol_xn 2190878
pol_xnall 294
polx_F2x 1045305
polx_Flx 35865032
polx_zx 0
polxn_Flx 371
powIs 1561
powii 43089605
pr_get_e 15742519
pr_get_f 25424299
pr_get_gen 11573583
pr_get_p 90722428
pr_get_tau 48344409
pr_is_inert 16679036
pr_norm 1030234
prec2lg 4395709499
prec2nbits 102470682
prec2nbits_mul 581163
prec2ndec 9778
precdbl 456657
qfb_disc 18502119
qfb_disc3 4956895
qfb_is_qfi 62328425
quad_disc 1085
quadnorm 69881
random_Fq 0
remsBIL 7891967793
rnf_get_absdegree 1392746
rnf_get_alpha 1422
rnf_get_degree 2506329
rnf_get_disc 357
rnf_get_idealdisc 1386
rnf_get_index 105
rnf_get_invzk 1225
rnf_get_k 1225
rnf_get_map 135647
rnf_get_nf 784342
rnf_get_nfdegree 21449
rnf_get_nfpol 255354
rnf_get_nfvarn 4886
rnf_get_nfzk 7227
rnf_get_pol 2845186
rnf_get_polabs 327193
rnf_get_ramified_primes 2843
rnf_get_varn 574
rnf_get_zk 4824
row 759489
row_i 987
rowcopy 204988
rowpermute 14276251
rowslice 77392231
rowslicepermute 176594
rowsplice 264
ser_isexactzero 10120284
shallowcopy 27053869
sqrfrac 4109804
sqrti 6444164
sqrtnr 2742384
sqrtr 78061523
sstoQ 1097215
sturm 384
submulii 31982591
submuliu 7700
submuliu_inplace 58523898
truecoef 0
trunc_safe 0
ulogint 1715578
upr_norm 338272
uutoQ 1600198
vec_append 3138176
vec_ei 1604294
vec_lengthen 18957
vec_prepend 285613
vec_setconst 0
vec_shorten 10429
vec_to_vecsmall 3918779
veclast 9309605
vecmodii 0
vecmoduu 49784
vecpermute 20059490
vecreverse 697276
vecreverse_inplace 2579
vecslice 647023737
vecslicepermute 2613929
vecsmall_append 4069731
vecsmall_coincidence 0
vecsmall_concat 1420918
vecsmall_copy 4152315
vecsmall_ei 572645
vecsmall_indexmax 21
vecsmall_indexmin 21
vecsmall_isin 84
vecsmall_lengthen 543
vecsmall_lexcmp 6936341
vecsmall_max 1154286
vecsmall_min 2345
vecsmall_pack 84
vecsmall_prefixcmp 108088071
vecsmall_prepend 186674
vecsmall_reverse 2800
vecsmall_shorten 74971
vecsmall_to_col 7719587
vecsmall_to_vec 510805
vecsmall_to_vec_inplace 3304
vecsmallpermute 76896257
vecsmalltrunc_append 100700259
vecsmalltrunc_init 188524806
vecsplice 379457
vectrunc_append 15710314
vectrunc_append_batch 9667
vectrunc_init 11686223
zc_to_ZC 7705654
zero_F2m 0
zero_F2m_copy 782701
zero_F2v 3430543
zero_F2x 1350
zero_Flm 2748847
zero_Flm_copy 226509
zero_Flv 58508086
zero_Flx 1406282
zero_zm 0
zero_zv 36082708
zero_zx 0
zerocol 118230001
zeromat 101765
zeromatcopy 13915595
zeropadic 855745
zeropadic_shallow 17026
zeropol 42344466
zeroser 138908
zerovec 28143888
zerovec_block 29654
zm_copy 0
zm_row 0
zm_to_zxV 0
zm_transpose 266
znstar_get_N 38655073
znstar_get_U 176107
znstar_get_Ui 46788
znstar_get_conreycyc 7979693
znstar_get_conreygen 3290176
znstar_get_cyc 262088
znstar_get_faN 7331711
znstar_get_gen 16150
znstar_get_no 14
znstar_get_pe 2869063
zv_copy 2183734
zv_to_ZV 502006
zv_to_zx 104146
zx_renormalize 14049
zx_shift 0
zx_to_zv 0

Generated by: LCOV version 1.16