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.1 lcov report (development 30256-57c6c2b57f) Lines: 1198 1481 80.9 %
Date: 2025-05-07 09:19:00 Functions: 150 196 76.5 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
FlxXC_sub 0
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 0
FlxX_Flx_mul 0
FlxX_translate1 0
FlxX_triple 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_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 76
FlxqXQ_pow_pre 91
FlxqX_extgcd_halfgcd 130
FlxqX_normalize 133
FlxqXQ_minpoly_pre 224
FlxY_evalx 231
FlxX_Flx_add 245
FlxqX_halfgcd_pre 253
polxn_FlxX 253
_FlxqXQ_zero 316
FlxqXQ_auttrace_pre 337
FlxqX_get_red 371
FlxqXQ_transmul_init 506
ZXXT_to_FlxXT 512
random_FlxqX 590
FlxX_Fl_mul 761
FlxX_double 761
get_FlxqXQ_algebra 761
FlxqX_halfgcd_all_i 775
FlxqX_halfgcd_all_pre 775
FlxqXQ_transmul 1071
FlxX_Laplace 1216
FlxqX_composedsum 1216
FlxqX_fromNewton_pre 1216
FlxqXn_expint_pre 1216
FlxqX_sqr 1218
FlxqX_invBarrett_basecase 1419
FlxqXQ_mul 1947
FlxX_invLaplace 2432
FlxqX_Newton_pre 2432
FlxqXn_inv_pre 2432
Fly_to_FlxY 2503
FlxX_neg 2657
FlxqXM_mul2 3276
FlxqX_FlxqXM_qmul 3276
FlxqX_halfres_split 3366
FlxqXQ_autpow_mul 3714
FlxqX_halfres_basecase 4035
FlxX_integXn 4804
_FlxqX_sub 5526
FlxqX_rem 5949
_FlxqXQ_red 6044
FlxXn_recip 6080
FlxqXM_FlxqX_mul2 6626
FlxqX_invBarrett_Newton 6711
FlxqX_halfres_i 7401
FlxY_Flx_div 7484
FlxqX_invBarrett_pre 8130
FlxqX_powu_pre 10248
_FlxqX_sqr 10283
FlxYqq_mul 10368
FlxqX_saferesultant 10601
FlxX_Flx_sub 11662
FlxqXQ_autsum_pre 12125
FlxXC_to_ZXXC 12481
FlxX_blocks 13196
FlxqXn_mulhigh 13196
FlxqX_addmulmul 13530
FlxqX_mulhigh_i 17999
FlxqXQ_autsum_sqr 18582
FlxqX_gcd 23458
FlxqXQ_autsum_mul 29983
FlxqV_roots_to_deg1 32152
FlxqV_roots_to_pol 32152
FlxYqq_pow 39226
FlxqXn_mul_pre 40414
FlxqX_div_by_X_x 51828
FlxqX_div_by_X_x_pre 51828
FlxX_to_Flm 57240
FlxqX_mul 63586
FlxXn_red 66172
FlxqXQ_autpow_pre 69275
FlxX_shift 71621
FlxqXQ_autpow_sqr 72682
FlxqX_FlxqXQ_eval_pre 76758
FlxYqq_sqr 80516
FlxqXQ_powu_pre 82058
FlxX_deriv 84253
FlxYqq_redswap 90883
FlxqX_safegcd 91227
Flxq_addmul_pre 103656
FlxqX_divrem_Barrett 103701
FlxqXQ_powers_pre 108241
FlxX_subspec 110317
FlxqX_divrem_Barrettspec 110590
_FlxqXQ_one 111276
FlxqX_extgcd 133817
FlxqX_extgcd_basecase 133827
FlxqX_extgcd_pre 133831
FlxY_FlxqV_evalx_pre 136362
FlxXV_to_FlxM_lg 138362
FlxX_blocks_FlxM 138362
FlxqX_FlxqXQV_eval_pre 138362
RgX_to_FlxqX 152096
FlxqX_Flxq_mul_pre 155140
FlxqX_gcd_basecase 166770
FlxqX_gcd_pre 175808
_FlxqXQ_mul 179118
FlxX_swap 181754
FlxqX_normalize_pre 190062
Flm_to_FlxX 221459
FlxqXV_prod 223094
FlxX_recipspec 235489
_FlxqXQ_sqr 261525
FlxqXQ_sqr_pre 261973
FlxqX_mulspec 293138
FlxX_to_FlxC 319858
FlxX_lgrenormalizespec 328043
FlxX_add 348539
FlxqX_sqr_pre 353990
FlxX_to_Flx 364768
FlxqX_saferem 366762
FlxqXQ_mul_pre 470985
FlxqX_get_red_pre 491659
_FlxqX_mul 538530
FlxX_sub 623867
FlxqX_Flxq_mul_to_monic_pre 648064
polx_FlxX 690500
pol1_FlxX 758613
FlxqX_divrem 1073683
FlxqX_red_pre 1264716
FlxqX_divrem_pre 1576260
FlxqX_mul_pre 1709742
FlxqX_rem_pre 2026017
Kronecker_to_FlxqX_pre 2356837
zxX_to_FlxX 2667338
FlxX_to_ZXX 2770973
ZXX_to_FlxX 2818277
FlxY_degreex 2871395
FlxqX_divrem_basecase 3150659
get_FlxqX_red 3602783
zxX_to_Kronecker 3773447
zxX_to_Kronecker_spec 4359711
FlxY_evalx_pre 5577940
FlxY_eval_powers_pre 6770656
FlxY_evalx_powers_pre 10099315
FlxX_renormalize 15240570

Generated by: LCOV version 1.16