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.10.0 lcov report (development 19837-cc815bb) Lines: 2617 2917 89.7 %
Date: 2016-12-10 05:49:10 Functions: 315 346 91.0 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 598396
Fl2_inv_pre 258536
Fl2_mul_pre 4843319
Fl2_norm_pre 21463637
Fl2_pow_pre 886284
Fl2_sqr_pre 6561649
Fl2_sqrtn_pre 95075
Fl_Flxq_log 9989
Fl_to_Flx 8754778
Flc_to_ZC 4747148
Flm_to_FlxV 250259
Flm_to_FlxX 17799
Flm_to_ZM 867426
FlvV_polint_tree 653092
Flv_Flm_polint 29925
Flv_inv 34379
Flv_invVandermonde 0
Flv_inv_indir 24680
Flv_inv_inplace 0
Flv_inv_pre 7541
Flv_inv_pre_indir 307036
Flv_inv_pre_inplace 289799
Flv_polint 4454
Flv_prod 0
Flv_prod_pre 1883
Flv_producttree 34379
Flv_roots_to_pol 547803
Flv_to_Flx 605768
Flv_to_ZV 1848
FlxC_to_ZXC 23079
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2305
FlxM_mul2 1681
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 601
FlxT_red 160792
FlxV_Flc_mul 14476
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 268782
FlxV_to_ZXV 158181
FlxXC_to_ZXXC 432
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 446
FlxX_Fl_mul 205
FlxX_Flx_add 9829
FlxX_Flx_mul 617492
FlxX_add 506205
FlxX_deriv 59191
FlxX_double 205
FlxX_lgrenormalizespec 138585
FlxX_neg 1265
FlxX_recipspec 98604
FlxX_renormalize 6862927
FlxX_shift 0
FlxX_sub 103776
FlxX_subspec 47990
FlxX_swap 11928
FlxX_to_Flm 7230
FlxX_to_FlxC 12611
FlxX_to_ZXX 419813
FlxX_triple 0
FlxY_Flx_div 4657
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 116747
FlxY_Flxq_evalx 0
FlxY_degreex 894934
FlxY_eval_powers_pre 1733816
FlxY_evalx 193596
FlxY_evalx_powers_pre 2719265
FlxYqq_mul 2128
FlxYqq_pow 2422
FlxYqq_redswap 5964
FlxYqq_sqr 3836
Flx_Fl2_eval_pre 765492
Flx_Fl_add 7223811
Flx_Fl_mul 27952587
Flx_Fl_mul_to_monic 6569710
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 34380
Flx_FlxM_qmul 1678
Flx_FlxqV_eval 2719767
Flx_Flxq_eval 689699
Flx_Frobenius 3638087
Flx_add 44429234
Flx_addmulmul 4616
Flx_addshift 3626
Flx_addspec 7005
Flx_deflate 68554
Flx_deriv 4637120
Flx_div_by_X_x 27080105
Flx_divrem 58801660
Flx_divrem_Barrett_noGC 1791230
Flx_divrem_Barrettspec 1796638
Flx_divrem_basecase 22066199
Flx_double 1836299
Flx_equal 17379464
Flx_eval 2881914
Flx_eval2BILspec 37304444
Flx_eval_powers_pre 11885550
Flx_eval_pre 2885828
Flx_eval_pre_i 2805965
Flx_extgcd 3534096
Flx_extgcd_basecase 3534096
Flx_extgcd_halfgcd 3
Flx_extresultant 570
Flx_gcd 27552700
Flx_gcd_basecase 26933528
Flx_get_red 33685029
Flx_halfgcd 36281
Flx_halfgcd_basecase 34002
Flx_halfgcd_i 36281
Flx_halfgcd_split 2279
Flx_halve 12573
Flx_inflate 26431
Flx_invBarrett 85506
Flx_invBarrett_Newton 4383
Flx_invBarrett_basecase 81121
Flx_is_l_pow 5252
Flx_is_smooth 91330
Flx_is_smooth_squarefree 96579
Flx_is_squarefree 3406116
Flx_lgrenormalizespec 3658459
Flx_matFrobenius 258142
Flx_mod_Xn1 19
Flx_mod_Xnm1 4548257
Flx_mul 190264286
Flx_mullimb 523976679
Flx_mullimb_ok 607644201
Flx_mulspec 193947769
Flx_mulspec_basecase 131265741
Flx_mulspec_halfmulii 6930898
Flx_mulspec_mulii 5059147
Flx_mulspec_mulii_inflate 9150261
Flx_mulspec_quartmulii 32315190
Flx_multhreshold 33584747
Flx_neg 1011863
Flx_neg_inplace 1573
Flx_negspec 1011861
Flx_normalize 39446202
Flx_powu 4583
Flx_recip 0
Flx_recipspec 3765001
Flx_red 240906
Flx_rem 462576564
Flx_rem_basecase 403354584
Flx_renormalize 1182279088
Flx_rescale 495
Flx_resultant 921234
Flx_shift 2887675
Flx_shiftip 367585767
Flx_splitting 131975
Flx_sqr 183631164
Flx_sqrspec 183706562
Flx_sqrspec_basecase 100365985
Flx_sqrspec_halfsqri 14136942
Flx_sqrspec_quartsqri 10101544
Flx_sqrspec_sqri 39896556
Flx_sqrspec_sqri_inflate 19015234
Flx_sub 55644232
Flx_subspec 1796629
Flx_to_Flv 4265292
Flx_to_FlxX 22575
Flx_to_ZX 5638274
Flx_to_ZX_inplace 42102486
Flx_to_int_halfspec 27998636
Flx_to_int_quartspec 74732001
Flx_triple 653672
Flx_val 1419674
Flx_valrem 21033800
Flxn_mul 92203
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 113092
FlxqV_roots_to_pol 864
FlxqXM_FlxqX_mul2 399
FlxqXM_mul2 363
FlxqXQV_autpow 60419
FlxqXQV_autsum 10267
FlxqXQ_autpow_mul 769
FlxqXQ_autpow_sqr 61420
FlxqXQ_autsum_mul 27279
FlxqXQ_autsum_sqr 16415
FlxqXQ_div 0
FlxqXQ_inv 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 446
FlxqXQ_mul 309270
FlxqXQ_pow 0
FlxqXQ_powers 27725
FlxqXQ_powu 70957
FlxqXQ_sqr 184566
FlxqXV_prod 876
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 54558
FlxqX_FlxqXQ_eval 62189
FlxqX_Flxq_mul 6865
FlxqX_Flxq_mul_to_monic 190773
FlxqX_addmulmul 798
FlxqX_divrem 244742
FlxqX_divrem_Barrett_noGC 45936
FlxqX_divrem_Barrettspec 47990
FlxqX_divrem_basecase 1102429
FlxqX_extgcd 5656
FlxqX_extgcd_basecase 5656
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 146438
FlxqX_gcd_basecase 143092
FlxqX_get_red 288089
FlxqX_halfgcd 762
FlxqX_halfgcd_basecase 387
FlxqX_halfgcd_i 762
FlxqX_halfgcd_split 375
FlxqX_invBarrett 3334
FlxqX_invBarrett_Newton 2624
FlxqX_invBarrett_basecase 710
FlxqX_mul 356866
FlxqX_mulspec 125671
FlxqX_normalize 166692
FlxqX_powu 10213
FlxqX_red 949806
FlxqX_rem 1129880
FlxqX_safegcd 3814
FlxqX_sqr 198636
Flxq_autpow 303673
Flxq_autpow_mul 20425
Flxq_autpow_sqr 376362
Flxq_autsum 294692
Flxq_autsum_mul 599618
Flxq_autsum_sqr 352526
Flxq_auttrace 41691
Flxq_auttrace_mul 55169
Flxq_auttrace_sqr 43664
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 1847398
Flxq_easylog 301636
Flxq_inv 3400093
Flxq_invsafe 3424174
Flxq_is2npower 280
Flxq_issquare 355826
Flxq_log 31009
Flxq_lroot 25018
Flxq_lroot_fast 113092
Flxq_matrix_pow 266360
Flxq_minpoly 23598
Flxq_mul 110042020
Flxq_norm 382234
Flxq_order 12287
Flxq_pow 16197537
Flxq_pow_Frobenius 15649307
Flxq_powers 2155779
Flxq_powu 10286546
Flxq_sqr 183295719
Flxq_sqrt 157342
Flxq_sqrtn 163904
Flxq_trace 3107
Flxq_transmul 143717
Flxq_transmul_init 56106
Fly_to_FlxY 1505
Kronecker_to_FlxqX 681173
RgX_to_Flx 2443
Rg_to_F2 1653582
Rg_to_Fl 27747352
Rg_to_Flxq 1308397
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1234106
ZXV_to_FlxV 0
ZXXT_to_FlxXT 285
ZXXV_to_FlxXV 12
ZXX_to_FlxX 454703
ZX_to_Flx 100258795
Z_mod2BIL_Flx 28173763
Z_mod2BIL_Flx_2 28151076
Z_mod2BIL_Flx_3 10786
Z_to_Flx 965198
_Fl2_mul 2549399
_Fl2_pow 886270
_Fl2_rand 143156
_Fl2_sqr 6561481
_Flx_mul 8580320
_FlxqXQ_add 500745
_FlxqXQ_cmul 617492
_FlxqXQ_mul 280595
_FlxqXQ_one 348689
_FlxqXQ_red 338682
_FlxqXQ_sqr 184538
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 2176
_FlxqX_sqr 10234
_Flxq_add 17568574
_Flxq_cmul 19482390
_Flxq_equal0 548636
_Flxq_inv 5013
_Flxq_mul 92135816
_Flxq_neg 5090
_Flxq_one 8688903
_Flxq_pow 15632203
_Flxq_rand 314285
_Flxq_red 8252607
_Flxq_rmul 1386090
_Flxq_s 49972
_Flxq_sqr 177767794
_Flxq_sub 0
_Flxq_zero 201096
bounded_order 640116
gener_Flxq 7012
get_Flx_degree 22076950
get_Flx_mod 5719132
get_Flx_red 521415804
get_Flx_var 15414611
get_FlxqXQ_algebra 205
get_FlxqX_degree 28039
get_FlxqX_mod 0
get_FlxqX_red 1374622
get_FlxqX_var 352108
get_Flxq_field 838
get_Flxq_star 205387
int_to_Flx 45170679
int_to_Flx_half 21067832
int_to_Flx_quart 42417288
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 401421979
mkF2 12666593
monomial_Flx 28053
pol1_FlxX 858017
polx_FlxX 3877
random_Flx 742083
random_FlxqX 0
zxX_to_FlxX 720390
zxX_to_Kronecker 912368
zxX_to_Kronecker_spec 1163710
zx_to_Flx 2455445

Generated by: LCOV version 1.11