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-bordeaux1.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 18579-f9e35ad) Lines: 2490 2735 91.0 %
Date: 2016-02-06 Functions: 300 324 92.6 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1274 1587 80.3 %

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 122438
Fl2_inv_pre 52871
Fl2_mul_pre 838199
Fl2_norm_pre 2140034
Fl2_pow_pre 182360
Fl2_sqr_pre 1269901
Fl2_sqrtn_pre 20523
Fl_Flxq_log 10593
Fl_to_Flx 1108859
Flc_to_ZC 3939280
Flm_to_FlxV 207003
Flm_to_FlxX 11249
Flm_to_ZM 402608
FlvV_polint_tree 293542
Flv_FlvV_polint 10970
Flv_inv 18727
Flv_inv_indir 8679
Flv_inv_inplace 0
Flv_inv_pre 1045
Flv_inv_pre_indir 95861
Flv_inv_pre_inplace 84767
Flv_polint 7757
Flv_prod 0
Flv_prod_pre 56
Flv_producttree 18727
Flv_roots_to_pol 235074
Flv_to_Flx 3836285
Flv_to_ZV 433
FlxC_to_ZXC 1007
FlxM_Flx_add_shallow 132
FlxM_Flx_mul2 2379
FlxM_mul2 1653
FlxM_pack_ZM 0
FlxM_pack_ZM_bits 257
FlxM_to_ZXM 427
FlxT_red 158214
FlxV_Flc_mul 12502
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 213415
FlxV_to_ZXV 155501
FlxXV_to_FlxM 180
FlxX_Fl_mul 271
FlxX_Flx_add 370
FlxX_Flx_mul 338799
FlxX_add 264437
FlxX_double 469
FlxX_lgrenormalizespec 141796
FlxX_neg 271
FlxX_recipspec 96877
FlxX_renormalize 2962797
FlxX_shift 0
FlxX_sub 67573
FlxX_subspec 46714
FlxX_swap 10276
FlxX_to_Flm 5069
FlxX_to_FlxC 2622
FlxX_to_ZXX 679883
FlxX_triple 99
FlxY_Flx_div 4395
FlxY_Flx_translate 0
FlxY_FlxqV_evalx 57569
FlxY_Flxq_evalx 0
FlxY_eval_powers_pre 242190
FlxY_evalx 333788
FlxY_evalx_powers_pre 370638
FlxYqq_mul 1960
FlxYqq_pow 2072
FlxYqq_redswap 5138
FlxYqq_sqr 3178
Flx_Fl2_eval_pre 114135
Flx_Fl_add 1633445
Flx_Fl_mul 27808894
Flx_Fl_mul_to_monic 2143007
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 18727
Flx_FlxM_qmul 1650
Flx_FlxqV_eval 2125746
Flx_Flxq_eval 678507
Flx_Frobenius 4148488
Flx_add 26186904
Flx_addmulmul 4764
Flx_addshift 3936
Flx_addspec 7816
Flx_deflate 22196
Flx_deriv 4422813
Flx_div_by_X_x 8461065
Flx_divrem 64768941
Flx_divrem_Barrett_noGC 1414494
Flx_divrem_Barrettspec 1414732
Flx_divrem_basecase 26364171
Flx_double 3649256
Flx_equal 23622885
Flx_eval 8994301
Flx_eval2BILspec 15262458
Flx_eval_powers_pre 1590809
Flx_eval_pre 8994308
Flx_eval_pre_i 8911636
Flx_extgcd 4794849
Flx_extgcd_basecase 4794849
Flx_extgcd_halfgcd 3
Flx_extresultant 146244
Flx_gcd 19367724
Flx_gcd_basecase 18659667
Flx_get_red 34845732
Flx_halfgcd 33556
Flx_halfgcd_basecase 31200
Flx_halfgcd_i 33556
Flx_halfgcd_split 2356
Flx_inflate 26981
Flx_invBarrett 81455
Flx_invBarrett_Newton 3018
Flx_invBarrett_basecase 78418
Flx_is_l_pow 4691
Flx_is_smooth 86472
Flx_is_smooth_squarefree 91163
Flx_is_squarefree 3407281
Flx_lgrenormalizespec 2878267
Flx_matFrobenius 209187
Flx_mod_Xn1 19
Flx_mod_Xnm1 611288
Flx_mul 142086594
Flx_mullimb 416734772
Flx_mullimb_ok 446257825
Flx_mulspec 144969049
Flx_mulspec_basecase 104614505
Flx_mulspec_halfmulii 7995375
Flx_mulspec_mulii 1294772
Flx_mulspec_mulii_inflate 7527879
Flx_mulspec_quartmulii 13896526
Flx_multhreshold 34766376
Flx_neg 924703
Flx_neg_inplace 1912
Flx_negspec 924678
Flx_normalize 14970204
Flx_powu 4445
Flx_recip 0
Flx_recipspec 3001540
Flx_red 238391
Flx_rem 303979275
Flx_rem_basecase 266764553
Flx_renormalize 842411509
Flx_rescale 1218
Flx_resultant 1603461
Flx_shift 1747788
Flx_shiftip 229585747
Flx_splitting 131148
Flx_sqr 94475191
Flx_sqrspec 94497377
Flx_sqrspec_basecase 58517362
Flx_sqrspec_halfsqri 8290172
Flx_sqrspec_quartsqri 9925355
Flx_sqrspec_sqri 17479477
Flx_sqrspec_sqri_inflate 212405
Flx_sub 60554474
Flx_subspec 1414722
Flx_to_Flv 2326298
Flx_to_FlxX 0
Flx_to_ZX 5550205
Flx_to_ZX_inplace 43677631
Flx_to_int_halfspec 24280892
Flx_to_int_quartspec 37718766
Flx_triple 1561599
Flx_val 694236
Flx_valrem 5977777
Flxn_mul 96252
FlxqM_mul_Kronecker 142
FlxqV_dotproduct 112560
FlxqV_roots_to_pol 533
FlxqXQV_autpow 27225
FlxqXQV_autsum 11534
FlxqXQ_autpow_mul 720
FlxqXQ_autpow_sqr 28191
FlxqXQ_autsum_mul 14329
FlxqXQ_autsum_sqr 13390
FlxqXQ_div 1447
FlxqXQ_inv 1447
FlxqXQ_invsafe 1447
FlxqXQ_matrix_pow 180
FlxqXQ_mul 238425
FlxqXQ_pow 50293
FlxqXQ_powers 28754
FlxqXQ_sqr 332750
FlxqXV_prod 533
FlxqX_FlxqXQV_eval 45451
FlxqX_FlxqXQ_eval 28911
FlxqX_Flxq_mul 10188
FlxqX_Flxq_mul_to_monic 27580
FlxqX_divrem 349980
FlxqX_divrem_Barrett_noGC 39679
FlxqX_divrem_Barrettspec 46714
FlxqX_divrem_basecase 952257
FlxqX_extgcd 8426
FlxqX_gcd 43460
FlxqX_get_red 192271
FlxqX_invBarrett 5106
FlxqX_invBarrett_Newton 3449
FlxqX_invBarrett_basecase 1615
FlxqX_mul 289360
FlxqX_mulspec 128310
FlxqX_normalize 0
FlxqX_pow 10115
FlxqX_red 363082
FlxqX_rem 755587
FlxqX_safegcd 4396
FlxqX_sqr 346064
Flxq_autpow 299828
Flxq_autpow_mul 20412
Flxq_autpow_sqr 372745
Flxq_autsum 288974
Flxq_autsum_mul 572796
Flxq_autsum_sqr 339589
Flxq_auttrace 43222
Flxq_auttrace_mul 56956
Flxq_auttrace_sqr 45351
Flxq_charpoly 27
Flxq_conjvec 20
Flxq_div 3591500
Flxq_easylog 292493
Flxq_inv 4670056
Flxq_invsafe 4699083
Flxq_is2npower 280
Flxq_issquare 352041
Flxq_log 31380
Flxq_lroot 24920
Flxq_lroot_fast 112560
Flxq_matrix_pow 211343
Flxq_minpoly 24127
Flxq_mul 83573905
Flxq_norm 377859
Flxq_order 12214
Flxq_pow 23461652
Flxq_pow_Frobenius 22988028
Flxq_powers 1915667
Flxq_powu 5678077
Flxq_sqr 94017147
Flxq_sqrt 144001
Flxq_sqrtn 150565
Flxq_trace 2946
Flxq_transmul 146881
Flxq_transmul_init 56786
Fly_to_FlxY 1480
Kronecker_to_FlxqX 763734
RgX_to_Flx 220514
Rg_to_F2 1458372
Rg_to_Fl 28716775
Rg_to_Flxq 1594025
ZM_unpack_FlxqM 0
ZM_unpack_FlxqM_bits 142
ZXT_to_FlxT 1224171
ZXV_to_FlxV 0
ZXXT_to_FlxXT 42572
ZXXV_to_FlxXV 0
ZXX_to_FlxX 771495
ZX_to_Flx 110232214
Z_mod2BIL_Flx 7745079
Z_mod2BIL_Flx_2 7736528
Z_mod2BIL_Flx_3 7089
Z_to_Flx 1712074
_Fl2_mul 497740
_Fl2_pow 182360
_Fl2_rand 30873
_Fl2_sqr 1269868
_Flx_mul 4139039
_FlxqXQ_add 264437
_FlxqXQ_cmul 338799
_FlxqXQ_mul 219656
_FlxqXQ_one 176299
_FlxqXQ_red 151939
_FlxqXQ_sqr 331475
_FlxqXQ_zero 0
_FlxqX_mul 1635
_FlxqX_sqr 10136
_Flxq_add 14225833
_Flxq_cmul 16390086
_Flxq_equal0 70487
_Flxq_inv 3438
_Flxq_mul 71233597
_Flxq_neg 3515
_Flxq_one 7816317
_Flxq_pow 22971080
_Flxq_rand 292214
_Flxq_red 6967887
_Flxq_rmul 638539
_Flxq_s 12011
_Flxq_sqr 86003254
_Flxq_zero 32515
bounded_order 628875
gener_Flxq 8573
get_Flx_degree 28906334
get_Flx_mod 6864684
get_Flx_red 368808184
get_Flx_var 14190236
get_FlxqX_degree 28802
get_FlxqX_mod 1447
get_FlxqX_red 1105567
get_FlxqX_var 38759
get_Flxq_field 635
get_Flxq_star 192353
int_to_Flx 18826264
int_to_Flx_half 16285559
int_to_Flx_quart 23822694
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 16
maxlengthcoeffpol 264452037
mkF2 2326411
monomial_Flx 28393
pol1_FlxX 184725
polx_FlxX 51295
random_Flx 731934
random_FlxqX 0
zxX_to_FlxX 123325
zxX_to_Kronecker 924784
zxX_to_Kronecker_spec 1181404
zx_to_Flx 383204

Generated by: LCOV version 1.9