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) Coverage Total Hit
Test: PARI/GP v2.18.1 lcov report (development 31041-bd73e9fcdd) Lines: 96.9 % 1606 1556
Test Date: 2026-07-22 22:45:42 Functions: 99.3 % 135 134
Legend: Lines:     hit not hit

Function Name Sort by function name Hit count Sort by function hit count
get_extremal_odd 0
hyperellextremalmodels 7
genus2_red5 14
hyperellminimaldisc 14
is_sing 14
redqfbsplit 35
hyperellred 42
hyperellchangecompose 63
hyperellchangepointinv 70
hyperellordinate 70
Zst_red3 77
genus2_halfstablemodel 77
genus2_halfstablemodel_i 77
hyperellisisom 84
hyperellisoncurve 84
ZXM_to_padic 147
Fq_get_UV 154
ZlXQX_hyperellpadicfrobenius 154
ZpXQXXQ_invsqrt 154
nfhyperellpadicfrobenius 154
hyperellauto 168
genus2_red2 217
nfhyperellisisom 252
hyperellchangepoint 259
nfM_primpart 322
wprojtoaff 329
F2x_genus2charpoly_naive 392
checkhyperellpt_i 413
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
hyperellisisom_M0 539
hyperellisisom_gen 539
vecan_genus2 553
random_SL2 574
get_extremal_even 581
Zst_normval 588
Zst_red1 588
Zst_val 588
hyperellpadicfrobenius0 595
ellfromeqncharpoly 637
algo52_F4 651
cf 651
cfu 651
genus2_tr2 651
charpoly_funceq 679
hyperell_Weil_bound 686
ftrans 721
genus2_type5ns 819
F2xqX_quad_nbroots 896
F2x_genus_red 938
genus2_eulerfact2_semistable 938
genus2_eulerfact_semistable 1015
genus2_redmodel 1015
F2x_genus2_find_trans 1106
genus2_eulerfact2 1127
genus2_type5ns_2 1127
RgXY_swapsafe 1176
Zst_reduce 1176
ZM_to_padic 1309
ZlX_hyperellpadicfrobenius 1309
ZpXXQ_invsqrt 1309
get_UV 1309
hyperellpadicfrobenius 1309
algo56bis 1351
ZpXQXXQ_mul 1358
genus2_eulerfact 1442
ZX_apolar 1505
F2x_genus2_trans 1547
hyperellextremalmodels_i 1715
RgX_remswap 1722
hyperellextremalmodels_nb 1722
ZX_to_padic 1743
get_basis 1764
ZpXQXXQ_red 1806
genus2charpoly 1806
F2x_pseudodisc 1834
checkisom 2107
FpXXX_renormalize 2247
RgX_hom_evaly 2331
hyperellchangevar 2681
F2x_genus_redoo 2814
FpXXQ_sqr 3402
algo57bis 3563
hyperelldegree 3759
next_model 4914
frac_to_Fq 6573
ZX_hyperellred 8193
red_Cremona_Stoll 8193
dirgenus2_worker 8462
xdminusone 8834
ZC_to_padic 10094
ZpXXQ_frob 10094
diff_red 10094
revdigits 12026
polreduce 16386
FpXXQ_mul 16863
FlxV_constant 19544
Flx_difftable 19544
Flx_genus2charpoly_naive 19544
FpXXQ_red 20265
hyperellcharpoly 20629
hyperellchangeinvert 43561
hyperellisom_finalize 52219
algo56 54004
hyperell_reverse 54907
algo51 55355
algo57 56251
hyperellminimalmodel 56265
minimalmodel_merge 56265
check_hyperell_Q 56307
Flx_difftable_constant 94218
Flx_genus2trace_naive 94224
dirgenus2 98321
hyperellchangecurve 110509
algo52 111190
hyperell_redQ 112516
hyperelldisc 122534
frac_to_Fp 133847
get_ep 136183
test53 152517
check_hyperell_vc 154511
check_hyperell_Rg 155078
ZX2_affine_unscale 173325
ZX2_unscale 180246
test55 202829
check_hyperell 409364
hyperellgenus 544674
FlxV_Fl2_eval_pre 766955
to_ZX 1029749
Fl2V_next 97965182

Generated by: LCOV version 2.0-1