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 - hyperell.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30703-cd958ce78c) Lines: 1146 1220 93.9 %
Date: 2026-02-23 09:22:43 Functions: 101 103 98.1 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
genus2_red5 0
nfellcharpoly 0
hyperellminimaldisc 14
is_sing 14
F2xqX_quad_nbroots 21
F2x_genus2_find_trans 28
genus2_eulerfact2 28
F2x_genus_red 35
genus2_eulerfact2_semistable 35
hyperellordinate 35
redqfbsplit 35
F2x_genus2_trans 42
algo56bis 42
hyperellred 42
F2x_pseudodisc 56
Zst_red3 77
genus2_halfstablemodel 77
genus2_halfstablemodel_i 77
F2x_genus2charpoly_naive 84
ZX_apolar 91
F2x_genus_redoo 105
ellfromeqncharpoly 140
ZXM_to_padic 147
Fq_get_UV 154
ZlXQX_hyperellpadicfrobenius 154
ZpXQXXQ_invsqrt 154
nfhyperellpadicfrobenius 154
get_extremal 210
FlxV_constant 273
Flx_difftable 273
Flx_genus2charpoly_naive 273
genus2_type5 350
hyperellextremalmodels 350
FpXXX_Fp_mul 441
FpXXX_red 441
ZpXQXXQ_sqr 448
Fq_diff_red 469
ZXC_to_padic 469
ZXX_to_FpXC 469
ZpXQXXQ_frob 469
genus2_eulerfact_semistable 532
genus2_redmodel 532
Zst_normval 588
Zst_red1 588
Zst_val 588
hyperellpadicfrobenius0 595
charpoly_funceq 679
hyperell_Weil_bound 686
genus2charpoly 889
genus2_eulerfact 945
hyperellcharpoly 1050
RgXY_swapsafe 1176
Zst_reduce 1176
ZM_to_padic 1309
ZlX_hyperellpadicfrobenius 1309
ZpXXQ_invsqrt 1309
get_UV 1309
hyperellpadicfrobenius 1309
ZpXQXXQ_mul 1358
FlxV_Fl2_eval_pre 1617
ZX_to_padic 1743
get_basis 1764
ZpXQXXQ_red 1806
FpXXX_renormalize 2247
xdminusone 2926
algo57bis 3080
next_model 3122
FpXXQ_sqr 3402
hyperellisoncurve 3493
frac_to_Fq 6573
ZX_hyperellred 8193
red_Cremona_Stoll 8193
ZC_to_padic 10094
ZpXXQ_frob 10094
diff_red 10094
revdigits 12026
polreduce 16386
FpXXQ_mul 16863
FpXXQ_red 20265
Fl2V_next 44898
minimalmodel_getH 50735
algo56 50798
hyperell_reverse 50826
algo51 50840
algo57 53031
hyperellminimalmodel 53045
minimalmodel_merge 53045
check_hyperell_Q 53087
check_hyperell_vc 65282
check_hyperell_Rg 65296
hyperellchangecurve 65296
algo52 103364
hyperell_redQ 106076
hyperelldisc 118964
get_ep 126586
frac_to_Fp 133847
test53 147393
ZX2_affine_unscale 163567
ZX2_unscale 169571
test55 189494
check_hyperell 289195
RgX_RgM2_eval 303747
to_ZX 1029007

Generated by: LCOV version 1.16