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 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 - Flx.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.8.0 lcov report (development 18948-dd2a64a) Lines: 2608 2892 90.2 %
Date: 2016-05-28 Functions: 312 344 90.7 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1332 1643 81.1 %

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 122438
Fl2_inv_pre 52882
Fl2_mul_pre 2791681
Fl2_norm_pre 21419215
Fl2_pow_pre 182369
Fl2_sqr_pre 1270013
Fl2_sqrtn_pre 20523
Fl_Flxq_log 10591
Fl_to_Flx 1283312
Flc_to_ZC 3928073
Flm_to_FlxV 205533
Flm_to_FlxX 15921
Flm_to_ZM 403021
FlvV_polint_tree 294693
Flv_Flm_polint 11364
Flv_inv 19080
Flv_inv_indir 8677
Flv_inv_inplace 0
Flv_inv_pre 1045
Flv_inv_pre_indir 96237
Flv_inv_pre_inplace 84790
Flv_polint 7715
Flv_prod 0
Flv_prod_pre 56
Flv_producttree 19079
Flv_roots_to_pol 234671
Flv_to_Flx 3846123
Flv_to_ZV 1185
FlxC_to_ZXC 15009
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2385
FlxM_mul2 1653
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 427
FlxT_red 165944
FlxV_Flc_mul 12810
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 220891
FlxV_to_ZXV 155667
FlxXC_to_ZXXC 0
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 180
FlxX_Fl_mul 205
FlxX_Flx_add 9801
FlxX_Flx_mul 784406
FlxX_add 645470
FlxX_deriv 59066
FlxX_double 205
FlxX_lgrenormalizespec 213819
FlxX_neg 1265
FlxX_recipspec 157427
FlxX_renormalize 7392944
FlxX_shift 0
FlxX_sub 120959
FlxX_subspec 76667
FlxX_swap 10892
FlxX_to_Flm 7312
FlxX_to_FlxC 2622
FlxX_to_ZXX 633568
FlxX_triple 0
FlxY_Flx_div 4731
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 140770
FlxY_Flxq_evalx 0
FlxY_eval_powers_pre 242290
FlxY_evalx 333812
FlxY_evalx_powers_pre 370782
FlxYqq_mul 2114
FlxYqq_pow 2226
FlxYqq_redswap 5446
FlxYqq_sqr 3332
Flx_Fl2_eval_pre 765492
Flx_Fl_add 2097462
Flx_Fl_mul 32079761
Flx_Fl_mul_to_monic 2141181
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 19081
Flx_FlxM_qmul 1650
Flx_FlxqV_eval 2715317
Flx_Flxq_eval 670232
Flx_Frobenius 4172312
Flx_add 39568468
Flx_addmulmul 4776
Flx_addshift 3936
Flx_addspec 7816
Flx_deflate 21917
Flx_deriv 4386376
Flx_div_by_X_x 8457113
Flx_divrem 65968448
Flx_divrem_Barrett_noGC 1696822
Flx_divrem_Barrettspec 1697054
Flx_divrem_basecase 27248055
Flx_double 3701646
Flx_equal 21629548
Flx_eval 9191181
Flx_eval2BILspec 15257109
Flx_eval_powers_pre 1585739
Flx_eval_pre 9191186
Flx_eval_pre_i 9114015
Flx_extgcd 5474512
Flx_extgcd_basecase 5474512
Flx_extgcd_halfgcd 3
Flx_extresultant 146244
Flx_gcd 19227846
Flx_gcd_basecase 18519368
Flx_get_red 33548286
Flx_halfgcd 32966
Flx_halfgcd_basecase 30604
Flx_halfgcd_i 32966
Flx_halfgcd_split 2362
Flx_halve 12532
Flx_inflate 28237
Flx_invBarrett 82138
Flx_invBarrett_Newton 3009
Flx_invBarrett_basecase 79110
Flx_is_l_pow 4648
Flx_is_smooth 86212
Flx_is_smooth_squarefree 90860
Flx_is_squarefree 3410361
Flx_lgrenormalizespec 3443052
Flx_matFrobenius 212113
Flx_mod_Xn1 19
Flx_mod_Xnm1 611275
Flx_mul 164441321
Flx_mullimb 345517448
Flx_mullimb_ok 491136291
Flx_mulspec 167883552
Flx_mulspec_basecase 106789015
Flx_mulspec_halfmulii 6900720
Flx_mulspec_mulii 1157313
Flx_mulspec_mulii_inflate 7522601
Flx_mulspec_quartmulii 31339029
Flx_multhreshold 33440015
Flx_neg 1099775
Flx_neg_inplace 1912
Flx_negspec 1099788
Flx_normalize 14936915
Flx_powu 4713
Flx_recip 0
Flx_recipspec 3564928
Flx_red 244045
Flx_rem 325243937
Flx_rem_basecase 277419205
Flx_renormalize 933079779
Flx_rescale 1295
Flx_resultant 1604558
Flx_shift 1727663
Flx_shiftip 245700633
Flx_splitting 132010
Flx_sqr 92196773
Flx_sqrspec 92224585
Flx_sqrspec_basecase 56231858
Flx_sqrspec_halfsqri 8054145
Flx_sqrspec_quartsqri 10008743
Flx_sqrspec_sqri 17668038
Flx_sqrspec_sqri_inflate 212478
Flx_sub 74085604
Flx_subspec 1697044
Flx_to_Flv 2319289
Flx_to_FlxX 21427
Flx_to_ZX 5387295
Flx_to_ZX_inplace 43992659
Flx_to_int_halfspec 21855580
Flx_to_int_quartspec 72686450
Flx_triple 1588176
Flx_val 694306
Flx_valrem 5975781
Flxn_mul 95790
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 112560
FlxqV_roots_to_pol 533
FlxqXM_FlxqX_mul2 405
FlxqXM_mul2 363
FlxqXQV_autpow 72305
FlxqXQV_autsum 14603
FlxqXQ_autpow_mul 755
FlxqXQ_autpow_sqr 73327
FlxqXQ_autsum_mul 33344
FlxqXQ_autsum_sqr 22088
FlxqXQ_div 0
FlxqXQ_inv 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 180
FlxqXQ_mul 414666
FlxqXQ_pow 0
FlxqXQ_powers 34252
FlxqXQ_powu 91710
FlxqXQ_sqr 343565
FlxqXV_prod 533
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 70020
FlxqX_FlxqXQ_eval 74082
FlxqX_Flxq_mul 104852
FlxqX_Flxq_mul_to_monic 193599
FlxqX_addmulmul 810
FlxqX_divrem 466852
FlxqX_divrem_Barrett_noGC 58600
FlxqX_divrem_Barrettspec 76667
FlxqX_divrem_basecase 1619166
FlxqX_extgcd 6979
FlxqX_extgcd_basecase 6979
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 216599
FlxqX_gcd_basecase 207856
FlxqX_get_red 356921
FlxqX_halfgcd 768
FlxqX_halfgcd_basecase 393
FlxqX_halfgcd_i 768
FlxqX_halfgcd_split 375
FlxqX_invBarrett 6205
FlxqX_invBarrett_Newton 4093
FlxqX_invBarrett_basecase 2049
FlxqX_mul 467490
FlxqX_mulspec 196294
FlxqX_normalize 165802
FlxqX_powu 10115
FlxqX_red 1255956
FlxqX_rem 1545937
FlxqX_safegcd 4466
FlxqX_sqr 357033
Flxq_autpow 303093
Flxq_autpow_mul 20422
Flxq_autpow_sqr 375632
Flxq_autsum 296815
Flxq_autsum_mul 599550
Flxq_autsum_sqr 353386
Flxq_auttrace 43232
Flxq_auttrace_mul 57512
Flxq_auttrace_sqr 45619
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 3662191
Flxq_easylog 302555
Flxq_inv 5365419
Flxq_invsafe 5393216
Flxq_is2npower 280
Flxq_issquare 351980
Flxq_log 31380
Flxq_lroot 24920
Flxq_lroot_fast 112560
Flxq_matrix_pow 218665
Flxq_minpoly 24002
Flxq_mul 89347587
Flxq_norm 377754
Flxq_order 12228
Flxq_pow 21497485
Flxq_pow_Frobenius 21028643
Flxq_powers 1948435
Flxq_powu 5703357
Flxq_sqr 91744907
Flxq_sqrt 156970
Flxq_sqrtn 163258
Flxq_trace 2946
Flxq_transmul 146198
Flxq_transmul_init 56376
Fly_to_FlxY 1529
Kronecker_to_FlxqX 1020817
RgX_to_Flx 227584
Rg_to_F2 1461130
Rg_to_Fl 29149928
Rg_to_Flxq 1604875
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1168932
ZXV_to_FlxV 0
ZXXT_to_FlxXT 8876
ZXXV_to_FlxXV 0
ZXX_to_FlxX 682720
ZX_to_Flx 110377167
Z_mod2BIL_Flx 7740065
Z_mod2BIL_Flx_2 7732067
Z_mod2BIL_Flx_3 7307
Z_to_Flx 1792739
_Fl2_mul 497794
_Fl2_pow 182368
_Fl2_rand 30871
_Fl2_sqr 1269980
_Flx_mul 4134753
_FlxqXQ_add 640304
_FlxqXQ_cmul 784406
_FlxqXQ_mul 379926
_FlxqXQ_one 412335
_FlxqXQ_red 398993
_FlxqXQ_sqr 342158
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 1635
_FlxqX_sqr 10136
_Flxq_add 16301332
_Flxq_cmul 18857158
_Flxq_equal0 70487
_Flxq_inv 3438
_Flxq_mul 67044342
_Flxq_neg 3515
_Flxq_one 8245375
_Flxq_pow 21011649
_Flxq_rand 313316
_Flxq_red 7377643
_Flxq_rmul 638539
_Flxq_s 12011
_Flxq_sqr 83490209
_Flxq_sub 0
_Flxq_zero 222238
bounded_order 642329
gener_Flxq 8622
get_Flx_degree 27472771
get_Flx_mod 7857291
get_Flx_red 391274740
get_Flx_var 15842335
get_FlxqXQ_algebra 205
get_FlxqX_degree 34300
get_FlxqX_mod 0
get_FlxqX_red 2012789
get_FlxqX_var 432192
get_Flxq_field 635
get_Flxq_star 205011
int_to_Flx 18886248
int_to_Flx_half 14954873
int_to_Flx_quart 41348354
kron_pack_Flx_spec 0
kron_pack_Flx_spec_2 0
kron_pack_Flx_spec_3 0
kron_pack_Flx_spec_bits 24426
kron_pack_Flx_spec_half 0
kron_unpack_Flx 0
kron_unpack_Flx_2 0
kron_unpack_Flx_3 0
kron_unpack_Flx_bits_narrow 6563
kron_unpack_Flx_bits_wide 7000
matid2_FlxM 16
matid2_FlxXM 0
maxlengthcoeffpol 279227457
mkF2 4931349
monomial_Flx 28188
pol1_FlxX 815410
polx_FlxX 31760
random_Flx 764546
random_FlxqX 0
zxX_to_FlxX 123385
zxX_to_Kronecker 1292013
zxX_to_Kronecker_spec 1684601
zx_to_Flx 383352

Generated by: LCOV version 1.9