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) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30702-bddb8d6928) Lines: 1645 1789 92.0 %
Date: 2026-02-23 02:23:56 Functions: 167 177 94.4 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by 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 12
eulerf_div 12
eulerf_twist 12
poles_translate 12
lfunabelrel 18
lfunzetakinit_artin 18
vecchar_renormalize 18
ellsympow_deltam2 24
ellsympow_goodred2 24
ellsympow_inertia2 24
ellsymsq_bad2 24
eulerf_artin 24
eulerf_chigen 24
eulerf_ellsympow 24
pole_translate 24
ellsympow_rootno3 30
ellsymsq_badp 36
eulerf_abelrel 36
eulerf_chiZ 36
eulerf_mul 36
lfungenus2 36
lfunmfspec 36
lfunmfspec_i 36
etaselfdual 42
lfunetaquo 42
eulerf_bad 48
eulerf_shift 48
lfunconvolinv 48
lfundiv 48
lfundivpoles 48
lfunvgasub 48
lfunmul 54
elldiscfix 60
ellsympow_deltam3 60
ellsympow_goodred3 60
ellsympow_inertia3 60
eulerf_closure 60
lfunellmfpeters 60
lfunellmfpetersmintwist 60
lfunellsymsqmintwist 60
lfunsympow 60
mfpeters 60
eulerf_hgm 72
lfunconj 72
lfunconvol 72
lfunmul_k 72
lfunmulpoles 72
lfunqf 78
ellsympow_epsm 84
ellsympow_multred 84
ellsympow_nonabelian 84
RgV_Rg_translate 90
lfunshift 90
artin_charfromgens 102
vecan_conj 108
check_0 114
check_real 114
lfunparams 114
ellsympow_gamma 120
lfuncombdual 120
lfunellsympow 120
vecan_eta 126
eulerf_zetak 144
vecan_abelrel 144
closure2ldata 156
rtopoles 156
ellminimaldotwist 162
ellsympow_betam 168
etachar 174
lfunellnf 174
vecan_genus2 174
etacuspidal 198
etaquotype 222
galois_get_conj 226
simple_pole 234
orderpole 240
lfundualpoles 252
eta_product_ZXn 276
lfunproduct 282
lfunzetakinit_quotient 282
deg1ser_shallow 288
qfiseven 288
vecan_ellsympow 294
vecan_qf 342
vecan_mul 354
chigenkerfind 456
lfunabelianrelinit 456
vec_classes 456
veclfunchiinit 456
lfunabelrel_i 474
ginvvec 498
artin_ind 534
lfuncreate_tag 540
vecan_div 540
lfundual 552
linit_get_mat 564
lfuneuler 618
vecan_shift 648
lfunzetak 714
ldata_eulerf 780
dirgenus2_worker 792
lfunzetakinit 822
char_renormalize 1032
eta_ZXn 1042
lfunzetak_i 1080
lfunchiinit 1098
artin_badprimes 1182
artin_gamma 1182
char_is_real 1182
lfunchigen 1314
vecan_chigen 1332
handle_zeta 1368
idealfrobenius_hard 1368
lfunartin 1380
vecan_closure 1697
dirzetak 1806
dirzetak0 1806
Flx_difftable 1836
Flx_genus2trace_naive 1836
artin_ram 1956
dirgenus2 1986
gamma_imagchi 2052
char_dim 2418
char_expand 2448
vecan_twist 2472
cyclotos 2478
vecan_artin 2526
ellsympow_abelian 2682
artin_dim 2754
lfunmisc_to_ldata 3018
vecan_chiZ 3120
vecan_Kronecker 3140
lfunellQ 3306
lfuncreate 3468
lfunell 3480
lfunzeta 3512
vec01 4044
lfuntwist 4446
mkvchi 4452
direllsympow_worker 4848
cyclo_is_real 5568
lfunchiquad 5908
cyclotoi 6600
lfunchiZ 7227
dirartin_worker 13428
lfundatatype 15208
lfunmisc_to_ldata_shallow_i 18195
tag 22600
ldata_vecan 27999
ldata_newprec 28377
idealfrobenius_easy 44916
dirartin 46284
localfactor 50532
chigenevalvec 74340
ellsympow_trace 74526
ellsympow 77184
lfunmisc_to_ldata_shallow 84995
chigeneval_i 90966
checkldata 91396
is_tagged 91492
lfunmisc_to_ldata_i 106208
is_ldata 109946
_direuler_abelrel 589614
abelrel_factor 589650
abelrel_pfactor 848958
gaddmulvec 1551102
gaddmul 1638336

Generated by: LCOV version 1.16