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 30622-caa25a75db) Lines: 1198 1484 80.7 %
Date: 2026-01-22 09:18:00 Functions: 150 198 75.8 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Flm_to_FlxX 195804
FlxXC_sub 0
FlxXC_to_ZXXC 11269
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 0
FlxXV_to_FlxM_lg 138197
FlxX_Fl_mul 761
FlxX_Laplace 1216
FlxX_add 348252
FlxX_blocks 13196
FlxX_blocks_FlxM 138197
FlxX_deriv 84598
FlxX_double 761
FlxX_integXn 4804
FlxX_invLaplace 2432
FlxX_lgrenormalizespec 326183
FlxX_neg 2657
FlxX_recipspec 234467
FlxX_renormalize 17073779
FlxX_shift 71541
FlxX_sub 564531
FlxX_subspec 109852
FlxX_swap 159704
FlxX_to_Flm 53050
FlxX_to_Flx 363110
FlxX_to_FlxC 319405
FlxX_to_ZXX 2462059
FlxX_translate1 0
FlxX_triple 0
FlxXn_recip 6080
FlxXn_red 66157
FlxY_Flx_add 245
FlxY_Flx_div 0
FlxY_Flx_div_pre 7453
FlxY_Flx_mul 0
FlxY_Flx_mul_pre 0
FlxY_Flx_sub 11628
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 0
FlxY_FlxqV_evalx_pre 136232
FlxY_Flxq_evalx 0
FlxY_Flxq_evalx_pre 0
FlxY_degreex 3026870
FlxY_eval_powers_pre 7369102
FlxY_evalx 238
FlxY_evalx_powers_pre 10985364
FlxY_evalx_pre 13945052
FlxYqq_mul 9446
FlxYqq_pow 34364
FlxYqq_redswap 79852
FlxYqq_sqr 70406
FlxqV_roots_to_deg1 27274
FlxqV_roots_to_pol 27274
FlxqXC_FlxqXQV_eval 0
FlxqXC_FlxqXQV_eval_pre 0
FlxqXC_FlxqXQ_eval 0
FlxqXM_FlxqX_mul2 6626
FlxqXM_mul2 3276
FlxqXQ_autpow 0
FlxqXQ_autpow_mul 3702
FlxqXQ_autpow_pre 69233
FlxqXQ_autpow_sqr 72620
FlxqXQ_autsum 0
FlxqXQ_autsum_mul 29955
FlxqXQ_autsum_pre 12091
FlxqXQ_autsum_sqr 18552
FlxqXQ_auttrace 0
FlxqXQ_auttrace_mul 27
FlxqXQ_auttrace_pre 332
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 219
FlxqXQ_mul 1947
FlxqXQ_mul_pre 470387
FlxqXQ_pow 35
FlxqXQ_pow_pre 91
FlxqXQ_powers 0
FlxqXQ_powers_pre 108101
FlxqXQ_powu 0
FlxqXQ_powu_pre 81977
FlxqXQ_sqr 0
FlxqXQ_sqr_pre 261486
FlxqXQ_transmul 1045
FlxqXQ_transmul_init 496
FlxqXV_prod 218216
FlxqX_FlxqXM_qmul 3276
FlxqX_FlxqXQV_eval 0
FlxqX_FlxqXQV_eval_pre 138197
FlxqX_FlxqXQ_eval 0
FlxqX_FlxqXQ_eval_pre 76661
FlxqX_Flxq_mul 0
FlxqX_Flxq_mul_pre 135620
FlxqX_Flxq_mul_to_monic 0
FlxqX_Flxq_mul_to_monic_pre 628811
FlxqX_Newton 0
FlxqX_Newton_pre 2432
FlxqX_addmulmul 13530
FlxqX_composedsum 1216
FlxqX_disc 14
FlxqX_div_by_X_x 51898
FlxqX_div_by_X_x_pre 51898
FlxqX_divrem 957420
FlxqX_divrem_Barrett 103236
FlxqX_divrem_Barrettspec 110125
FlxqX_divrem_basecase 2958773
FlxqX_divrem_pre 1400804
FlxqX_eval 0
FlxqX_extgcd 116726
FlxqX_extgcd_basecase 116740
FlxqX_extgcd_halfgcd 130
FlxqX_extgcd_pre 116740
FlxqX_fromNewton 0
FlxqX_fromNewton_pre 1216
FlxqX_gcd 23378
FlxqX_gcd_basecase 166588
FlxqX_gcd_pre 175598
FlxqX_get_red 371
FlxqX_get_red_pre 491033
FlxqX_halfgcd 0
FlxqX_halfgcd_all 7
FlxqX_halfgcd_all_i 770
FlxqX_halfgcd_all_pre 770
FlxqX_halfgcd_pre 248
FlxqX_halfres 0
FlxqX_halfres_basecase 4030
FlxqX_halfres_i 7396
FlxqX_halfres_split 3366
FlxqX_halfres_update 0
FlxqX_invBarrett 76
FlxqX_invBarrett_Newton 6649
FlxqX_invBarrett_basecase 1419
FlxqX_invBarrett_pre 8068
FlxqX_mul 63586
FlxqX_mul_pre 1640140
FlxqX_mulhigh_i 17996
FlxqX_mulspec 291588
FlxqX_normalize 133
FlxqX_normalize_pre 188771
FlxqX_powu 0
FlxqX_powu_pre 10248
FlxqX_red 0
FlxqX_red_pre 1216989
FlxqX_rem 5949
FlxqX_rem_pre 2008564
FlxqX_resultant 56
FlxqX_resultant_basecase 56
FlxqX_resultant_pre 56
FlxqX_safegcd 88045
FlxqX_saferem 351982
FlxqX_saferesultant 11013
FlxqX_sqr 1218
FlxqX_sqr_pre 343393
FlxqXn_expint 0
FlxqXn_expint_pre 1216
FlxqXn_inv 0
FlxqXn_inv_pre 2432
FlxqXn_mul 0
FlxqXn_mul_pre 40391
FlxqXn_mulhigh 13196
FlxqXn_sqr 0
FlxqXn_sqr_pre 0
Flxq_addmul_pre 103796
Fly_to_FlxY 2498
Kronecker_to_FlxqX 0
Kronecker_to_FlxqX_pre 2275126
RgX_to_FlxqX 151542
ZXXT_to_FlxXT 512
ZXXV_to_FlxXV 0
ZXX_to_FlxX 4345541
_FlxqXQ_mul 178841
_FlxqXQ_one 111136
_FlxqXQ_red 6044
_FlxqXQ_sqr 261040
_FlxqXQ_zero 316
_FlxqX_add 0
_FlxqX_mul 529800
_FlxqX_sqr 10283
_FlxqX_sub 5526
get_FlxqXQ_algebra 761
get_FlxqX_algebra 0
get_FlxqX_red 3409863
matJ2_FlxXM 0
matid2_FlxXM 16
pol1_FlxX 741351
polx_FlxX 690413
polxn_FlxX 248
random_FlxqX 580
zlxX_translate1 0
zxX_to_FlxX 2822213
zxX_to_Kronecker 3623671
zxX_to_Kronecker_spec 4206848

Generated by: LCOV version 1.16