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) Hit Total Coverage
Test: PARI/GP v2.18.0 lcov report (development 29806-4d001396c7) Lines: 1195 1473 81.1 %
Date: 2024-12-22 09:08:28 Functions: 149 195 76.4 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Flm_to_FlxX 221472
FlxXC_sub 0
FlxXC_to_ZXXC 12551
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 0
FlxXV_to_FlxM_lg 139284
FlxX_Fl_mul 761
FlxX_Flx_add 245
FlxX_Flx_mul 0
FlxX_Flx_sub 11729
FlxX_Laplace 1195
FlxX_add 346158
FlxX_blocks 13027
FlxX_blocks_FlxM 139284
FlxX_deriv 82649
FlxX_double 761
FlxX_integXn 4741
FlxX_invLaplace 2390
FlxX_lgrenormalizespec 325174
FlxX_neg 2636
FlxX_recipspec 233162
FlxX_renormalize 15228266
FlxX_shift 71731
FlxX_sub 624853
FlxX_subspec 109012
FlxX_swap 181476
FlxX_to_Flm 55434
FlxX_to_Flx 365335
FlxX_to_FlxC 323942
FlxX_to_ZXX 2772717
FlxX_translate1 0
FlxX_triple 0
FlxXn_recip 5975
FlxXn_red 65510
FlxY_Flx_div 7575
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 0
FlxY_FlxqV_evalx_pre 137257
FlxY_Flxq_evalx 0
FlxY_Flxq_evalx_pre 0
FlxY_degreex 2884294
FlxY_eval_powers_pre 6821341
FlxY_evalx 231
FlxY_evalx_powers_pre 10163650
FlxY_evalx_pre 5574549
FlxYqq_mul 10316
FlxYqq_pow 39198
FlxYqq_redswap 90741
FlxYqq_sqr 80428
FlxqV_roots_to_deg1 32138
FlxqV_roots_to_pol 32138
FlxqXC_FlxqXQV_eval 0
FlxqXC_FlxqXQV_eval_pre 0
FlxqXC_FlxqXQ_eval 0
FlxqXM_FlxqX_mul2 6651
FlxqXM_mul2 3289
FlxqXQ_autpow 0
FlxqXQ_autpow_mul 3735
FlxqXQ_autpow_pre 69303
FlxqXQ_autpow_sqr 72666
FlxqXQ_autsum 0
FlxqXQ_autsum_mul 30428
FlxqXQ_autsum_pre 12192
FlxqXQ_autsum_sqr 18841
FlxqXQ_auttrace 0
FlxqXQ_auttrace_mul 27
FlxqXQ_auttrace_pre 375
FlxqXQ_auttrace_sqr 20
FlxqXQ_div 0
FlxqXQ_div_pre 0
FlxqXQ_inv 14
FlxqXQ_inv_pre 14
FlxqXQ_invsafe 0
FlxqXQ_invsafe_pre 14
FlxqXQ_matrix_pow 0
FlxqXQ_minpoly 62
FlxqXQ_minpoly_pre 262
FlxqXQ_mul 1947
FlxqXQ_mul_pre 470036
FlxqXQ_pow 35
FlxqXQ_pow_pre 91
FlxqXQ_powers 0
FlxqXQ_powers_pre 108743
FlxqXQ_powu 0
FlxqXQ_powu_pre 82153
FlxqXQ_sqr 0
FlxqXQ_sqr_pre 263889
FlxqXQ_transmul 1364
FlxqXQ_transmul_init 640
FlxqXV_prod 223081
FlxqX_FlxqXM_qmul 3289
FlxqX_FlxqXQV_eval 0
FlxqX_FlxqXQV_eval_pre 139284
FlxqX_FlxqXQ_eval 0
FlxqX_FlxqXQ_eval_pre 76763
FlxqX_Flxq_mul 0
FlxqX_Flxq_mul_pre 155101
FlxqX_Flxq_mul_to_monic 0
FlxqX_Flxq_mul_to_monic_pre 636022
FlxqX_Newton 0
FlxqX_Newton_pre 2390
FlxqX_addmulmul 13580
FlxqX_composedsum 1195
FlxqX_disc 14
FlxqX_div_by_X_x 53700
FlxqX_div_by_X_x_pre 53700
FlxqX_divrem 1074060
FlxqX_divrem_Barrett 102410
FlxqX_divrem_Barrettspec 109285
FlxqX_divrem_basecase 3145692
FlxqX_divrem_pre 1576740
FlxqX_eval 0
FlxqX_extgcd 133812
FlxqX_extgcd_basecase 133832
FlxqX_extgcd_halfgcd 130
FlxqX_extgcd_pre 133826
FlxqX_fromNewton 0
FlxqX_fromNewton_pre 1195
FlxqX_gcd 23646
FlxqX_gcd_basecase 166986
FlxqX_gcd_pre 176128
FlxqX_get_red 371
FlxqX_get_red_pre 493432
FlxqX_halfgcd 0
FlxqX_halfgcd_all 7
FlxqX_halfgcd_all_i 844
FlxqX_halfgcd_all_pre 844
FlxqX_halfgcd_pre 320
FlxqX_halfres 0
FlxqX_halfres_basecase 4133
FlxqX_halfres_i 7495
FlxqX_halfres_split 3362
FlxqX_halfres_update 0
FlxqX_invBarrett 76
FlxqX_invBarrett_Newton 6697
FlxqX_invBarrett_basecase 1340
FlxqX_invBarrett_pre 8037
FlxqX_mul 63691
FlxqX_mul_pre 1709626
FlxqX_mulhigh_i 17768
FlxqX_mulspec 290346
FlxqX_normalize 133
FlxqX_normalize_pre 190400
FlxqX_powu 0
FlxqX_powu_pre 10248
FlxqX_red 0
FlxqX_red_pre 1260816
FlxqX_rem 5949
FlxqX_rem_pre 2016185
FlxqX_resultant 56
FlxqX_resultant_basecase 56
FlxqX_resultant_pre 56
FlxqX_safegcd 89123
FlxqX_saferem 356495
FlxqX_saferesultant 9009
FlxqX_sqr 1260
FlxqX_sqr_pre 355860
FlxqXn_expint 0
FlxqXn_expint_pre 1195
FlxqXn_inv 0
FlxqXn_inv_pre 2390
FlxqXn_mul 0
FlxqXn_mul_pre 39975
FlxqXn_mulhigh 13027
FlxqXn_sqr 0
FlxqXn_sqr_pre 0
Flxq_addmul_pre 107400
Fly_to_FlxY 2535
Kronecker_to_FlxqX 0
Kronecker_to_FlxqX_pre 2355778
RgX_to_FlxqX 152647
ZXXT_to_FlxXT 512
ZXXV_to_FlxXV 0
ZXX_to_FlxX 2815991
_FlxqXQ_add 0
_FlxqXQ_mul 180037
_FlxqXQ_one 111778
_FlxqXQ_red 6044
_FlxqXQ_sqr 263448
_FlxqXQ_sub 5526
_FlxqXQ_zero 316
_FlxqX_mul 538461
_FlxqX_sqr 10283
get_FlxqXQ_algebra 761
get_FlxqX_red 3593562
matJ2_FlxXM 0
matid2_FlxXM 0
pol1_FlxX 760932
polx_FlxX 690449
polxn_FlxX 320
random_FlxqX 695
zlxX_translate1 0
zxX_to_FlxX 2680035
zxX_to_Kronecker 3775100
zxX_to_Kronecker_spec 4355781

Generated by: LCOV version 1.16