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 19608-b7b365e) Lines: 2611 2898 90.1 %
Date: 2016-09-26 05:54:43 Functions: 315 345 91.3 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 600187
Fl2_inv_pre 259309
Fl2_mul_pre 4850049
Fl2_norm_pre 21463959
Fl2_pow_pre 888922
Fl2_sqr_pre 6580219
Fl2_sqrtn_pre 95398
Fl_Flxq_log 10552
Fl_to_Flx 1378774
Flc_to_ZC 4856448
Flm_to_FlxV 249415
Flm_to_FlxX 19125
Flm_to_ZM 936059
FlvV_polint_tree 655282
Flv_Flm_polint 30151
Flv_inv 34667
Flv_inv_indir 24882
Flv_inv_inplace 0
Flv_inv_pre 7542
Flv_inv_pre_indir 307872
Flv_inv_pre_inplace 290545
Flv_polint 4516
Flv_prod 0
Flv_prod_pre 1883
Flv_producttree 34666
Flv_roots_to_pol 550142
Flv_to_Flx 607792
Flv_to_ZV 1848
FlxC_to_ZXC 31721
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2276
FlxM_mul2 1639
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 932
FlxT_red 158750
FlxV_Flc_mul 13776
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 270577
FlxV_to_ZXV 158126
FlxXC_to_ZXXC 495
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 733
FlxX_Fl_mul 205
FlxX_Flx_add 9829
FlxX_Flx_mul 628694
FlxX_add 516889
FlxX_deriv 59184
FlxX_double 205
FlxX_lgrenormalizespec 161078
FlxX_neg 1265
FlxX_recipspec 111223
FlxX_renormalize 6996894
FlxX_shift 0
FlxX_sub 109306
FlxX_subspec 53914
FlxX_swap 11900
FlxX_to_Flm 7809
FlxX_to_FlxC 22873
FlxX_to_ZXX 449253
FlxX_triple 0
FlxY_Flx_div 4563
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 117219
FlxY_Flxq_evalx 0
FlxY_degreex 896862
FlxY_eval_powers_pre 1735364
FlxY_evalx 199231
FlxY_evalx_powers_pre 2721426
FlxYqq_mul 2114
FlxYqq_pow 2436
FlxYqq_redswap 5950
FlxYqq_sqr 3836
Flx_Fl2_eval_pre 765492
Flx_Fl_add 7243698
Flx_Fl_mul 28172392
Flx_Fl_mul_to_monic 6580616
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 34666
Flx_FlxM_qmul 1636
Flx_FlxqV_eval 2746957
Flx_Flxq_eval 693380
Flx_Frobenius 3637267
Flx_add 41737953
Flx_addmulmul 4558
Flx_addshift 3018
Flx_addspec 5789
Flx_deflate 68306
Flx_deriv 4633022
Flx_div_by_X_x 27102820
Flx_divrem 59080651
Flx_divrem_Barrett_noGC 1819894
Flx_divrem_Barrettspec 1825309
Flx_divrem_basecase 22118180
Flx_double 1836299
Flx_equal 19465109
Flx_eval 2954489
Flx_eval2BILspec 37755627
Flx_eval_powers_pre 11893362
Flx_eval_pre 2958399
Flx_eval_pre_i 2878519
Flx_extgcd 3549766
Flx_extgcd_basecase 3549766
Flx_extgcd_halfgcd 3
Flx_extresultant 570
Flx_gcd 27533776
Flx_gcd_basecase 26914006
Flx_get_red 36912882
Flx_halfgcd 36828
Flx_halfgcd_basecase 34578
Flx_halfgcd_i 36828
Flx_halfgcd_split 2250
Flx_halve 12573
Flx_inflate 25913
Flx_invBarrett 86526
Flx_invBarrett_Newton 4397
Flx_invBarrett_basecase 82129
Flx_is_l_pow 4725
Flx_is_smooth 88165
Flx_is_smooth_squarefree 92890
Flx_is_squarefree 3405635
Flx_lgrenormalizespec 3715996
Flx_matFrobenius 258453
Flx_mod_Xn1 19
Flx_mod_Xnm1 4549381
Flx_mul 192480068
Flx_mullimb 557070112
Flx_mullimb_ok 675885537
Flx_mulspec 196227220
Flx_mulspec_basecase 131644769
Flx_mulspec_halfmulii 6960592
Flx_mulspec_mulii 5112331
Flx_mulspec_mulii_inflate 9377155
Flx_mulspec_quartmulii 32391511
Flx_multhreshold 36805836
Flx_neg 1058259
Flx_neg_inplace 1269
Flx_negspec 1058261
Flx_normalize 39466376
Flx_powu 4500
Flx_recip 0
Flx_recipspec 3831949
Flx_red 238548
Flx_rem 475847045
Flx_rem_basecase 414664746
Flx_renormalize 1181848634
Flx_rescale 495
Flx_resultant 1597767
Flx_shift 1728518
Flx_shiftip 371982257
Flx_splitting 131741
Flx_sqr 187363747
Flx_sqrspec 187383848
Flx_sqrspec_basecase 100704026
Flx_sqrspec_halfsqri 14082445
Flx_sqrspec_quartsqri 10122744
Flx_sqrspec_sqri 43320727
Flx_sqrspec_sqri_inflate 19013700
Flx_sub 57032010
Flx_subspec 1825300
Flx_to_Flv 2559832
Flx_to_FlxX 22575
Flx_to_ZX 6131584
Flx_to_ZX_inplace 42365151
Flx_to_int_halfspec 28003477
Flx_to_int_quartspec 74905998
Flx_triple 653672
Flx_val 1421564
Flx_valrem 21052396
Flxn_mul 100903
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 113092
FlxqV_roots_to_pol 1179
FlxqXM_FlxqX_mul2 399
FlxqXM_mul2 363
FlxqXQV_autpow 60706
FlxqXQV_autsum 10230
FlxqXQ_autpow_mul 783
FlxqXQ_autpow_sqr 61952
FlxqXQ_autsum_mul 27242
FlxqXQ_autsum_sqr 16378
FlxqXQ_div 0
FlxqXQ_inv 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 733
FlxqXQ_mul 320538
FlxqXQ_pow 0
FlxqXQ_powers 27975
FlxqXQ_powu 71207
FlxqXQ_sqr 187200
FlxqXV_prod 1203
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 54484
FlxqX_FlxqXQ_eval 62735
FlxqX_Flxq_mul 8009
FlxqX_Flxq_mul_to_monic 190794
FlxqX_addmulmul 798
FlxqX_divrem 262256
FlxqX_divrem_Barrett_noGC 51656
FlxqX_divrem_Barrettspec 53914
FlxqX_divrem_basecase 1127585
FlxqX_extgcd 6888
FlxqX_extgcd_basecase 6888
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 146781
FlxqX_gcd_basecase 143435
FlxqX_get_red 289267
FlxqX_halfgcd 762
FlxqX_halfgcd_basecase 387
FlxqX_halfgcd_i 762
FlxqX_halfgcd_split 375
FlxqX_invBarrett 4315
FlxqX_invBarrett_Newton 3395
FlxqX_invBarrett_basecase 920
FlxqX_mul 374113
FlxqX_mulspec 145250
FlxqX_normalize 166713
FlxqX_powu 10213
FlxqX_red 965022
FlxqX_rem 1152262
FlxqX_safegcd 3828
FlxqX_sqr 201270
Flxq_autpow 303611
Flxq_autpow_mul 20399
Flxq_autpow_sqr 376254
Flxq_autsum 297560
Flxq_autsum_mul 602363
Flxq_autsum_sqr 355350
Flxq_auttrace 45508
Flxq_auttrace_mul 60474
Flxq_auttrace_sqr 48454
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 1847405
Flxq_easylog 304619
Flxq_inv 3413950
Flxq_invsafe 3438031
Flxq_is2npower 280
Flxq_issquare 355826
Flxq_log 31460
Flxq_lroot 25018
Flxq_lroot_fast 113092
Flxq_matrix_pow 268141
Flxq_minpoly 25452
Flxq_mul 117492694
Flxq_norm 382018
Flxq_order 12287
Flxq_pow 19890192
Flxq_pow_Frobenius 19359774
Flxq_powers 2162043
Flxq_powu 10296978
Flxq_sqr 187013630
Flxq_sqrt 157342
Flxq_sqrtn 163911
Flxq_trace 3107
Flxq_transmul 154092
Flxq_transmul_init 59390
Fly_to_FlxY 1480
Kronecker_to_FlxqX 720633
RgX_to_Flx 2443
Rg_to_F2 1653336
Rg_to_Fl 27744047
Rg_to_Flxq 1308397
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1241741
ZXV_to_FlxV 0
ZXXT_to_FlxXT 285
ZXXV_to_FlxXV 24
ZXX_to_FlxX 482439
ZX_to_Flx 101207086
Z_mod2BIL_Flx 28398133
Z_mod2BIL_Flx_2 28376740
Z_mod2BIL_Flx_3 10636
Z_to_Flx 1020524
_Fl2_mul 2556121
_Fl2_pow 888917
_Fl2_rand 143715
_Fl2_sqr 6580042
_Flx_mul 8591097
_FlxqXQ_add 511475
_FlxqXQ_cmul 628694
_FlxqXQ_mul 291900
_FlxqXQ_one 352043
_FlxqXQ_red 341709
_FlxqXQ_sqr 187172
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 2639
_FlxqX_sqr 10234
_Flxq_add 18446116
_Flxq_cmul 19694941
_Flxq_equal0 1036830
_Flxq_inv 6938
_Flxq_mul 99530701
_Flxq_neg 7015
_Flxq_one 8735659
_Flxq_pow 19342800
_Flxq_rand 314180
_Flxq_red 8879028
_Flxq_rmul 2135251
_Flxq_s 89592
_Flxq_sqr 181449158
_Flxq_sub 0
_Flxq_zero 209143
bounded_order 644415
gener_Flxq 6942
get_Flx_degree 25857743
get_Flx_mod 5769771
get_Flx_red 534986834
get_Flx_var 15552750
get_FlxqXQ_algebra 205
get_FlxqX_degree 28576
get_FlxqX_mod 0
get_FlxqX_red 1414518
get_FlxqX_var 355749
get_Flxq_field 1188
get_Flxq_star 205845
int_to_Flx 48619309
int_to_Flx_half 21042997
int_to_Flx_quart 42514852
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 409015240
mkF2 12693546
monomial_Flx 29695
pol1_FlxX 862596
polx_FlxX 4164
random_Flx 747095
random_FlxqX 0
zxX_to_FlxX 722255
zxX_to_Kronecker 949496
zxX_to_Kronecker_spec 1239996
zx_to_Flx 2460610

Generated by: LCOV version 1.11