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 - RgX.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.16.1 lcov report (development 28697-a4113027d0) Lines: 1612 1770 91.1 %
Date: 2023-09-29 07:48:33 Functions: 199 218 91.3 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Kronecker_to_mod 178637
QXQC_to_mod_shallow 13384
QXQM_to_mod_shallow 6244
QXQV_to_mod 18186
QXQXV_to_mod 12495
QXQX_homogenous_evalpow 1652
QXQX_to_mod 37184
QXQX_to_mod_shallow 158686
QXQ_powers 8103
QXQ_to_mod 166603
QXQ_to_mod_shallow 701015
QXV_QXQ_eval 2163
QXY_QXQ_evalx 231
QX_ZXQV_eval 5362
RgM_to_RgXV 302458
RgM_to_RgXV_reverse 7091
RgM_to_RgXX 23118
RgV_to_RgM 292116
RgV_to_RgX 1494928
RgV_to_RgX_reverse 190473
RgXQC_red 63819
RgXQM_mul 322
RgXQM_red 12243
RgXQV_RgXQ_mul 133
RgXQV_factorback 7035
RgXQV_red 1204
RgXQX_RgXQ_mul 35
RgXQX_divrem 135712
RgXQX_mul 0
RgXQX_powers 0
RgXQX_pseudodivrem 11895
RgXQX_pseudorem 136749
RgXQX_red 454717
RgXQX_sqr 0
RgXQX_translate 22508
RgXQ_matrix_pow 2891
RgXQ_norm 5158
RgXQ_pow 109385
RgXQ_powers 4207
RgXQ_powu 114953
RgXQ_trace 441
RgXV_RgV_eval 2947
RgXV_maxdegree 588
RgXV_prod 0
RgXV_rescale 2289
RgXV_to_RgM 77242
RgXV_unscale 5649
RgXX_to_RgM 322
RgXY_degreex 288
RgXY_derivx 3052
RgXY_swap 952
RgXY_swapspec 31208
RgX_RgV_eval 166768
RgX_RgXQV_eval 0
RgX_RgXQ_eval 400367
RgX_RgXnV_eval 966
RgX_RgXn_eval 0
RgX_Rg_add 18573180
RgX_Rg_add_shallow 65654
RgX_Rg_div 28764552
RgX_Rg_divexact 3940488
RgX_Rg_eval_bk 0
RgX_Rg_mul 120488103
RgX_Rg_sub 185226
RgX_add 73028151
RgX_addmulXn 527499
RgX_addmulXn_shallow 7441334
RgX_addspec 234940
RgX_addspec_shallow 7467405
RgX_affine 0
RgX_blocks 2740856
RgX_deflate 739813
RgX_deriv 601595
RgX_digits 6923
RgX_div_by_X_x 243328
RgX_divrem 12916367
RgX_divrem_i 18381102
RgX_divs 2660
RgX_equal 23235307
RgX_even_odd 29813127
RgX_homogenize 18732
RgX_homogenous_evalpow 225890
RgX_inflate 796793
RgX_integXn 58715
RgX_liftred 416180
RgX_mul 57157179
RgX_mul2n 65261
RgX_mulXn 2984854
RgX_mul_FpX 818061
RgX_mul_FpXQX 2044
RgX_mul_QXQX 163540
RgX_mul_fast 70676707
RgX_mul_i 16919200
RgX_mul_normalized 1713905
RgX_mulhigh_i 2626468
RgX_mulhigh_i2 1565731
RgX_muls 3943
RgX_mulspec 18393909
RgX_mulspec_basecase 17653858
RgX_mulspec_basecase_limb 86145391
RgX_neg 4628612
RgX_normalize 18991
RgX_pseudodivrem 11657
RgX_pseudorem 136749
RgX_recip 31150
RgX_recip_i 2338785
RgX_recip_shallow 57788
RgX_recipspec_shallow 1384789
RgX_rem 10466759
RgX_rem_FpX 67494
RgX_rem_FpXQX 70
RgX_rem_QXQX 37852
RgX_rem_fast 10466745
RgX_renormalize_lg 6081642
RgX_rescale 2449247
RgX_rotate_shallow 317037
RgX_shift 1567494
RgX_shift_shallow 127915744
RgX_splitting 43554
RgX_sqr 1128159
RgX_sqr_FpX 1365
RgX_sqr_FpXQX 196
RgX_sqr_QXQX 13396
RgX_sqr_fast 1140311
RgX_sqr_i 8742
RgX_sqrhigh_i 0
RgX_sqrhigh_i2 0
RgX_sqrspec 8820
RgX_sqrspec_basecase 8781
RgX_sqrspec_basecase_limb 50715
RgX_sub 43761798
RgX_to_RgC 12533602
RgX_translate 4596951
RgX_translate_basecase 4596507
RgX_unscale 18441
RgX_val 3604492
RgX_valrem 62585063
RgX_valrem_inexact 627356
RgXnV_red_shallow 483
RgXn_div 578248
RgXn_div_FpX 119
RgXn_div_FpXQX 0
RgXn_div_fast 1269147
RgXn_div_gen 2166401
RgXn_div_i 1269147
RgXn_eval 4347
RgXn_exp 0
RgXn_expint 52857
RgXn_inv 806975
RgXn_inv_FpX 91
RgXn_inv_FpXQX 0
RgXn_inv_fast 897466
RgXn_inv_i 897467
RgXn_mul 10893081
RgXn_mul2 9286666
RgXn_mul_basecase 6530911
RgXn_mulhigh 2567738
RgXn_powers 483
RgXn_powu 0
RgXn_powu_i 2286
RgXn_recip_shallow 643735
RgXn_red_shallow 7845993
RgXn_reverse 154
RgXn_sqr 12152
RgXn_sqr2 315
RgXn_sqr_basecase 0
RgXn_sqrhigh 14
RgXn_sqrt 7
RgXspec_kill0 48378141
Rg_RgX_sub 2987984
Rg_get_0 6973512
Rg_get_1 156637644
Rg_to_RgC 1255286
ZXQX_dvd 17011
ZXQ_powers 10665
ZXQ_powu 188499
ZX_unscale 998662
ZX_unscale2n 217625
ZX_unscale_div 12019
ZX_unscale_divpow 966
ZX_z_unscale 1449103
_RgX_divrem 30352
_RgX_mul 0
_ZXQmul 112844
_ZXQsqr 213348
_add 603218
_cmul 1003738
_gen_add 15701212
_gen_cmul 512818
_gen_mul 1041799
_gen_nored 1193651
_gen_one 1217298
_gen_sqr 344956
_gen_sub 0
_gen_zero 24184
_mul 270966
_mulXn 4528
_one 977321
_oneXn 1939
_pow 87194
_red 702443
_sqr 73568
_sqrXn 11893
_sub 0
_zero 826
_zeroXn 0
brent_kung_optpow 19494639
do_QXQ_eval 2394
gen_RgXQ_eval_powers 13215867
gen_bkeval 731067
gen_bkeval_powers 11762976
get_Rg_algebra 154042
rem 1304355
rfrac_deflate 98
rfrac_deflate_max 98
rfrac_deflate_order 98
zero_FpXQX_mod 532
zero_FpX_mod 152783

Generated by: LCOV version 1.14