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 19070-36a960b) Lines: 2615 2898 90.2 %
Date: 2016-06-30 Functions: 313 345 90.7 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1337 1647 81.2 %

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 122422
Fl2_inv_pre 52882
Fl2_mul_pre 2791453
Fl2_norm_pre 21419215
Fl2_pow_pre 182352
Fl2_sqr_pre 1269273
Fl2_sqrtn_pre 20523
Fl_Flxq_log 10591
Fl_to_Flx 1237266
Flc_to_ZC 3933050
Flm_to_FlxV 205561
Flm_to_FlxX 15892
Flm_to_ZM 405457
FlvV_polint_tree 294510
Flv_Flm_polint 11359
Flv_inv 18985
Flv_inv_indir 8678
Flv_inv_inplace 0
Flv_inv_pre 1045
Flv_inv_pre_indir 96143
Flv_inv_pre_inplace 84792
Flv_polint 7626
Flv_prod 0
Flv_prod_pre 56
Flv_producttree 18985
Flv_roots_to_pol 234649
Flv_to_Flx 3847064
Flv_to_ZV 1848
FlxC_to_ZXC 15009
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2382
FlxM_mul2 1639
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 427
FlxT_red 162321
FlxV_Flc_mul 12810
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 220919
FlxV_to_ZXV 156760
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 236545
FlxX_neg 1265
FlxX_recipspec 164983
FlxX_renormalize 7270593
FlxX_shift 0
FlxX_sub 120959
FlxX_subspec 79947
FlxX_swap 10892
FlxX_to_Flm 6577
FlxX_to_FlxC 2622
FlxX_to_ZXX 469297
FlxX_triple 0
FlxY_Flx_div 4632
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 140770
FlxY_Flxq_evalx 0
FlxY_degreex 297378
FlxY_eval_powers_pre 242290
FlxY_evalx 329759
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 2098582
Flx_Fl_mul 31922221
Flx_Fl_mul_to_monic 2139345
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 18986
Flx_FlxM_qmul 1636
Flx_FlxqV_eval 2716045
Flx_Flxq_eval 670757
Flx_Frobenius 4173484
Flx_add 39521689
Flx_addmulmul 4770
Flx_addshift 2528
Flx_addspec 4994
Flx_deflate 21917
Flx_deriv 4387263
Flx_div_by_X_x 8450763
Flx_divrem 62813705
Flx_divrem_Barrett_noGC 1695804
Flx_divrem_Barrettspec 1696041
Flx_divrem_basecase 25838153
Flx_double 3703963
Flx_equal 21629548
Flx_eval 9086406
Flx_eval2BILspec 15279883
Flx_eval_powers_pre 1584650
Flx_eval_pre 9086398
Flx_eval_pre_i 9010318
Flx_extgcd 5450541
Flx_extgcd_basecase 5450541
Flx_extgcd_halfgcd 3
Flx_extresultant 81382
Flx_gcd 19231124
Flx_gcd_basecase 18522548
Flx_get_red 33554248
Flx_halfgcd 32970
Flx_halfgcd_basecase 30611
Flx_halfgcd_i 32970
Flx_halfgcd_split 2359
Flx_halve 12532
Flx_inflate 27838
Flx_invBarrett 82117
Flx_invBarrett_Newton 3018
Flx_invBarrett_basecase 79087
Flx_is_l_pow 4648
Flx_is_smooth 86212
Flx_is_smooth_squarefree 90860
Flx_is_squarefree 3411222
Flx_lgrenormalizespec 3441050
Flx_matFrobenius 212141
Flx_mod_Xn1 19
Flx_mod_Xnm1 611295
Flx_mul 162113191
Flx_mullimb 345289707
Flx_mullimb_ok 493546140
Flx_mulspec 165563685
Flx_mulspec_basecase 106215375
Flx_mulspec_halfmulii 5819533
Flx_mulspec_mulii 1449546
Flx_mulspec_mulii_inflate 7538290
Flx_mulspec_quartmulii 31495854
Flx_multhreshold 33445984
Flx_neg 1166386
Flx_neg_inplace 1208
Flx_negspec 1166380
Flx_normalize 14939291
Flx_powu 4603
Flx_recip 0
Flx_recipspec 3563043
Flx_red 240832
Flx_rem 323280266
Flx_rem_basecase 275385729
Flx_renormalize 921030997
Flx_rescale 495
Flx_resultant 1607639
Flx_shift 1699218
Flx_shiftip 244535186
Flx_splitting 132033
Flx_sqr 92217391
Flx_sqrspec 92235512
Flx_sqrspec_basecase 56235030
Flx_sqrspec_halfsqri 8058509
Flx_sqrspec_quartsqri 10012621
Flx_sqrspec_sqri 17673069
Flx_sqrspec_sqri_inflate 212464
Flx_sub 72274982
Flx_subspec 1696030
Flx_to_Flv 2317867
Flx_to_FlxX 21427
Flx_to_ZX 4712844
Flx_to_ZX_inplace 41655307
Flx_to_int_halfspec 19697553
Flx_to_int_quartspec 73004647
Flx_triple 1590493
Flx_val 694304
Flx_valrem 5973308
Flxn_mul 95839
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 112980
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 189535
FlxqX_addmulmul 810
FlxqX_divrem 377657
FlxqX_divrem_Barrett_noGC 59706
FlxqX_divrem_Barrettspec 79947
FlxqX_divrem_basecase 1535176
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 7311
FlxqX_invBarrett_Newton 5089
FlxqX_invBarrett_basecase 2159
FlxqX_mul 467490
FlxqX_mulspec 214340
FlxqX_normalize 165802
FlxqX_powu 10185
FlxqX_red 1267391
FlxqX_rem 1546986
FlxqX_safegcd 3764
FlxqX_sqr 357103
Flxq_autpow 303163
Flxq_autpow_mul 20422
Flxq_autpow_sqr 375772
Flxq_autsum 296815
Flxq_autsum_mul 599550
Flxq_autsum_sqr 353386
Flxq_auttrace 43274
Flxq_auttrace_mul 57519
Flxq_auttrace_sqr 45626
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 3669380
Flxq_easylog 302555
Flxq_inv 5351529
Flxq_invsafe 5375262
Flxq_is2npower 280
Flxq_issquare 354381
Flxq_log 31380
Flxq_lroot 24990
Flxq_lroot_fast 112980
Flxq_matrix_pow 218693
Flxq_minpoly 24023
Flxq_mul 89246436
Flxq_norm 380225
Flxq_order 12228
Flxq_pow 21497716
Flxq_pow_Frobenius 21028643
Flxq_powers 1950564
Flxq_powu 5705119
Flxq_sqr 91744749
Flxq_sqrt 156970
Flxq_sqrtn 163258
Flxq_trace 2946
Flxq_transmul 146219
Flxq_transmul_init 56418
Fly_to_FlxY 1500
Kronecker_to_FlxqX 1038933
RgX_to_Flx 255395
Rg_to_F2 1464056
Rg_to_Fl 29348906
Rg_to_Flxq 1652979
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1159191
ZXV_to_FlxV 0
ZXXT_to_FlxXT 8876
ZXXV_to_FlxXV 0
ZXX_to_FlxX 522257
ZX_to_Flx 105608478
Z_mod2BIL_Flx 7757158
Z_mod2BIL_Flx_2 7744962
Z_mod2BIL_Flx_3 9373
Z_to_Flx 1328890
_Fl2_mul 497570
_Fl2_pow 182352
_Fl2_rand 30858
_Fl2_sqr 1269233
_Flx_mul 4133866
_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 10206
_Flxq_add 16311937
_Flxq_cmul 18869016
_Flxq_equal0 70487
_Flxq_inv 3438
_Flxq_mul 67047882
_Flxq_neg 3515
_Flxq_one 8251277
_Flxq_pow 21011649
_Flxq_rand 313316
_Flxq_red 7382032
_Flxq_rmul 638539
_Flxq_s 12011
_Flxq_sqr 83473287
_Flxq_sub 0
_Flxq_zero 222238
bounded_order 642329
gener_Flxq 8622
get_Flx_degree 27516125
get_Flx_mod 7842739
get_Flx_red 386163282
get_Flx_var 15864271
get_FlxqXQ_algebra 205
get_FlxqX_degree 34300
get_FlxqX_mod 0
get_FlxqX_red 1924643
get_FlxqX_var 432192
get_Flxq_field 635
get_Flxq_star 205011
int_to_Flx 19184265
int_to_Flx_half 13878048
int_to_Flx_quart 41509328
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 9
matid2_FlxXM 0
maxlengthcoeffpol 278062351
mkF2 4930409
monomial_Flx 28209
pol1_FlxX 815410
polx_FlxX 31760
random_Flx 764889
random_FlxqX 0
zxX_to_FlxX 123385
zxX_to_Kronecker 1292083
zxX_to_Kronecker_spec 1720763
zx_to_Flx 383352

Generated by: LCOV version 1.9