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 20084-3366ab4) Lines: 2628 2948 89.1 %
Date: 2017-01-19 05:50:13 Functions: 317 352 90.1 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 597754
Fl2_inv_pre 258361
Fl2_mul_pre 2575833
Fl2_norm_pre 100624
Fl2_pow_pre 885393
Fl2_sqr_pre 6558771
Fl2_sqrtn_pre 94950
Fl_Flxq_log 9987
Fl_to_Flx 8758395
Flc_to_ZC 4883487
Flm_to_FlxV 258511
Flm_to_FlxX 18017
Flm_to_ZM 946323
FlvV_polint_tree 653099
Flv_Flm_polint 29923
Flv_inv 34435
Flv_invVandermonde 0
Flv_inv_indir 24679
Flv_inv_inplace 0
Flv_inv_pre 7540
Flv_inv_pre_indir 307092
Flv_inv_pre_inplace 289799
Flv_polint 4511
Flv_prod 0
Flv_prod_pre 1883
Flv_producttree 34433
Flv_roots_to_pol 547708
Flv_to_Flx 625952
Flv_to_ZV 1848
FlxC_to_ZXC 23085
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2320
FlxM_mul2 1696
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 604
FlxT_red 162861
FlxV_Flc_mul 14728
FlxV_Flx_fromdigits 0
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 277230
FlxV_to_ZXV 158969
FlxXC_to_ZXXC 385
FlxXM_to_ZXXM 0
FlxXV_to_FlxM 446
FlxX_Fl_mul 205
FlxX_Flx_add 9829
FlxX_Flx_mul 617506
FlxX_add 506212
FlxX_deriv 59198
FlxX_double 205
FlxX_lgrenormalizespec 138585
FlxX_neg 1265
FlxX_recipspec 98604
FlxX_renormalize 6970995
FlxX_shift 0
FlxX_sub 104203
FlxX_subspec 47990
FlxX_swap 12264
FlxX_to_Flm 7277
FlxX_to_FlxC 12611
FlxX_to_ZXX 421869
FlxX_triple 0
FlxY_Flx_div 4721
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 116754
FlxY_Flxq_evalx 0
FlxY_degreex 894941
FlxY_eval_powers_pre 1733816
FlxY_evalx 194769
FlxY_evalx_powers_pre 2719265
FlxYqq_mul 2128
FlxYqq_pow 2506
FlxYqq_redswap 6132
FlxYqq_sqr 4004
Flx_Fl2_eval_pre 10108
Flx_Fl_add 7241051
Flx_Fl_mul 27971504
Flx_Fl_mul_to_monic 6576834
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 34434
Flx_FlxM_qmul 1693
Flx_FlxqV_eval 2703433
Flx_Flxq_eval 690335
Flx_Frobenius 3462425
Flx_add 44449823
Flx_addmulmul 4646
Flx_addshift 3626
Flx_addspec 7005
Flx_deflate 68592
Flx_deriv 4629029
Flx_diff1 10129
Flx_digits 0
Flx_div_by_X_x 27074294
Flx_divrem 58806935
Flx_divrem_Barrett_noGC 1795219
Flx_divrem_Barrettspec 1800630
Flx_divrem_basecase 22063937
Flx_double 1836299
Flx_equal 18267516
Flx_eval 2672716
Flx_eval2BILspec 37293542
Flx_eval_powers_pre 11885550
Flx_eval_pre 2676639
Flx_eval_pre_i 2596784
Flx_extgcd 3540088
Flx_extgcd_basecase 3540088
Flx_extgcd_halfgcd 3
Flx_extresultant 570
Flx_gcd 27317665
Flx_gcd_basecase 26731185
Flx_get_red 34310181
Flx_halfgcd 36378
Flx_halfgcd_basecase 34084
Flx_halfgcd_i 36378
Flx_halfgcd_split 2294
Flx_halve 12573
Flx_inflate 26732
Flx_invBarrett 85959
Flx_invBarrett_Newton 4385
Flx_invBarrett_basecase 81573
Flx_is_l_pow 5264
Flx_is_smooth 91402
Flx_is_smooth_squarefree 96657
Flx_is_squarefree 3411723
Flx_lgrenormalizespec 3666470
Flx_matFrobenius 266450
Flx_mod_Xn1 19
Flx_mod_Xnm1 4548318
Flx_mul 190782605
Flx_mullimb 521872659
Flx_mullimb_ok 615255697
Flx_mulspec 194524658
Flx_mulspec_basecase 131813072
Flx_mulspec_halfmulii 6922912
Flx_mulspec_mulii 5061279
Flx_mulspec_mulii_inflate 9149128
Flx_mulspec_quartmulii 32334935
Flx_multhreshold 34210027
Flx_neg 1015200
Flx_neg_inplace 1573
Flx_negspec 1015190
Flx_normalize 39459778
Flx_powu 4647
Flx_recip 0
Flx_recipspec 3773323
Flx_red 242740
Flx_rem 460189400
Flx_rem_basecase 401193550
Flx_renormalize 1179862552
Flx_rescale 495
Flx_resultant 922680
Flx_shift 2940018
Flx_shiftip 365591880
Flx_splitting 132201
Flx_sqr 181261234
Flx_sqrspec 181390759
Flx_sqrspec_basecase 97200431
Flx_sqrspec_halfsqri 13949746
Flx_sqrspec_quartsqri 10126377
Flx_sqrspec_sqri 40867068
Flx_sqrspec_sqri_inflate 19008414
Flx_sub 55473472
Flx_subspec 1800627
Flx_to_Flv 4345074
Flx_to_FlxX 22575
Flx_to_ZX 5685320
Flx_to_ZX_inplace 42138651
Flx_to_int_halfspec 27795445
Flx_to_int_quartspec 74796388
Flx_translate1 10129
Flx_triple 653672
Flx_val 1416887
Flx_valrem 21038676
Flxn_mul 92448
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 113092
FlxqV_roots_to_pol 906
FlxqXM_FlxqX_mul2 399
FlxqXM_mul2 363
FlxqXQV_autpow 60426
FlxqXQV_autsum 10267
FlxqXQ_autpow_mul 769
FlxqXQ_autpow_sqr 61427
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 70964
FlxqXQ_sqr 184573
FlxqXV_prod 918
FlxqX_FlxqXM_qmul 363
FlxqX_FlxqXQV_eval 54558
FlxqX_FlxqXQ_eval 62196
FlxqX_Flxq_mul 6991
FlxqX_Flxq_mul_to_monic 191228
FlxqX_addmulmul 798
FlxqX_divrem 245988
FlxqX_divrem_Barrett_noGC 45936
FlxqX_divrem_Barrettspec 47990
FlxqX_divrem_basecase 1104123
FlxqX_extgcd 5782
FlxqX_extgcd_basecase 5782
FlxqX_extgcd_halfgcd 0
FlxqX_gcd 146452
FlxqX_gcd_basecase 143099
FlxqX_get_red 288103
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 357328
FlxqX_mulspec 125671
FlxqX_normalize 166713
FlxqX_powu 10213
FlxqX_red 950268
FlxqX_rem 1130328
FlxqX_safegcd 3926
FlxqX_sqr 198811
Flxq_autpow 303665
Flxq_autpow_mul 20425
Flxq_autpow_sqr 376354
Flxq_autsum 294684
Flxq_autsum_mul 599594
Flxq_autsum_sqr 352510
Flxq_auttrace 42017
Flxq_auttrace_mul 55283
Flxq_auttrace_sqr 43760
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 1847832
Flxq_easylog 301636
Flxq_inv 3401087
Flxq_invsafe 3425602
Flxq_is2npower 280
Flxq_issquare 355833
Flxq_log 31009
Flxq_lroot 25018
Flxq_lroot_fast 113092
Flxq_matrix_pow 274724
Flxq_minpoly 23647
Flxq_mul 110567821
Flxq_norm 382214
Flxq_order 12287
Flxq_pow 17057962
Flxq_pow_Frobenius 16509107
Flxq_powers 2128084
Flxq_powu 10123705
Flxq_sqr 180925375
Flxq_sqrt 157349
Flxq_sqrtn 163960
Flxq_trace 3114
Flxq_transmul 143934
Flxq_transmul_init 56218
Fly_to_FlxY 1525
Kronecker_to_FlxqX 681810
RgX_to_Flx 2443
Rg_to_F2 1653631
Rg_to_Fl 28230492
Rg_to_Flxq 1308663
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1236852
ZXV_to_FlxV 0
ZXXT_to_FlxXT 285
ZXXV_to_FlxXV 12
ZXX_to_FlxX 456951
ZX_to_Flx 100374000
Z_mod2BIL_Flx 28163455
Z_mod2BIL_Flx_2 28142055
Z_mod2BIL_Flx_3 10786
Z_to_Flx 966359
_Fl2_mul 2548073
_Fl2_pow 885389
_Fl2_rand 142946
_Fl2_sqr 6558658
_Flx_add 17542674
_Flx_divrem 0
_Flx_mul 8578996
_Flx_sqr 0
_Flx_sub 0
_FlxqXQ_add 500752
_FlxqXQ_cmul 617506
_FlxqXQ_mul 280595
_FlxqXQ_one 348703
_FlxqXQ_red 338689
_FlxqXQ_sqr 184538
_FlxqXQ_sub 2338
_FlxqXQ_zero 170
_FlxqX_mul 2218
_FlxqX_sqr 10234
_Flxq_cmul 19439797
_Flxq_equal0 549077
_Flxq_inv 5216
_Flxq_mul 92644089
_Flxq_neg 5559
_Flxq_one 8632882
_Flxq_pow 16492016
_Flxq_rand 314348
_Flxq_red 8209997
_Flxq_rmul 1387742
_Flxq_s 50322
_Flxq_sqr 175311548
_Flxq_zero 201096
bounded_order 640237
gener_Flxq 7012
get_Flx_degree 22880768
get_Flx_mod 5681887
get_Flx_red 519084531
get_Flx_var 15167966
get_FlxqXQ_algebra 205
get_FlxqX_degree 28039
get_FlxqX_mod 0
get_FlxqX_red 1376316
get_FlxqX_var 352129
get_Flxq_field 943
get_Flxq_star 205443
int_to_Flx 46173427
int_to_Flx_half 20872616
int_to_Flx_quart 42461970
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 400282185
mkF2 9640129
monomial_Flx 28109
pol1_FlxX 858171
polx_FlxX 3891
random_Flx 742501
random_FlxqX 0
zxX_to_FlxX 720390
zxX_to_Kronecker 913467
zxX_to_Kronecker_spec 1164809
zx_to_Flx 2455445

Generated by: LCOV version 1.11