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 18888-55e726a) Lines: 2522 2870 87.9 %
Date: 2016-04-30 Functions: 306 341 89.7 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1295 1641 78.9 %

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 122457
Fl2_inv_pre 52884
Fl2_mul_pre 2791696
Fl2_norm_pre 21419217
Fl2_pow_pre 182394
Fl2_sqr_pre 1270056
Fl2_sqrtn_pre 20527
Fl_Flxq_log 10593
Fl_to_Flx 1275447
Flc_to_ZC 3928031
Flm_to_FlxV 205526
Flm_to_FlxX 15871
Flm_to_ZM 403021
FlvV_polint_tree 294652
Flv_FlvV_polint 11366
Flv_inv 19081
Flv_inv_indir 8679
Flv_inv_inplace 0
Flv_inv_pre 1045
Flv_inv_pre_indir 96314
Flv_inv_pre_inplace 84866
Flv_polint 7715
Flv_prod 0
Flv_prod_pre 56
Flv_producttree 19081
Flv_roots_to_pol 234685
Flv_to_Flx 3847878
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 162316
FlxV_Flc_mul 12810
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 220884
FlxV_to_ZXV 155667
FlxXC_to_ZXXC 0
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 180
FlxX_Fl_mul 271
FlxX_Flx_add 5147
FlxX_Flx_mul 501022
FlxX_add 397136
FlxX_deriv 59059
FlxX_double 469
FlxX_lgrenormalizespec 167381
FlxX_neg 271
FlxX_recipspec 121811
FlxX_renormalize 6327548
FlxX_shift 0
FlxX_sub 126163
FlxX_subspec 59160
FlxX_swap 10892
FlxX_to_Flm 7264
FlxX_to_FlxC 2622
FlxX_to_ZXX 636816
FlxX_triple 99
FlxY_Flx_div 4502
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 100554
FlxY_Flxq_evalx 0
FlxY_eval_powers_pre 242458
FlxY_evalx 333812
FlxY_evalx_powers_pre 371137
FlxYqq_mul 2114
FlxYqq_pow 2226
FlxYqq_redswap 5446
FlxYqq_sqr 3332
Flx_Fl2_eval_pre 765492
Flx_Fl_add 2079365
Flx_Fl_mul 30176557
Flx_Fl_mul_to_monic 2141411
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 19080
Flx_FlxM_qmul 1650
Flx_FlxqV_eval 2363486
Flx_Flxq_eval 665085
Flx_Frobenius 4171115
Flx_add 27089908
Flx_addmulmul 4776
Flx_addshift 3936
Flx_addspec 7816
Flx_deflate 21902
Flx_deriv 4388657
Flx_div_by_X_x 8458562
Flx_divrem 65774402
Flx_divrem_Barrett_noGC 1699543
Flx_divrem_Barrettspec 1699781
Flx_divrem_basecase 27330642
Flx_double 3710781
Flx_equal 22527206
Flx_eval 9191188
Flx_eval2BILspec 15260271
Flx_eval_powers_pre 1587520
Flx_eval_pre 9191188
Flx_eval_pre_i 9114026
Flx_extgcd 5452853
Flx_extgcd_basecase 5452853
Flx_extgcd_halfgcd 3
Flx_extresultant 146244
Flx_gcd 19235427
Flx_gcd_basecase 18526980
Flx_get_red 33961670
Flx_halfgcd 33373
Flx_halfgcd_basecase 31011
Flx_halfgcd_i 33373
Flx_halfgcd_split 2362
Flx_halve 9969
Flx_inflate 27441
Flx_invBarrett 82273
Flx_invBarrett_Newton 2982
Flx_invBarrett_basecase 79272
Flx_is_l_pow 4691
Flx_is_smooth 86472
Flx_is_smooth_squarefree 91163
Flx_is_squarefree 3412293
Flx_lgrenormalizespec 3447739
Flx_matFrobenius 212106
Flx_mod_Xn1 19
Flx_mod_Xnm1 611312
Flx_mul 146269552
Flx_mullimb 374163101
Flx_mullimb_ok 479496841
Flx_mulspec 149721095
Flx_mulspec_basecase 107331557
Flx_mulspec_halfmulii 7734499
Flx_mulspec_mulii 1290733
Flx_mulspec_mulii_inflate 7530948
Flx_mulspec_quartmulii 14811724
Flx_multhreshold 33853004
Flx_neg 996621
Flx_neg_inplace 1912
Flx_negspec 996628
Flx_normalize 14939584
Flx_powu 4557
Flx_recip 0
Flx_recipspec 3570451
Flx_red 240790
Flx_rem 307267446
Flx_rem_basecase 263232136
Flx_renormalize 864586005
Flx_rescale 1295
Flx_resultant 1604419
Flx_shift 1727414
Flx_shiftip 231562741
Flx_splitting 131612
Flx_sqr 93004386
Flx_sqrspec 93008945
Flx_sqrspec_basecase 57082260
Flx_sqrspec_halfsqri 8057442
Flx_sqrspec_quartsqri 9909326
Flx_sqrspec_sqri 17681556
Flx_sqrspec_sqri_inflate 212392
Flx_sub 64817580
Flx_subspec 1699765
Flx_to_Flv 2318883
Flx_to_FlxX 21427
Flx_to_ZX 5460186
Flx_to_ZX_inplace 43715904
Flx_to_int_halfspec 23526406
Flx_to_int_quartspec 39532837
Flx_triple 1592190
Flx_val 694482
Flx_valrem 5974247
Flxn_mul 95887
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 112560
FlxqV_roots_to_pol 533
FlxqXM_FlxqX_mul2 0
FlxqXM_mul2 0
FlxqXQV_autpow 72298
FlxqXQV_autsum 9579
FlxqXQ_autpow_mul 741
FlxqXQ_autpow_sqr 73313
FlxqXQ_autsum_mul 13250
FlxqXQ_autsum_sqr 12042
FlxqXQ_div 1447
FlxqXQ_inv 1447
FlxqXQ_invsafe 1447
FlxqXQ_matrix_pow 180
FlxqXQ_mul 347597
FlxqXQ_pow 0
FlxqXQ_powers 14158
FlxqXQ_powu 86679
FlxqXQ_sqr 321721
FlxqXV_prod 533
FlxqX_FlxqXM_qmul 0
FlxqX_FlxqXQV_eval 29832
FlxqX_FlxqXQ_eval 74054
FlxqX_Flxq_mul 107726
FlxqX_Flxq_mul_to_monic 189148
FlxqX_addmulmul 0
FlxqX_divrem 476332
FlxqX_divrem_Barrett_noGC 41156
FlxqX_divrem_Barrettspec 59160
FlxqX_divrem_basecase 1547231
FlxqX_extgcd 8426
FlxqX_extgcd_basecase 8426
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 211554
FlxqX_gcd_basecase 203147
FlxqX_get_red 287006
FlxqX_halfgcd 0
FlxqX_halfgcd_basecase 0
FlxqX_halfgcd_i 0
FlxqX_halfgcd_split 0
FlxqX_invBarrett 5302
FlxqX_invBarrett_Newton 3491
FlxqX_invBarrett_basecase 1769
FlxqX_mul 398686
FlxqX_mulspec 153664
FlxqX_normalize 161351
FlxqX_pow 10115
FlxqX_red 1138278
FlxqX_rem 1420940
FlxqX_safegcd 4466
FlxqX_sqr 335189
Flxq_autpow 300546
Flxq_autpow_mul 20419
Flxq_autpow_sqr 373069
Flxq_autsum 289322
Flxq_autsum_mul 574841
Flxq_autsum_sqr 341106
Flxq_auttrace 43187
Flxq_auttrace_mul 57474
Flxq_auttrace_sqr 45582
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 3665991
Flxq_easylog 302544
Flxq_inv 5339921
Flxq_invsafe 5369165
Flxq_is2npower 280
Flxq_issquare 352011
Flxq_log 31380
Flxq_lroot 24920
Flxq_lroot_fast 112560
Flxq_matrix_pow 218658
Flxq_minpoly 23973
Flxq_mul 82939753
Flxq_norm 377763
Flxq_order 12231
Flxq_pow 22380922
Flxq_pow_Frobenius 21906379
Flxq_powers 1905970
Flxq_powu 5702178
Flxq_sqr 92572959
Flxq_sqrt 154414
Flxq_sqrtn 160702
Flxq_trace 2946
Flxq_transmul 146258
Flxq_transmul_init 56408
Fly_to_FlxY 1483
Kronecker_to_FlxqX 887539
RgX_to_Flx 227556
Rg_to_F2 1461053
Rg_to_Fl 29128592
Rg_to_Flxq 1604875
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1171264
ZXV_to_FlxV 0
ZXXT_to_FlxXT 8862
ZXXV_to_FlxXV 0
ZXX_to_FlxX 689220
ZX_to_Flx 110020058
Z_mod2BIL_Flx 7748379
Z_mod2BIL_Flx_2 7739960
Z_mod2BIL_Flx_3 7089
Z_to_Flx 1795552
_Fl2_mul 497810
_Fl2_pow 182394
_Fl2_rand 30873
_Fl2_sqr 1270009
_Flx_mul 4135876
_FlxqXQ_add 397136
_FlxqXQ_cmul 501022
_FlxqXQ_mul 329907
_FlxqXQ_one 327167
_FlxqXQ_red 317991
_FlxqXQ_sqr 319039
_FlxqXQ_zero 0
_FlxqX_mul 1635
_FlxqX_sqr 10136
_Flxq_add 14769585
_Flxq_cmul 17022881
_Flxq_equal0 70487
_Flxq_inv 3438
_Flxq_mul 68677193
_Flxq_neg 3515
_Flxq_one 7842836
_Flxq_pow 21889389
_Flxq_rand 308374
_Flxq_red 6973807
_Flxq_rmul 638539
_Flxq_s 12011
_Flxq_sqr 84368627
_Flxq_zero 167790
bounded_order 634824
gener_Flxq 8615
get_Flx_degree 28086081
get_Flx_mod 7675107
get_Flx_red 373097516
get_Flx_var 15147816
get_FlxqX_degree 14206
get_FlxqX_mod 1447
get_FlxqX_red 1897272
get_FlxqX_var 346034
get_Flxq_field 635
get_Flxq_star 202459
int_to_Flx 19027060
int_to_Flx_half 15791938
int_to_Flx_quart 24721794
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 265453122
mkF2 4931485
monomial_Flx 28204
pol1_FlxX 713887
polx_FlxX 31760
random_Flx 754559
random_FlxqX 0
zxX_to_FlxX 123575
zxX_to_Kronecker 1132561
zxX_to_Kronecker_spec 1439889
zx_to_Flx 384062

Generated by: LCOV version 1.9