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 19214-1621e44) Lines: 2605 2898 89.9 %
Date: 2016-07-26 07:10:39 Functions: 313 345 90.7 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 599564
Fl2_inv_pre 259197
Fl2_mul_pre 4848836
Fl2_norm_pre 21463909
Fl2_pow_pre 888109
Fl2_sqr_pre 6577701
Fl2_sqrtn_pre 95261
Fl_Flxq_log 10591
Fl_to_Flx 1381378
Flc_to_ZC 3995182
Flm_to_FlxV 207101
Flm_to_FlxX 15846
Flm_to_ZM 436446
FlvV_polint_tree 658164
Flv_Flm_polint 30149
Flv_inv 37719
Flv_inv_indir 24881
Flv_inv_inplace 0
Flv_inv_pre 7541
Flv_inv_pre_indir 310773
Flv_inv_pre_inplace 290391
Flv_polint 7573
Flv_prod 0
Flv_prod_pre 1883
Flv_producttree 37722
Flv_roots_to_pol 550056
Flv_to_Flx 7302793
Flv_to_ZV 1848
FlxC_to_ZXC 15009
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2412
FlxM_mul2 1639
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 427
FlxT_red 157741
FlxV_Flc_mul 12810
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 222459
FlxV_to_ZXV 156718
FlxXC_to_ZXXC 0
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 180
FlxX_Fl_mul 205
FlxX_Flx_add 9846
FlxX_Flx_mul 820665
FlxX_add 669724
FlxX_deriv 59066
FlxX_double 205
FlxX_lgrenormalizespec 236237
FlxX_neg 1265
FlxX_recipspec 164675
FlxX_renormalize 7855480
FlxX_shift 0
FlxX_sub 133022
FlxX_subspec 79793
FlxX_swap 10892
FlxX_to_Flm 6535
FlxX_to_FlxC 2622
FlxX_to_ZXX 469220
FlxX_triple 0
FlxY_Flx_div 4504
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 152763
FlxY_Flxq_evalx 0
FlxY_degreex 895875
FlxY_eval_powers_pre 1735258
FlxY_evalx 323176
FlxY_evalx_powers_pre 2721140
FlxYqq_mul 2114
FlxYqq_pow 2226
FlxYqq_redswap 5446
FlxYqq_sqr 3332
Flx_Fl2_eval_pre 765492
Flx_Fl_add 7156284
Flx_Fl_mul 35649849
Flx_Fl_mul_to_monic 7024803
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 37723
Flx_FlxM_qmul 1636
Flx_FlxqV_eval 2765136
Flx_Flxq_eval 695216
Flx_Frobenius 3505793
Flx_add 44040582
Flx_addmulmul 4830
Flx_addshift 3006
Flx_addspec 5766
Flx_deflate 67718
Flx_deriv 4511734
Flx_div_by_X_x 27090917
Flx_divrem 67013588
Flx_divrem_Barrett_noGC 1736487
Flx_divrem_Barrettspec 1741890
Flx_divrem_basecase 30061397
Flx_double 5825781
Flx_equal 21076896
Flx_eval 9237362
Flx_eval2BILspec 37873853
Flx_eval_powers_pre 11891606
Flx_eval_pre 9241284
Flx_eval_pre_i 9161405
Flx_extgcd 7511197
Flx_extgcd_basecase 7511197
Flx_extgcd_halfgcd 3
Flx_extresultant 81382
Flx_gcd 29993491
Flx_gcd_basecase 29379277
Flx_get_red 36494992
Flx_halfgcd 35520
Flx_halfgcd_basecase 33134
Flx_halfgcd_i 35520
Flx_halfgcd_split 2386
Flx_halve 12526
Flx_inflate 25793
Flx_invBarrett 85095
Flx_invBarrett_Newton 4390
Flx_invBarrett_basecase 80703
Flx_is_l_pow 4725
Flx_is_smooth 88165
Flx_is_smooth_squarefree 92890
Flx_is_squarefree 3411229
Flx_lgrenormalizespec 3549113
Flx_matFrobenius 213681
Flx_mod_Xn1 19
Flx_mod_Xnm1 4549408
Flx_mul 213963076
Flx_mullimb 558837460
Flx_mullimb_ok 744311762
Flx_mulspec 217577871
Flx_mulspec_basecase 150769241
Flx_mulspec_halfmulii 6845112
Flx_mulspec_mulii 5546620
Flx_mulspec_mulii_inflate 9440647
Flx_mulspec_quartmulii 31659502
Flx_multhreshold 36389987
Flx_neg 1136408
Flx_neg_inplace 1263
Flx_negspec 1136398
Flx_normalize 35560679
Flx_powu 4460
Flx_recip 0
Flx_recipspec 3656306
Flx_red 236753
Flx_rem 500807944
Flx_rem_basecase 437028065
Flx_renormalize 1275748962
Flx_rescale 495
Flx_resultant 1692548
Flx_shift 1700267
Flx_shiftip 395220230
Flx_splitting 131512
Flx_sqr 191837077
Flx_sqrspec 191926124
Flx_sqrspec_basecase 106780252
Flx_sqrspec_halfsqri 12623905
Flx_sqrspec_quartsqri 10029308
Flx_sqrspec_sqri 43296642
Flx_sqrspec_sqri_inflate 19011879
Flx_sub 86611170
Flx_subspec 1741884
Flx_to_Flv 2395349
Flx_to_FlxX 21455
Flx_to_ZX 5202703
Flx_to_ZX_inplace 41796097
Flx_to_int_halfspec 26313969
Flx_to_int_quartspec 73348598
Flx_triple 2659627
Flx_val 1418320
Flx_valrem 20995464
Flxn_mul 97034
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 112980
FlxqV_roots_to_pol 533
FlxqXM_FlxqX_mul2 399
FlxqXM_mul2 363
FlxqXQV_autpow 84380
FlxqXQV_autsum 14571
FlxqXQ_autpow_mul 755
FlxqXQ_autpow_sqr 85402
FlxqXQ_autsum_mul 33303
FlxqXQ_autsum_sqr 22090
FlxqXQ_div 0
FlxqXQ_inv 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 180
FlxqXQ_mul 482750
FlxqXQ_pow 0
FlxqXQ_powers 34211
FlxqXQ_powu 103676
FlxqXQ_sqr 475925
FlxqXV_prod 533
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 69938
FlxqX_FlxqXQ_eval 86157
FlxqX_Flxq_mul 7840
FlxqX_Flxq_mul_to_monic 189541
FlxqX_addmulmul 798
FlxqX_divrem 268471
FlxqX_divrem_Barrett_noGC 59531
FlxqX_divrem_Barrettspec 79793
FlxqX_divrem_basecase 1566459
FlxqX_extgcd 6979
FlxqX_extgcd_basecase 6979
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 174126
FlxqX_gcd_basecase 160422
FlxqX_get_red 392846
FlxqX_halfgcd 762
FlxqX_halfgcd_basecase 387
FlxqX_halfgcd_i 762
FlxqX_halfgcd_split 375
FlxqX_invBarrett 7269
FlxqX_invBarrett_Newton 5089
FlxqX_invBarrett_basecase 2138
FlxqX_mul 535538
FlxqX_mulspec 214032
FlxqX_normalize 165808
FlxqX_powu 10185
FlxqX_red 1206380
FlxqX_rem 1663067
FlxqX_safegcd 3764
FlxqX_sqr 489463
Flxq_autpow 303144
Flxq_autpow_mul 20391
Flxq_autpow_sqr 375643
Flxq_autsum 296941
Flxq_autsum_mul 600488
Flxq_autsum_sqr 354032
Flxq_auttrace 43064
Flxq_auttrace_mul 57169
Flxq_auttrace_sqr 45290
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 5812606
Flxq_easylog 302573
Flxq_inv 7412178
Flxq_invsafe 7435911
Flxq_is2npower 280
Flxq_issquare 378684
Flxq_log 31380
Flxq_lroot 24990
Flxq_lroot_fast 112980
Flxq_matrix_pow 220233
Flxq_minpoly 24044
Flxq_mul 124554799
Flxq_norm 404597
Flxq_order 12234
Flxq_pow 19924818
Flxq_pow_Frobenius 19344903
Flxq_powers 1963984
Flxq_powu 10096564
Flxq_sqr 191226860
Flxq_sqrt 157000
Flxq_sqrtn 163288
Flxq_trace 2946
Flxq_transmul 146821
Flxq_transmul_init 56502
Fly_to_FlxY 1456
Kronecker_to_FlxqX 1239033
RgX_to_Flx 1911
Rg_to_F2 1465255
Rg_to_Fl 27816137
Rg_to_Flxq 1307963
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1262564
ZXV_to_FlxV 0
ZXXT_to_FlxXT 8799
ZXXV_to_FlxXV 0
ZXX_to_FlxX 522042
ZX_to_Flx 106932329
Z_mod2BIL_Flx 28457314
Z_mod2BIL_Flx_2 28437604
Z_mod2BIL_Flx_3 10636
Z_to_Flx 1328558
_Fl2_mul 2554919
_Fl2_pow 888105
_Fl2_rand 143498
_Fl2_sqr 6577580
_Flx_mul 8584814
_FlxqXQ_add 664570
_FlxqXQ_cmul 820665
_FlxqXQ_mul 448051
_FlxqXQ_one 448402
_FlxqXQ_red 435080
_FlxqXQ_sqr 474497
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 1635
_FlxqX_sqr 10206
_Flxq_add 16440329
_Flxq_cmul 19071133
_Flxq_equal0 70487
_Flxq_inv 3438
_Flxq_mul 98592524
_Flxq_neg 3515
_Flxq_one 8384709
_Flxq_pow 19327908
_Flxq_rand 313530
_Flxq_red 7488137
_Flxq_rmul 638539
_Flxq_s 12011
_Flxq_sqr 179614826
_Flxq_sub 0
_Flxq_zero 222063
bounded_order 642335
gener_Flxq 8622
get_Flx_degree 26134257
get_Flx_mod 10195866
get_Flx_red 567900687
get_Flx_var 15602265
get_FlxqXQ_algebra 205
get_FlxqX_degree 34259
get_FlxqX_mod 0
get_FlxqX_red 1931538
get_FlxqX_var 480257
get_Flxq_field 635
get_Flxq_star 205047
int_to_Flx 49090457
int_to_Flx_half 19468985
int_to_Flx_quart 41689304
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 3
matid2_FlxXM 0
maxlengthcoeffpol 431959865
mkF2 12689160
monomial_Flx 28251
pol1_FlxX 851436
polx_FlxX 55833
random_Flx 789015
random_FlxqX 0
zxX_to_FlxX 721870
zxX_to_Kronecker 1560539
zxX_to_Kronecker_spec 1988603
zx_to_Flx 2459139

Generated by: LCOV version 1.11