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 - lfunutils.c (source / functions) Coverage Total Hit
Test: PARI/GP v2.18.1 lcov report (development 31042-0fbe168e69) Lines: 91.7 % 1740 1596
Test Date: 2026-07-23 17:04:59 Functions: 94.2 % 172 162
Legend: Lines:     hit not hit

Function Name Sort by function name Hit count Sort by function hit count
c4c6_ap 0
c4c6_testp 0
ellsympow_abelian_twist 0
ellsympow_goodred 0
ellsympow_isabelian2 0
ellsympow_isabelian3 0
ellsympow_rootno2 0
eulerf_conj 0
eulerf_genus2 0
safe_Z_pvalrem 0
ellsymsq_bad3 14
eulerf_div 14
eulerf_twist 14
poles_translate 14
lfunabelrel 21
lfunzetakinit_artin 21
vecchar_renormalize 21
ellsympow_deltam2 28
ellsympow_goodred2 28
ellsympow_inertia2 28
ellsymsq_bad2 28
eulerf_artin 28
eulerf_chigen 28
eulerf_ellsympow 28
pole_translate 28
ellsympow_rootno3 35
ellsymsq_badp 42
eulerf_abelrel 42
eulerf_chiZ 42
eulerf_mul 42
lfunmfspec 42
lfunmfspec_i 42
etaselfdual 49
lfunetaquo 49
eulerf_bad 56
lfunconvolinv 56
lfundiv 56
lfundivpoles 56
lfunvgasub 56
lfunmul 63
elldiscfix 70
ellsympow_deltam3 70
ellsympow_goodred3 70
ellsympow_inertia3 70
eulerf_closure 70
eulerf_shift 70
lfunellmfpeters 70
lfunellmfpetersmintwist 70
lfunellsymsqmintwist 70
lfunsympow 70
mfpeters 70
eulerf_hgm 84
lfunconvol 84
lfunmul_k 84
lfunmulpoles 84
lfunqf 91
ellsympow_epsm 98
ellsympow_multred 98
ellsympow_nonabelian 98
lfunconj 98
artin_charfromgens 119
check_0 133
check_real 133
ellsympow_gamma 140
lfuncombdual 140
lfunellsympow 140
vecan_eta 147
vecan_conj 154
eulerf_zetak 168
vecan_abelrel 168
rtopoles 182
ellminimaldotwist 189
ellsympow_betam 196
etachar 203
lfunellnf 210
RgV_Rg_translate 224
lfunshift 224
etacuspidal 231
etaquotype 259
galois_get_conj 280
orderpole 280
lfundualpoles 308
eta_product_ZXn 322
lfunproduct 329
lfunzetakinit_quotient 329
qfiseven 336
vecan_ellsympow 343
lfungenus2 392
simple_pole 392
vecan_qf 399
vecan_mul 413
closure2ldata 421
deg1ser_shallow 455
lfunparams 469
chigenkerfind 532
lfunabelianrelinit 532
vec_classes 532
veclfunchiinit 532
lfunabelrel_i 553
ginvvec 595
artin_ind 623
vecan_div 630
linit_get_mat 658
lfundual 672
lfuneuler 749
lfuncreate_tag 770
lfunzetak 861
vecan_shift 861
ldata_eulerf 952
lfunzetakinit 959
char_renormalize 1204
eta_ZXn 1222
lfunchiinit 1281
lfunzetak_i 1288
artin_badprimes 1379
artin_gamma 1379
char_is_real 1379
lfunchigen 1540
vecan_chigen 1554
handle_zeta 1596
idealfrobenius_hard 1596
lfunartin 1610
vecan_closure 1967
dirzetak 2107
dirzetak0 2107
artin_ram 2282
gamma_imagchi 2394
char_dim 2821
char_expand 2856
vecan_twist 2884
cyclotos 2891
vecan_artin 2947
ellsympow_abelian 3129
artin_dim 3213
lfunmisc_to_ldata 3521
vecan_chiZ 3647
vecan_Kronecker 3668
lfunellQ 3878
lfuncreate 4074
lfunell 4088
lfunzeta 4228
vec01 4760
lfuntwist 5187
mkvchi 5201
direllsympow_worker 5635
cyclo_is_real 6496
lfunchiquad 7049
cyclotoi 7700
lfunchiZ 8449
dirartin_worker 15666
lfundatatype 18082
lfunmisc_to_ldata_shallow_i 21805
tag 27104
ldata_vecan 33390
ldata_newprec 34349
idealfrobenius_easy 52402
dirartin 53998
localfactor 58912
ellsympow_trace 86660
chigenevalvec 86730
ellsympow 89761
lfunmisc_to_ldata_shallow 101304
chigeneval_i 106127
checkldata 109143
is_tagged 109437
lfunmisc_to_ldata_i 126630
is_ldata 131594
_direuler_abelrel 687883
abelrel_factor 687925
abelrel_pfactor 990451
gaddmulvec 1809619
gaddmul 1911392

Generated by: LCOV version 2.0-1