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 19357-d770f77) Lines: 2605 2898 89.9 %
Date: 2016-08-27 06:11:27 Functions: 313 345 90.7 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 599558
Fl2_inv_pre 259191
Fl2_mul_pre 4848773
Fl2_norm_pre 21463909
Fl2_pow_pre 888101
Fl2_sqr_pre 6577368
Fl2_sqrtn_pre 95263
Fl_Flxq_log 10647
Fl_to_Flx 1299889
Flc_to_ZC 4189826
Flm_to_FlxV 249124
Flm_to_FlxX 15970
Flm_to_ZM 722110
FlvV_polint_tree 658319
Flv_Flm_polint 30150
Flv_inv 37721
Flv_inv_indir 24876
Flv_inv_inplace 0
Flv_inv_pre 7542
Flv_inv_pre_indir 310691
Flv_inv_pre_inplace 290307
Flv_polint 7573
Flv_prod 0
Flv_prod_pre 1883
Flv_producttree 37721
Flv_roots_to_pol 550128
Flv_to_Flx 619537
Flv_to_ZV 1848
FlxC_to_ZXC 15086
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 161835
FlxV_Flc_mul 12810
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 264650
FlxV_to_ZXV 157431
FlxXC_to_ZXXC 0
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 180
FlxX_Fl_mul 205
FlxX_Flx_add 9846
FlxX_Flx_mul 749639
FlxX_add 622379
FlxX_deriv 59087
FlxX_double 205
FlxX_lgrenormalizespec 236237
FlxX_neg 1265
FlxX_recipspec 164675
FlxX_renormalize 7102198
FlxX_shift 0
FlxX_sub 109362
FlxX_subspec 79793
FlxX_swap 10892
FlxX_to_Flm 6615
FlxX_to_FlxC 2622
FlxX_to_ZXX 465257
FlxX_triple 0
FlxY_Flx_div 4614
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 129082
FlxY_Flxq_evalx 0
FlxY_degreex 895784
FlxY_eval_powers_pre 1735090
FlxY_evalx 323176
FlxY_evalx_powers_pre 2720916
FlxYqq_mul 2114
FlxYqq_pow 2226
FlxYqq_redswap 5446
FlxYqq_sqr 3332
Flx_Fl2_eval_pre 765492
Flx_Fl_add 7213717
Flx_Fl_mul 27793986
Flx_Fl_mul_to_monic 7055636
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 37722
Flx_FlxM_qmul 1636
Flx_FlxqV_eval 2749319
Flx_Flxq_eval 694201
Flx_Frobenius 3606775
Flx_add 42180914
Flx_addmulmul 4830
Flx_addshift 3018
Flx_addspec 5789
Flx_deflate 67760
Flx_deriv 4608244
Flx_div_by_X_x 27103481
Flx_divrem 57951196
Flx_divrem_Barrett_noGC 1737622
Flx_divrem_Barrettspec 1743024
Flx_divrem_basecase 21020383
Flx_double 1841094
Flx_equal 19031914
Flx_eval 9237396
Flx_eval2BILspec 37766885
Flx_eval_powers_pre 11890654
Flx_eval_pre 9241325
Flx_eval_pre_i 9161457
Flx_extgcd 3518843
Flx_extgcd_basecase 3518843
Flx_extgcd_halfgcd 3
Flx_extresultant 570
Flx_gcd 30420958
Flx_gcd_basecase 29801707
Flx_get_red 36763141
Flx_halfgcd 35710
Flx_halfgcd_basecase 33324
Flx_halfgcd_i 35710
Flx_halfgcd_split 2386
Flx_halve 12526
Flx_inflate 26256
Flx_invBarrett 85095
Flx_invBarrett_Newton 4392
Flx_invBarrett_basecase 80700
Flx_is_l_pow 4725
Flx_is_smooth 88165
Flx_is_smooth_squarefree 92890
Flx_is_squarefree 3404173
Flx_lgrenormalizespec 3551356
Flx_matFrobenius 255788
Flx_mod_Xn1 19
Flx_mod_Xnm1 4549310
Flx_mul 195342331
Flx_mullimb 558669821
Flx_mullimb_ok 680312857
Flx_mulspec 198945234
Flx_mulspec_basecase 133104790
Flx_mulspec_halfmulii 6907139
Flx_mulspec_mulii 5107598
Flx_mulspec_mulii_inflate 9380951
Flx_mulspec_quartmulii 31672023
Flx_multhreshold 36658234
Flx_neg 1114493
Flx_neg_inplace 1269
Flx_negspec 1114482
Flx_normalize 42523533
Flx_powu 4582
Flx_recip 0
Flx_recipspec 3659696
Flx_red 240437
Flx_rem 486251538
Flx_rem_basecase 424021027
Flx_renormalize 1176556611
Flx_rescale 495
Flx_resultant 1724166
Flx_shift 1702436
Flx_shiftip 372333236
Flx_splitting 132083
Flx_sqr 186956118
Flx_sqrspec 187049935
Flx_sqrspec_basecase 100556963
Flx_sqrspec_halfsqri 13932363
Flx_sqrspec_quartsqri 10062566
Flx_sqrspec_sqri 43244278
Flx_sqrspec_sqri_inflate 19015848
Flx_sub 58292935
Flx_subspec 1743010
Flx_to_Flv 2527557
Flx_to_FlxX 21497
Flx_to_ZX 5268828
Flx_to_ZX_inplace 41802032
Flx_to_int_halfspec 27746512
Flx_to_int_quartspec 73406847
Flx_triple 658271
Flx_val 1418498
Flx_valrem 21037832
Flxn_mul 97365
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 113092
FlxqV_roots_to_pol 549
FlxqXM_FlxqX_mul2 399
FlxqXM_mul2 363
FlxqXQV_autpow 60720
FlxqXQV_autsum 14550
FlxqXQ_autpow_mul 776
FlxqXQ_autpow_sqr 61742
FlxqXQ_autsum_mul 33282
FlxqXQ_autsum_sqr 22069
FlxqXQ_div 0
FlxqXQ_inv 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 180
FlxqXQ_mul 348902
FlxqXQ_pow 0
FlxqXQ_powers 34190
FlxqXQ_powu 79974
FlxqXQ_sqr 220964
FlxqXV_prod 549
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 69896
FlxqX_FlxqXQ_eval 62518
FlxqX_Flxq_mul 7840
FlxqX_Flxq_mul_to_monic 189702
FlxqX_addmulmul 798
FlxqX_divrem 266483
FlxqX_divrem_Barrett_noGC 59531
FlxqX_divrem_Barrettspec 79793
FlxqX_divrem_basecase 1187706
FlxqX_extgcd 6979
FlxqX_extgcd_basecase 6979
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 150515
FlxqX_gcd_basecase 146660
FlxqX_get_red 321761
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 401768
FlxqX_mulspec 214032
FlxqX_normalize 165927
FlxqX_powu 10213
FlxqX_red 1004821
FlxqX_rem 1226556
FlxqX_safegcd 3785
FlxqX_sqr 234530
Flxq_autpow 303144
Flxq_autpow_mul 20391
Flxq_autpow_sqr 375643
Flxq_autsum 296930
Flxq_autsum_mul 600477
Flxq_autsum_sqr 354021
Flxq_auttrace 43295
Flxq_auttrace_mul 57477
Flxq_auttrace_sqr 45598
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 1847750
Flxq_easylog 303000
Flxq_inv 3421084
Flxq_invsafe 3444859
Flxq_is2npower 280
Flxq_issquare 355486
Flxq_log 31366
Flxq_lroot 25018
Flxq_lroot_fast 113092
Flxq_matrix_pow 262424
Flxq_minpoly 24269
Flxq_mul 117262235
Flxq_norm 381406
Flxq_order 12234
Flxq_pow 19880293
Flxq_pow_Frobenius 19348962
Flxq_powers 2094647
Flxq_powu 10255309
Flxq_sqr 186590353
Flxq_sqrt 157000
Flxq_sqrtn 163470
Flxq_trace 2946
Flxq_transmul 147787
Flxq_transmul_init 56882
Fly_to_FlxY 1495
Kronecker_to_FlxqX 850330
RgX_to_Flx 2443
Rg_to_F2 1465347
Rg_to_Fl 27796777
Rg_to_Flxq 1308523
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1259692
ZXV_to_FlxV 0
ZXXT_to_FlxXT 8778
ZXXV_to_FlxXV 0
ZXX_to_FlxX 518230
ZX_to_Flx 106874981
Z_mod2BIL_Flx 28412566
Z_mod2BIL_Flx_2 28390189
Z_mod2BIL_Flx_3 10636
Z_to_Flx 1327018
_Fl2_mul 2554855
_Fl2_pow 888088
_Fl2_rand 143492
_Fl2_sqr 6577208
_Flx_mul 8589975
_FlxqXQ_add 617225
_FlxqXQ_cmul 749639
_FlxqXQ_mul 314224
_FlxqXQ_one 377408
_FlxqXQ_red 364093
_FlxqXQ_sqr 219536
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 1713
_FlxqX_sqr 10234
_Flxq_add 16748903
_Flxq_cmul 19362847
_Flxq_equal0 70473
_Flxq_inv 3438
_Flxq_mul 99300328
_Flxq_neg 3515
_Flxq_one 8590997
_Flxq_pow 19332037
_Flxq_rand 313901
_Flxq_red 7612804
_Flxq_rmul 638588
_Flxq_s 12025
_Flxq_sqr 181032290
_Flxq_sub 0
_Flxq_zero 222042
bounded_order 642933
gener_Flxq 6844
get_Flx_degree 25919762
get_Flx_mod 5805082
get_Flx_red 544348930
get_Flx_var 15433898
get_FlxqXQ_algebra 205
get_FlxqX_degree 34238
get_FlxqX_mod 0
get_FlxqX_red 1493039
get_FlxqX_var 385561
get_Flxq_field 635
get_Flxq_star 205215
int_to_Flx 48633197
int_to_Flx_half 20839503
int_to_Flx_quart 41735229
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 409275601
mkF2 12688598
monomial_Flx 28441
pol1_FlxX 780463
polx_FlxX 8450
random_Flx 742291
random_FlxqX 0
zxX_to_FlxX 721660
zxX_to_Kronecker 1038066
zxX_to_Kronecker_spec 1466130
zx_to_Flx 2458425

Generated by: LCOV version 1.11