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 29950-285c5b69ed) Lines: 1437 1578 91.1 %
Date: 2025-02-05 09:09:51 Functions: 647 717 90.2 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
F2m_clear 0
F2m_coeff 8030392
F2m_copy 198368
F2m_flip 1554474
F2m_set 798
F2v_clear 12222153
F2v_coeff 660525428
F2v_copy 4487
F2v_ei 42
F2v_flip 1554474
F2v_set 101322857
F2v_to_F2x 38205
F2xX_shift 0
F2x_clear 12222147
F2x_coeff 667196384
F2x_copy 60678138
F2x_div 1574102
F2x_equal 4689552
F2x_equal1 2871809
F2x_flip 1554474
F2x_renormalize 115576945
F2x_set 124779727
F2xqX_div 33173
F3m_coeff 3210421
F3m_copy 0
F3m_set 0
Flm_copy 6264279
Flm_row 8567249
Flv_copy 2510017
Flx_constant 294718
Flx_copy 172145969
Flx_div 1995934
Flx_div_pre 21451033
Flx_equal1 8596759
Flx_lead 969222
Flx_mulu 1094423
FlxqX_div 0
FlxqX_div_pre 165351
Flxq_add 0
Flxq_sub 0
FpV_FpC_mul 0
FpXQX_div 4525
FpXQX_renormalize 4695873
FpXQ_add 0
FpXQ_sub 0
FpXX_renormalize 849804
FpXY_Fq_evaly 20587
FpX_div 5435766
FpX_renormalize 141408955
Fp_add 172708392
Fp_addmul 11252407
Fp_center 75337256
Fp_center_i 13976557
Fp_div 1613792
Fp_divu 1897912
Fp_double 20923690
Fp_halve 252320
Fp_inv 36421117
Fp_invsafe 1097411
Fp_mul 182345204
Fp_muls 17780
Fp_mulu 70543911
Fp_neg 28670724
Fp_red 79774039
Fp_sqr 63791205
Fp_sub 147519569
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 568491
FqX_Fq_mul 427369
FqX_add 127694
FqX_ddf 7
FqX_degfact 47786
FqX_deriv 723863
FqX_div 38155
FqX_div_by_X_x 71939
FqX_divrem 0
FqX_extgcd 443121
FqX_factor 140736
FqX_factor_squarefree 7
FqX_gcd 691460
FqX_get_red 6090
FqX_halfgcd 0
FqX_halve 19411
FqX_integ 0
FqX_mul 367200
FqX_mulu 21942
FqX_neg 24956
FqX_normalize 3829
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 3105395
Fq_to_FpXQ 73792
GENbinbase 925194459
QV_isscalar 52338049
Q_abs 7814028
Q_abs_shallow 117537
Qtoss 19838
R_abs 0
R_abs_shallow 13083
RgC_fpnorml2 618956
RgC_gtofp 33694612
RgC_gtomp 574
RgM_dimensions 9402057
RgM_fpnorml2 22305
RgM_gtofp 8177062
RgM_gtomp 21
RgM_minor 1036
RgM_shallowcopy 21419714
RgV_gtofp 56
RgV_is_QV 140040
RgV_is_ZV 31340960
RgV_isin 110116
RgV_isin_i 110116
RgV_isscalar 1140335
RgXQX_div 1904
RgXQX_rem 121685
RgX_coeff 2551365
RgX_copy 103412089
RgX_div 7053188
RgX_equal_var 26826105
RgX_fpnorml2 60531
RgX_gtofp 7127194
RgX_is_QX 385639
RgX_is_ZX 15254659
RgX_is_monomial 3091108
RgX_is_rational 67626
RgX_isscalar 0
RgX_renormalize 349345
RgX_shift_inplace 480560
RgX_shift_inplace_init 480560
RgX_to_RgV 140
Rg_col_ei 1282891
Rg_to_Fq 756
ZC_hnfrem 10688357
ZM_ZV_mod 539139
ZM_hnfrem 326778
ZM_lll 6933832
ZV_ZV_mod 7322955
ZV_dvd 23485
ZV_isscalar 22765949
ZV_to_zv 3190569
ZXQ_mul 2125488
ZXQ_sqr 949972
ZX_equal1 12017
ZX_is_monic 7221034
ZX_renormalize 151559722
Z_ispower 98
Z_issquare 458608
abgrp_get_cyc 11549761
abgrp_get_gen 1653830
abgrp_get_no 391990
absfrac 45250180
absfrac_shallow 27026
addmuliu 404666
addmuliu_inplace 59378610
affc_fixlg 239587
affgr 220535
bid_get_MOD 1990795
bid_get_U 3378434
bid_get_arch 35098
bid_get_archp 2217813
bid_get_cyc 5361722
bid_get_fact 2313979
bid_get_fact2 2025332
bid_get_gen 53326
bid_get_gen_nocheck 0
bid_get_grp 5415626
bid_get_ideal 78295
bid_get_mod 1386586
bid_get_no 0
bid_get_sarch 51226
bid_get_sprk 1991516
bin_copy 477086085
bit_accuracy 2841591040
bit_accuracy_mul 3175063
bit_prec 141448228
bnf_get_clgp 5097972
bnf_get_cyc 3509380
bnf_get_fu 25852
bnf_get_fu_nocheck 288167
bnf_get_gen 1580050
bnf_get_logfu 2702321
bnf_get_nf 9426502
bnf_get_no 8379
bnf_get_reg 641
bnf_get_sunits 1278472
bnf_get_tuN 265168
bnf_get_tuU 290510
bnr_get_bid 1937053
bnr_get_bnf 3632448
bnr_get_clgp 2728801
bnr_get_cyc 2396588
bnr_get_gen 7847
bnr_get_gen_nocheck 70
bnr_get_mod 141071
bnr_get_nf 1260120
bnr_get_no 314594
both_odd 116919047
cbrtr 0
cbrtr_abs 0
cgetalloc 10075
cgetc 963393
cgiv 117617581
checkell_i 4677534
closure_arity 360954998
closure_codestr 312261238
closure_get_code 0
closure_get_data 312195238
closure_get_dbg 13355
closure_get_frame 13042041
closure_get_oper 312226943
closure_get_text 36512
closure_is_variadic 40095491
col_ei 5667613
coltrunc_init 393680
const_col 9623170
const_vec 32898186
const_vecsmall 19045812
constant_coeff 1439285
cxcompotor 17897991
cxnorm 90712767
cxtofp 8932379
cxtoreal 384630
cyc_get_expo 2521900
cyclic_perm 99911
dbllog2r 92873447
degpol 5357422026
div_content 57465
divsBIL 8062896623
ellQp_get_p 1134
ellQp_get_prec 308
ellQp_get_zero 1463
ellR_get_prec 232582
ellR_get_sign 371325
ell_get_a1 7116232
ell_get_a2 5709743
ell_get_a3 6912880
ell_get_a4 6522744
ell_get_a6 7961517
ell_get_b2 5432776
ell_get_b4 2135641
ell_get_b6 3055105
ell_get_b8 2608978
ell_get_c4 8021777
ell_get_c6 8850390
ell_get_disc 11279913
ell_get_j 1295726
ell_get_type 11588431
ell_is_inf 51365429
ellff_get_a4a6 800044
ellff_get_field 2036778
ellinf 1875607
ellnf_get_bnf 126
ellnf_get_nf 2027602
equali1 1211584026
equalim1 139010429
err_get_compo 294
err_get_num 61990
gabsz 0
gaddgs 123137525
gaddz 0
gal_get_den 27608
gal_get_e 91
gal_get_gen 15456
gal_get_group 80150
gal_get_invvdm 27615
gal_get_mod 23758
gal_get_orders 6664
gal_get_p 6041
gal_get_pol 36078
gal_get_roots 32508
gc_all 86233538
gchar_copy_precs 1202
gchar_get_DLdata 188468
gchar_get_S 36864
gchar_get_U 0
gchar_get_Ui 10969
gchar_get_basis 32639
gchar_get_bnf 203105
gchar_get_cyc 16168
gchar_get_evalprec 4011
gchar_get_hnf 0
gchar_get_loccyc 50346
gchar_get_m0 3320
gchar_get_mod 8225
gchar_get_modP 4095
gchar_get_nalg 2042
gchar_get_nc 37130
gchar_get_nf 241478
gchar_get_nfprec 13419
gchar_get_nfree 322
gchar_get_nm 1841
gchar_get_ns 36864
gchar_get_ntors 322
gchar_get_prec 18732
gchar_get_r1 17416
gchar_get_r2 623
gchar_get_sfu 1747
gchar_get_u0 4266
gchar_get_zm 279433
gchar_set_HUUi 623
gchar_set_basis 1573
gchar_set_cyc 1573
gchar_set_evalprec 1785
gchar_set_m0 950
gchar_set_nalg 623
gchar_set_nf 2076
gchar_set_nfprec 2949
gchar_set_nfree 623
gchar_set_ntors 623
gchar_set_prec 1202
gchar_set_u0 2093
gcmpgs 780378
gdiventz 0
gdivsg 528374
gdivz 0
gen_I 1269347
gener_Fq_local 14601
gequalgs 29176
gerepileall 19098154
gerepilecoeffs 2198055
gerepilecopy 227358784
gerepilemany 984874
gerepileupto 1787436051
gerepileuptoint 3940231527
gerepileuptoleaf 1082270841
get_F2x_degree 1928005
get_F2x_mod 2498597
get_F2x_var 2531484
get_F2xqX_degree 200851
get_F2xqX_mod 343
get_F2xqX_var 375375
get_Flx_degree 83988639
get_Flx_mod 25514879
get_Flx_var 67622065
get_FlxqX_degree 318017
get_FlxqX_mod 8033
get_FlxqX_var 264794
get_FpXQX_degree 3584
get_FpXQX_mod 146583
get_FpXQX_var 51616
get_FpX_degree 5889323
get_FpX_mod 3389856
get_FpX_var 7178758
gisdouble 2967673
gmax_shallow 13509949
gmaxsg 0
gmin_shallow 874604
gminsg 0
gmodz 0
gmul2nz 0
gmulgs 21992466
gmulgu 124173903
gmulz 0
gnegz 0
gshiftz 0
gsubgs 1691759
gsubz 0
gtodouble 60547461
gtofp 252173897
gtomp 22428
gtos 85800847
gtou 102637
guncloneNULL 47457932
guncloneNULL_deep 1365054
gval 5796
hash_str 2694241
hash_str_len 18181429
icopy_avma 7801181165
idealchineseinit 4766
idealred 138606
identity_ZV 4333
identity_perm 3115607
identity_zv 3139953
inf_get_sign 1193947
inv_content 0
is_bigint 556742163
is_const_t 4748365372
is_extscalar_t 6960
is_intreal_t 9576314
is_matvec_t 603622701
is_noncalc_t 93654194
is_pm1 2187707605
is_qfb_t 0
is_rational_t 4984602
is_real_t 62560272
is_recursive_t 8418370585
is_scalar_t 314661085
is_universal_constant 291142417
is_vec_t 43372554
isint1 16996917
isintm1 5699866
isintzero 2793032743
ismpzero 9576210
isonstack 7875246990
killblock 1881890
leading_coeff 168611187
leafcopy_avma 551626820
lg_increase 318789809
lgcols 340251317
lgpol 2551957776
lincombii 37786804
locs_get_Lgenfil 1260
locs_get_Lsprk 191695
locs_get_cyc 51954
locs_get_famod 1260
locs_get_m_infty 207235
locs_get_mod 8225
logint 751976
matpascal 3885
matslice 16545980
mkcol 10180029
mkcol2 156391739
mkcol2s 4415292
mkcol3 88314
mkcol3s 315
mkcol4 103439
mkcol4s 0
mkcol5 94
mkcol6 232379
mkcolcopy 33535
mkcols 40411
mkcomplex 90009323
mkerr 0
mkfrac 33862259
mkfraccopy 4808613
mkfracss 1209535
mkintmod 8025279
mkintmodu 1813
mkmat 4607667
mkmat2 32547363
mkmat22 50524044
mkmat22s 207452
mkmat3 17001
mkmat4 84
mkmat5 0
mkmatcopy 121019
mkmoo 105860
mkoo 1075811
mkpolmod 2994369
mkqfb 27798586
mkquad 69118
mkrfrac 698089
mkrfraccopy 14
mkvec 68058867
mkvec2 183458723
mkvec2copy 114412
mkvec2s 219747
mkvec3 120583952
mkvec3s 524441
mkvec4 6640108
mkvec4s 21
mkvec5 14486753
mkveccopy 122507
mkvecs 161
mkvecsmall 129460374
mkvecsmall2 223894098
mkvecsmall3 100359598
mkvecsmall4 15482917
mkvecsmall5 689631
modpr_get_T 13186961
modpr_get_p 1888740
modpr_get_pr 30050867
mpcosz 0
mpexpz 0
mplogz 0
mpsinz 0
mul_content 2510140
mul_denom 10284925
mulsubii 3838680
nbits2extraprec 1474705363
nbits2ndec 214
nbits2nlong 12569875
nbits2prec 185557342
nbrows 153513008
nchar2nlong 120803414
ndec2nbits 8256
ndec2nlong 41087
ndec2prec 32831
nfV_to_scalar_or_alg 26293
nf_get_G 301333
nf_get_M 20772935
nf_get_Tr 22079
nf_get_degree 68770887
nf_get_diff 4465
nf_get_disc 456812
nf_get_index 3580089
nf_get_invzk 9475374
nf_get_pol 94339548
nf_get_r1 22160420
nf_get_r2 4140
nf_get_ramified_primes 59317
nf_get_roots 1517105
nf_get_roundG 1685928
nf_get_sign 516777
nf_get_varn 1166605
nf_get_zk 4382
nf_get_zkden 5060513
nf_get_zkprimpart 5014425
normalize_frac 16727265
odd 2025448613
pari_calloc 46740
pari_err_BUG 14
pari_err_COMPONENT 214
pari_err_CONSTPOL 21
pari_err_COPRIME 84
pari_err_DIM 711
pari_err_DOMAIN 2757
pari_err_FILE 0
pari_err_FILEDESC 36
pari_err_FLAG 98
pari_err_IMPL 525
pari_err_INV 20018
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 238
pari_err_ROOTS0 63
pari_err_SQRTN 7084
pari_err_TYPE 15279
pari_err_TYPE2 3493
pari_err_VAR 371
pari_free 490343417
pari_malloc 720646882
pari_realloc 1862
pari_realloc_ip 2134521
pari_stack_alloc 691360427
pari_stack_base 696674373
pari_stack_delete 5310931
pari_stack_init 5718799
pari_stack_new 598388411
pari_stack_pushp 5767
perm_conj 418299
perm_inv 2768680
perm_mul 79674228
perm_sqr 728
pol0_F2x 13272279
pol0_Flx 102008797
pol1_F2x 3954764
pol1_Flx 54691255
pol_0 34767125
pol_1 4385690
pol_x 3554628
pol_xn 2236277
pol_xnall 294
polx_F2x 1078862
polx_Flx 37627317
polx_zx 0
polxn_Flx 371
powIs 1561
powii 42911740
pr_get_e 15718473
pr_get_f 25343822
pr_get_gen 11506308
pr_get_p 89360474
pr_get_tau 47847377
pr_is_inert 16398356
pr_norm 1066990
prec2lg 4457007267
prec2nbits 104283308
prec2nbits_mul 570918
prec2ndec 9750
precdbl 475136
qfb_disc 18474956
qfb_disc3 4848240
qfb_is_qfi 68060902
quad_disc 1078
quadnorm 69860
random_Fq 0
remsBIL 7975143562
rnf_get_absdegree 1381557
rnf_get_alpha 1092
rnf_get_degree 2476851
rnf_get_disc 315
rnf_get_idealdisc 1190
rnf_get_index 105
rnf_get_invzk 1225
rnf_get_k 1078
rnf_get_map 129268
rnf_get_nf 708280
rnf_get_nfdegree 20111
rnf_get_nfpol 242257
rnf_get_nfvarn 4655
rnf_get_nfzk 6083
rnf_get_pol 2796059
rnf_get_polabs 297244
rnf_get_ramified_primes 2380
rnf_get_varn 574
rnf_get_zk 4361
row 762665
row_i 987
rowcopy 204988
rowpermute 14364312
rowslice 77986835
rowslicepermute 182062
rowsplice 273
ser_isexactzero 10079038
shallowcopy 25804846
sqrfrac 4128362
sqrti 6584771
sqrtnr 2792851
sqrtr 79858098
sstoQ 1074066
sturm 385
submulii 32723956
submuliu 7693
submuliu_inplace 59913041
truecoef 0
trunc_safe 0
ulogint 1731357
upr_norm 343931
uutoQ 158072597
vec_append 3431994
vec_ei 1708976
vec_lengthen 18941
vec_prepend 300931
vec_setconst 0
vec_shorten 11550
vec_to_vecsmall 4015521
veclast 6917282
vecmodii 0
vecmoduu 49784
vecpermute 19819202
vecreverse 697025
vecreverse_inplace 2570
vecslice 637701265
vecslicepermute 2631291
vecsmall_append 4065070
vecsmall_coincidence 0
vecsmall_concat 1457662
vecsmall_copy 4317575
vecsmall_ei 495256
vecsmall_indexmax 21
vecsmall_indexmin 21
vecsmall_isin 84
vecsmall_lengthen 526
vecsmall_lexcmp 7208559
vecsmall_max 1010643
vecsmall_min 2324
vecsmall_pack 84
vecsmall_prefixcmp 108088071
vecsmall_prepend 186796
vecsmall_reverse 3059
vecsmall_shorten 72595
vecsmall_to_col 7760789
vecsmall_to_vec 511039
vecsmall_to_vec_inplace 3304
vecsmallpermute 77483421
vecsmalltrunc_append 99855466
vecsmalltrunc_init 190196579
vecsplice 354712
vectrunc_append 15261645
vectrunc_append_batch 10864
vectrunc_init 11735676
zc_to_ZC 7746608
zero_F2m 0
zero_F2m_copy 838858
zero_F2v 3618985
zero_F2x 1350
zero_Flm 2767278
zero_Flm_copy 232084
zero_Flv 58675381
zero_Flx 1429920
zero_zm 0
zero_zv 36105524
zero_zx 0
zerocol 118694378
zeromat 108854
zeromatcopy 14017937
zeropadic 855774
zeropadic_shallow 15463
zeropol 14731868
zeroser 138698
zerovec 26630458
zerovec_block 24429
zm_copy 0
zm_row 0
zm_to_zxV 0
zm_transpose 266
znstar_get_N 34543777
znstar_get_U 176051
znstar_get_Ui 46788
znstar_get_conreycyc 7823726
znstar_get_conreygen 3221793
znstar_get_cyc 261948
znstar_get_faN 7210394
znstar_get_gen 16150
znstar_get_no 14
znstar_get_pe 2820763
zv_copy 2183347
zv_to_ZV 502478
zv_to_zx 104146
zx_renormalize 14049
zx_shift 0
zx_to_zv 0

Generated by: LCOV version 1.16