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 20422-b487f4d) Lines: 2731 3033 90.0 %
Date: 2017-03-22 05:51:54 Functions: 331 364 90.9 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 598838
Fl2_inv_pre 258939
Fl2_mul_pre 2579599
Fl2_norm_pre 100652
Fl2_pow_pre 887059
Fl2_sqr_pre 6567680
Fl2_sqrtn_pre 95083
Fl_Flxq_log 9983
Fl_to_Flx 8713161
Flc_to_ZC 4941790
Flm_to_FlxV 254176
Flm_to_FlxX 17937
Flm_to_ZM 931499
FlvV_polint_tree 655214
Flv_Flm_polint 30083
Flv_inv 34622
Flv_invVandermonde 0
Flv_inv_indir 24816
Flv_inv_inplace 0
Flv_inv_pre 7541
Flv_inv_pre_indir 308129
Flv_inv_pre_inplace 290785
Flv_polint 4539
Flv_prod 0
Flv_prod_pre 1883
Flv_producttree 34621
Flv_roots_to_pol 550062
Flv_to_Flx 617739
Flv_to_ZV 1554
FlxC_eval_powers_pre 0
FlxC_neg 2790
FlxC_sub 144186
FlxC_to_ZXC 23075
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2267
FlxM_eval_powers_pre 0
FlxM_mul2 1686
FlxM_neg 468
FlxM_pack_ZM 11350
FlxM_pack_ZM_bits 4329
FlxM_sub 14793
FlxM_to_ZXM 599
FlxT_red 158699
FlxV_Flc_mul 0
FlxV_Flx_fromdigits 0
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 273791
FlxV_to_ZXV 158790
FlxXC_to_ZXXC 385
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 446
FlxX_Fl_mul 205
FlxX_Flx_add 9904
FlxX_Flx_mul 619238
FlxX_add 507332
FlxX_deriv 59198
FlxX_double 205
FlxX_lgrenormalizespec 138095
FlxX_neg 1265
FlxX_recipspec 97806
FlxX_renormalize 6979132
FlxX_shift 0
FlxX_sub 104144
FlxX_subspec 47577
FlxX_swap 12264
FlxX_to_Flm 7218
FlxX_to_FlxC 12611
FlxX_to_ZXX 418999
FlxX_triple 0
FlxY_Flx_div 4598
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 117336
FlxY_Flxq_evalx 0
FlxY_degreex 897460
FlxY_eval_powers_pre 1736688
FlxY_evalx 196743
FlxY_evalx_powers_pre 2723934
FlxYqq_mul 2128
FlxYqq_pow 2506
FlxYqq_redswap 6132
FlxYqq_sqr 4004
Flx_Fl2_eval_pre 10108
Flx_Fl_add 7254878
Flx_Fl_mul 27710511
Flx_Fl_mul_to_monic 6585978
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 34622
Flx_FlxM_qmul 1683
Flx_FlxqV_eval 2711446
Flx_Flxq_eval 692068
Flx_Frobenius 3449033
Flx_add 42917322
Flx_addmulmul 4540
Flx_addshift 3626
Flx_addspec 7005
Flx_deflate 68611
Flx_deriv 4628392
Flx_diff1 9583
Flx_digits 0
Flx_div_by_X_x 27110807
Flx_divrem 58247293
Flx_divrem_Barrett_noGC 1749946
Flx_divrem_Barrettspec 1755345
Flx_divrem_basecase 21436859
Flx_double 1805581
Flx_equal 18640553
Flx_eval 2681479
Flx_eval2BILspec 37287989
Flx_eval_powers_pre 11903555
Flx_eval_pre 2685383
Flx_eval_pre_i 2605608
Flx_extgcd 3529916
Flx_extgcd_basecase 3529916
Flx_extgcd_halfgcd 3
Flx_extresultant 571
Flx_gcd 27252837
Flx_gcd_basecase 26661722
Flx_get_red 34759782
Flx_halfgcd 34837
Flx_halfgcd_basecase 32596
Flx_halfgcd_i 34837
Flx_halfgcd_split 2241
Flx_halve 12588
Flx_inflate 26488
Flx_invBarrett 76144
Flx_invBarrett_Newton 4344
Flx_invBarrett_basecase 71799
Flx_is_l_pow 5055
Flx_is_smooth 88712
Flx_is_smooth_squarefree 93770
Flx_is_squarefree 3416747
Flx_lgrenormalizespec 3575644
Flx_matFrobenius 264397
Flx_mod_Xn1 12
Flx_mod_Xnm1 4549300
Flx_mul 189843536
Flx_mullimb 518423116
Flx_mullimb_ok 636631125
Flx_mulspec 193479054
Flx_mulspec_basecase 132236529
Flx_mulspec_halfmulii 6585797
Flx_mulspec_mulii 5033380
Flx_mulspec_mulii_inflate 9146832
Flx_mulspec_quartmulii 31503853
Flx_multhreshold 34653490
Flx_neg 1060340
Flx_neg_inplace 1573
Flx_negspec 1060344
Flx_normalize 39503583
Flx_powu 4522
Flx_recip 0
Flx_recipspec 3688562
Flx_red 239188
Flx_rem 460699658
Flx_rem_basecase 401737404
Flx_renormalize 1175603321
Flx_rescale 495
Flx_resultant 904729
Flx_shift 2902408
Flx_shiftip 364846582
Flx_splitting 132202
Flx_sqr 181351576
Flx_sqrspec 181470665
Flx_sqrspec_basecase 97538416
Flx_sqrspec_halfsqri 13742299
Flx_sqrspec_quartsqri 10156176
Flx_sqrspec_sqri 40893259
Flx_sqrspec_sqri_inflate 19003657
Flx_sub 55693233
Flx_subspec 1755333
Flx_to_Flv 4271369
Flx_to_FlxX 22561
Flx_to_ZX 5696923
Flx_to_ZX_inplace 42223842
Flx_to_int_halfspec 27109341
Flx_to_int_quartspec 73163885
Flx_translate1 9583
Flx_triple 638313
Flx_val 1419692
Flx_valrem 21074379
Flxn_inv 0
Flxn_mul 94205
Flxn_red_shallow 0
FlxqC_Flxq_mul 70935
FlxqM_Flxq_mul 8561
FlxqM_mul_Kronecker 7853
FlxqV_dotproduct 113561
FlxqV_roots_to_pol 906
FlxqXM_FlxqX_mul2 384
FlxqXM_mul2 363
FlxqXQV_autpow 60398
FlxqXQV_autsum 10342
FlxqXQ_autpow_mul 769
FlxqXQ_autpow_sqr 61399
FlxqXQ_autsum_mul 27584
FlxqXQ_autsum_sqr 16598
FlxqXQ_div 0
FlxqXQ_inv 0
FlxqXQ_invsafe 0
FlxqXQ_matrix_pow 446
FlxqXQ_mul 309607
FlxqXQ_pow 0
FlxqXQ_powers 28030
FlxqXQ_powu 71011
FlxqXQ_sqr 184715
FlxqXV_prod 918
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 55168
FlxqX_FlxqXQ_eval 62168
FlxqX_Flxq_mul 7747
FlxqX_Flxq_mul_to_monic 191661
FlxqX_addmulmul 768
FlxqX_divrem 246017
FlxqX_divrem_Barrett_noGC 45005
FlxqX_divrem_Barrettspec 47577
FlxqX_divrem_basecase 1106351
FlxqX_extgcd 5789
FlxqX_extgcd_basecase 5789
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 146499
FlxqX_gcd_basecase 143104
FlxqX_get_red 289041
FlxqX_halfgcd 747
FlxqX_halfgcd_basecase 384
FlxqX_halfgcd_i 747
FlxqX_halfgcd_split 363
FlxqX_invBarrett 3327
FlxqX_invBarrett_Newton 2652
FlxqX_invBarrett_basecase 675
FlxqX_mul 357581
FlxqX_mulspec 125069
FlxqX_normalize 166740
FlxqX_powu 10241
FlxqX_red 950653
FlxqX_rem 1131564
FlxqX_safegcd 4052
FlxqX_sqr 198988
Flxq_autpow 303765
Flxq_autpow_mul 20475
Flxq_autpow_sqr 376718
Flxq_autsum 294522
Flxq_autsum_mul 598100
Flxq_autsum_sqr 351327
Flxq_auttrace 41712
Flxq_auttrace_mul 55322
Flxq_auttrace_sqr 43760
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 1829448
Flxq_easylog 301496
Flxq_inv 3386715
Flxq_invsafe 3411636
Flxq_is2npower 280
Flxq_issquare 355884
Flxq_log 30988
Flxq_lroot 25046
Flxq_lroot_fast 113561
Flxq_matrix_pow 273791
Flxq_minpoly 24480
Flxq_mul 111337955
Flxq_norm 382018
Flxq_order 12296
Flxq_pow 17495820
Flxq_pow_Frobenius 16956079
Flxq_powers 2134916
Flxq_powu 10124435
Flxq_sqr 180939128
Flxq_sqrt 157311
Flxq_sqrtn 164545
Flxq_trace 3114
Flxq_transmul 148900
Flxq_transmul_init 58158
Fly_to_FlxY 1487
Kronecker_to_FlxqX 681638
RgX_to_Flx 2443
Rg_to_F2 1653546
Rg_to_Fl 29856623
Rg_to_Flxq 1309069
ZM_unpack_FlxqM 5675
ZM_unpack_FlxqM_bits 2178
ZXT_to_FlxT 1234942
ZXV_to_FlxV 0
ZXXT_to_FlxXT 285
ZXXV_to_FlxXV 12
ZXX_to_FlxX 455934
ZX_to_Flx 100294229
Z_mod2BIL_Flx 28168871
Z_mod2BIL_Flx_2 28151537
Z_mod2BIL_Flx_3 10786
Z_to_Flx 965133
_Fl2_mul 2551827
_Fl2_pow 887053
_Fl2_rand 143109
_Fl2_sqr 6567462
_Flx_add 16201974
_Flx_divrem 0
_Flx_mul 8590602
_Flx_sqr 0
_Flx_sub 0
_FlxqXQ_add 501902
_FlxqXQ_cmul 619238
_FlxqXQ_mul 280627
_FlxqXQ_one 349471
_FlxqXQ_red 339026
_FlxqXQ_sqr 184680
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 2225
_FlxqX_sqr 10269
_Flxq_cmul 19397208
_Flxq_equal0 3780
_Flxq_inv 819
_Flxq_mul 93424363
_Flxq_neg 1162
_Flxq_one 8648149
_Flxq_pow 16939045
_Flxq_rand 314573
_Flxq_red 7576140
_Flxq_rmul 38105
_Flxq_s 2441
_Flxq_sqr 175335510
_Flxq_zero 200939
bounded_order 640582
gener_Flxq 7012
get_Flx_degree 23343687
get_Flx_mod 5674402
get_Flx_red 519110616
get_Flx_var 15136156
get_FlxqXQ_algebra 205
get_FlxqX_degree 28344
get_FlxqX_mod 0
get_FlxqX_red 1377581
get_FlxqX_var 352869
get_Flxq_field 1642
get_Flxq_star 206016
int_to_Flx 46167655
int_to_Flx_half 20748222
int_to_Flx_quart 41660609
kron_pack_Flx_spec 29185
kron_pack_Flx_spec_2 1392
kron_pack_Flx_spec_3 0
kron_pack_Flx_spec_bits 202392
kron_pack_Flx_spec_half 540359
kron_unpack_Flx 19966
kron_unpack_Flx_2 961
kron_unpack_Flx_3 0
kron_unpack_Flx_bits_narrow 148929
kron_unpack_Flx_bits_wide 19696
matid2_FlxM 3
matid2_FlxXM 0
maxlengthcoeffpol 400085413
mkF2 9653950
monomial_Flx 31585
pol1_FlxX 859531
polx_FlxX 3835
random_Flx 749480
random_FlxqX 0
zero_FlxC 2577
zero_FlxM 2563
zxX_to_FlxX 722855
zxX_to_Kronecker 914150
zxX_to_Kronecker_spec 1164288
zx_to_Flx 2462854

Generated by: LCOV version 1.11