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 - FlxX.c (source / functions) Coverage Total Hit
Test: PARI/GP v2.18.1 lcov report (development 31041-bd73e9fcdd) Lines: 80.5 % 1492 1201
Test Date: 2026-07-22 22:45:42 Functions: 75.5 % 200 151
Legend: Lines:     hit not hit

Function Name Sort by function name Hit count Sort by function hit count
FlxXC_sub 0
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 0
FlxX_translate1 0
FlxX_triple 0
FlxY_Flx_div 0
FlxY_Flx_mul 0
FlxY_Flx_mul_pre 0
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 0
FlxY_Flxq_evalx 0
FlxY_Flxq_evalx_pre 0
FlxqXC_FlxqXQV_eval 0
FlxqXC_FlxqXQV_eval_pre 0
FlxqXC_FlxqXQ_eval 0
FlxqXQ_autpow 0
FlxqXQ_autsum 0
FlxqXQ_auttrace 0
FlxqXQ_div 0
FlxqXQ_div_pre 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 0
FlxqXQ_powers 0
FlxqXQ_powu 0
FlxqXQ_sqr 0
FlxqX_FlxqXQV_eval 0
FlxqX_FlxqXQ_eval 0
FlxqX_Flxq_mul 0
FlxqX_Flxq_mul_to_monic 0
FlxqX_Newton 0
FlxqX_eval 0
FlxqX_fromNewton 0
FlxqX_halfgcd 0
FlxqX_halfres 0
FlxqX_halfres_update 0
FlxqX_powu 0
FlxqX_red 0
FlxqXn_div 0
FlxqXn_expint 0
FlxqXn_inv 0
FlxqXn_mul 0
FlxqXn_sqr 0
FlxqXn_sqr_pre 0
Kronecker_to_FlxqX 0
ZXXV_to_FlxXV 0
_FlxqX_add 0
get_FlxqX_algebra 0
matJ2_FlxXM 0
zlxX_translate1 0
FlxqX_halfgcd_all 7
FlxqXQ_inv 14
FlxqXQ_inv_pre 14
FlxqXQ_invsafe_pre 14
FlxqX_disc 14
matid2_FlxXM 16
FlxqXQ_auttrace_sqr 20
FlxqXQ_auttrace_mul 27
FlxqXQ_pow 35
FlxqX_resultant 56
FlxqX_resultant_basecase 56
FlxqX_resultant_pre 56
FlxqXQ_minpoly 62
FlxqX_invBarrett 62
FlxqXQ_pow_pre 105
FlxqX_normalize 133
FlxqX_extgcd_halfgcd 143
FlxqXQ_minpoly_pre 225
FlxY_evalx 238
FlxY_Flx_add 245
FlxqX_halfgcd_pre 254
polxn_FlxX 254
_FlxqXQ_zero 281
FlxqX_get_red 336
FlxqXQ_auttrace_pre 338
ZXXT_to_FlxXT 442
FlxqXQ_transmul_init 508
random_FlxqX 592
FlxX_Fl_mul 684
FlxX_double 684
get_FlxqXQ_algebra 684
FlxqX_halfgcd_all_i 792
FlxqX_halfgcd_all_pre 792
FlxqXQ_transmul 1077
FlxX_Laplace 1216
FlxqX_composedsum 1216
FlxqX_fromNewton_pre 1216
FlxqXn_expint_pre 1216
FlxqX_sqr 1218
_FlxqXQ_red 1248
FlxqX_invBarrett_basecase 1391
FlxqXQ_mul 1800
FlxX_invLaplace 2432
FlxqX_Newton_pre 2432
FlxqXn_div_pre 2432
FlxqXn_inv_pre 2432
FlxX_neg 2538
Fly_to_FlxY 2612
FlxqXM_mul2 3276
FlxqX_FlxqXM_qmul 3276
FlxqX_halfres_split 3366
FlxqX_halfres_basecase 4052
FlxqXQ_autpow_mul 4274
FlxX_integXn 4804
_FlxqX_sub 4868
FlxqX_rem 5109
FlxXn_recip 6080
FlxqXM_FlxqX_mul2 6626
FlxqX_halfres_i 7418
FlxY_Flx_div_pre 7808
FlxqX_invBarrett_Newton 8354
FlxqX_invBarrett_pre 9745
FlxqX_powu_pre 10262
_FlxqX_sqr 10339
FlxYqq_mul 10406
FlxqX_saferesultant 11038
FlxY_Flx_sub 11703
FlxqXQ_autsum_pre 12110
FlxXC_to_ZXXC 12516
FlxX_blocks 13195
FlxqXn_mulhigh 13195
FlxqX_addmulmul 13562
FlxqX_mulhigh_i 18000
FlxqXQ_autsum_sqr 18401
FlxqX_gcd 24557
FlxqXQ_autsum_mul 29759
FlxqV_roots_to_deg1 32140
FlxqV_roots_to_pol 32140
FlxYqq_pow 39264
FlxqXn_mul_pre 40415
FlxqX_div_by_X_x 51898
FlxqX_div_by_X_x_pre 51898
FlxX_to_Flm 58347
FlxqX_mul 63936
FlxXn_red 66180
FlxqXQ_autpow_pre 69996
FlxX_shift 71638
FlxqXQ_autpow_sqr 73445
FlxqX_FlxqXQ_eval_pre 78081
FlxYqq_sqr 80553
FlxqXQ_powu_pre 82722
FlxX_deriv 85570
FlxYqq_redswap 90959
FlxqX_safegcd 97923
Flxq_addmul_pre 103796
FlxqXQ_powers_pre 109278
_FlxqXQ_one 112026
FlxqX_divrem_Barrett 125966
FlxX_subspec 132746
FlxqX_divrem_Barrettspec 133019
FlxqX_extgcd 134227
FlxqX_extgcd_basecase 134237
FlxqX_extgcd_pre 134241
FlxY_FlxqV_evalx_pre 137237
FlxXV_to_FlxM_lg 139112
FlxX_blocks_FlxM 139112
FlxqX_FlxqXQV_eval_pre 139112
FlxqX_Flxq_mul_pre 155534
RgX_to_FlxqX 166253
FlxqX_gcd_basecase 167928
FlxqX_gcd_pre 177830
FlxX_swap 181910
_FlxqXQ_mul 184836
FlxqX_normalize_pre 190026
Flm_to_FlxX 222033
FlxqXV_prod 223083
_FlxqXQ_sqr 271087
FlxqXQ_sqr_pre 271535
FlxX_recipspec 281996
FlxX_to_FlxC 328131
FlxqX_mulspec 357688
FlxX_add 360094
FlxqX_sqr_pre 363645
FlxX_to_Flx 378162
FlxqX_saferem 385039
FlxX_lgrenormalizespec 400717
FlxqXQ_mul_pre 487855
FlxqX_get_red_pre 495992
_FlxqX_mul 538508
FlxX_sub 626180
FlxqX_Flxq_mul_to_monic_pre 672998
polx_FlxX 692005
pol1_FlxX 760661
FlxqX_divrem 1078519
FlxqX_red_pre 1294103
FlxqX_divrem_pre 1583051
FlxqX_mul_pre 1729274
FlxqX_rem_pre 2116270
Kronecker_to_FlxqX_pre 2450573
FlxX_to_ZXX 2781279
zxX_to_FlxX 2861879
FlxY_degreex 3066158
FlxqX_divrem_basecase 3219355
get_FlxqX_red 3699820
zxX_to_Kronecker 3822170
zxX_to_Kronecker_spec 4537532
ZXX_to_FlxX 4705788
FlxY_eval_powers_pre 7587254
FlxY_evalx_powers_pre 11309079
FlxY_evalx_pre 14260740
FlxX_renormalize 17960829

Generated by: LCOV version 2.0-1