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 17400-bace02f) Lines: 2192 2334 93.9 %
Date: 2015-01-25 Functions: 272 284 95.8 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1131 1343 84.2 %

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 59413
Fl2_inv_pre 25300
Fl2_mul_pre 284880
Fl2_norm_pre 7193
Fl2_pow_pre 89507
Fl2_sqr_pre 745088
Fl2_sqrtn_pre 11274
Fl_to_Flx 693056
Flc_to_ZC 2052787
Flm_to_FlxV 174938
Flm_to_FlxX 12563
Flm_to_ZM 295468
FlvV_polint_tree 121672
Flv_FlvV_polint 5768
Flv_inv 16266
Flv_inv_indir 7985
Flv_inv_inplace 0
Flv_inv_pre 0
Flv_inv_pre_indir 51369
Flv_inv_pre_inplace 43088
Flv_polint 10498
Flv_producttree 16266
Flv_roots_to_pol 125066
Flv_to_Flx 1162780
Flv_to_ZV 433
FlxC_to_ZXC 883
FlxM_Flx_add_shallow 84
FlxM_Flx_mul2 859
FlxM_mul2 646
FlxM_to_ZXM 365
FlxT_red 29818
FlxV_Flc_mul 12124
FlxV_red 0
FlxV_to_Flm 276911
FlxV_to_ZXV 82109
FlxXV_to_FlxM 132
FlxX_Fl_mul 228
FlxX_Flx_add 326
FlxX_Flx_mul 293355
FlxX_add 231273
FlxX_double 424
FlxX_lgrenormalizespec 867775
FlxX_neg 228
FlxX_recipspec 703172
FlxX_renormalize 3654597
FlxX_shift 0
FlxX_sub 48123
FlxX_subspec 303580
FlxX_swap 9772
FlxX_to_Flm 6977
FlxX_to_FlxC 1828
FlxX_to_ZXX 348546
FlxX_triple 98
FlxY_Flx_div 1456
FlxY_FlxqV_evalx 45262
FlxY_Flxq_evalx 0
FlxY_eval_powers_pre 177340
FlxY_evalx 334828
FlxY_evalx_powers_pre 273132
FlxYqq_mul 1960
FlxYqq_pow 1946
FlxYqq_redswap 4886
FlxYqq_sqr 2926
Flx_Fl_add 776493
Flx_Fl_mul 15788633
Flx_Fl_mul_to_monic 1524464
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 16266
Flx_FlxM_qmul 643
Flx_FlxqV_eval 1468670
Flx_Flxq_eval 638995
Flx_Frobenius 2897136
Flx_add 15351818
Flx_addmulmul 1724
Flx_addshift 3788
Flx_addspec 7520
Flx_deflate 22127
Flx_deriv 4178028
Flx_div_by_X_x 2439426
Flx_divrem 54569245
Flx_divrem_Barrett_noGC 1386653
Flx_divrem_Barrettspec 1386801
Flx_divrem_basecase 19845212
Flx_double 1784214
Flx_equal 8119954
Flx_eval 8717953
Flx_eval2BILspec 836029
Flx_eval_powers_pre 1168298
Flx_eval_pre 8717953
Flx_eval_pre_i 8635284
Flx_extgcd 2885676
Flx_extgcd_basecase 2885676
Flx_extgcd_halfgcd 3
Flx_extresultant 145593
Flx_gcd 15417287
Flx_gcd_basecase 14762936
Flx_get_red 16447300
Flx_halfgcd 4017
Flx_halfgcd_basecase 3187
Flx_halfgcd_i 4017
Flx_halfgcd_split 830
Flx_inflate 12093
Flx_invBarrett 101431
Flx_invBarrett_Newton 1787
Flx_invBarrett_basecase 99628
Flx_is_l_pow 4809
Flx_is_smooth 88067
Flx_is_smooth_squarefree 92876
Flx_is_squarefree 3387324
Flx_lgrenormalizespec 2800741
Flx_matFrobenius 273103
Flx_mod_Xn1 19
Flx_mod_Xnm1 93161
Flx_mul 73044834
Flx_mullimb 100923977
Flx_mullimb_ok 141532676
Flx_mulspec 75841700
Flx_mulspec_basecase 46178206
Flx_mulspec_halfmulii 21878426
Flx_mulspec_mulii 1204174
Flx_mulspec_mulii_inflate 364915
Flx_multhreshold 16525080
Flx_neg 962828
Flx_neg_inplace 1838
Flx_negspec 962828
Flx_normalize 9606583
Flx_powu 1414
Flx_recip 0
Flx_recipspec 2775389
Flx_red 121394
Flx_rem 182847102
Flx_rem_basecase 153809331
Flx_renormalize 536752469
Flx_rescale 203
Flx_resultant 1135715
Flx_shift 1333223
Flx_shiftip 110101192
Flx_splitting 60680
Flx_sqr 40508319
Flx_sqrspec 40508431
Flx_sqrspec_basecase 20813382
Flx_sqrspec_halfsqri 18528430
Flx_sqrspec_sqri 1025566
Flx_sqrspec_sqri_inflate 106199
Flx_sub 39378021
Flx_subspec 1386801
Flx_to_Flv 3307367
Flx_to_FlxX 0
Flx_to_ZX 3287418
Flx_to_ZX_inplace 38373430
Flx_to_int_halfspec 62285282
Flx_triple 627748
Flx_val 372506
Flx_valrem 1885651
FlxqV_dotproduct 56952
FlxqV_roots_to_pol 346
FlxqXQV_autpow 14905
FlxqXQV_autsum 11612
FlxqXQ_autpow_mul 615
FlxqXQ_autpow_sqr 15871
FlxqXQ_autsum_mul 14388
FlxqXQ_autsum_sqr 13441
FlxqXQ_div 1201
FlxqXQ_inv 1201
FlxqXQ_invsafe 1201
FlxqXQ_matrix_pow 132
FlxqXQ_mul 18089
FlxqXQ_mul_mg 151028
FlxqXQ_pow 38129
FlxqXQ_powers 28764
FlxqXQ_sqr 1071
FlxqXQ_sqr_mg 204175
FlxqXV_prod 346
FlxqX_FlxqXQV_eval 45596
FlxqX_FlxqXQ_eval 16486
FlxqX_Flxq_mul 8730
FlxqX_Flxq_mul_to_monic 27216
FlxqX_divrem 340476
FlxqX_extgcd 7361
FlxqX_gcd 30958
FlxqX_invBarrett 128807
FlxqX_invBarrett_Newton 96012
FlxqX_invBarrett_basecase 32646
FlxqX_mul 213939
FlxqX_mulspec 815434
FlxqX_normalize 0
FlxqX_pow 5075
FlxqX_red 199216
FlxqX_rem_Barrett 303580
FlxqX_safegcd 4256
FlxqX_sqr 213268
Flxq_autpow 323302
Flxq_autpow_mul 10849
Flxq_autpow_sqr 388431
Flxq_autsum 329169
Flxq_autsum_mul 616043
Flxq_autsum_sqr 381793
Flxq_charpoly 201
Flxq_conjvec 20
Flxq_div 1734970
Flxq_easylog 345154
Flxq_inv 2769954
Flxq_invsafe 2798371
Flxq_is2npower 140
Flxq_issquare 299567
Flxq_log 58520
Flxq_lroot 12488
Flxq_lroot_fast 56952
Flxq_matrix_pow 274965
Flxq_minpoly 174
Flxq_mul 35941015
Flxq_norm 14903
Flxq_order 13113
Flxq_pow 9627618
Flxq_pow_Frobenius 8861892
Flxq_powers 1012125
Flxq_powu 3908928
Flxq_sqr 40221089
Flxq_sqrt 144380
Flxq_sqrtn 151400
Flxq_trace 1669
Fly_to_FlxY 574
Kronecker_to_FlxqX 1242641
RgX_to_Flx 126
Rg_to_F2 1428651
Rg_to_Fl 13528657
Rg_to_Flxq 888215
ZXT_to_FlxT 875791
ZXV_to_FlxV 0
ZXXV_to_FlxXV 0
ZXX_to_FlxX 441579
ZX_to_Flx 97731335
Z_mod2BIL_Flx 471114
Z_mod2BIL_Flx_2 470499
Z_mod2BIL_Flx_3 615
Z_to_Flx 1071542
_Fl2_mul 284880
_Fl2_pow 89507
_Fl2_rand 17005
_Fl2_sqr 745088
_Flx_mul 1108723
_FlxqXQ_add 231273
_FlxqXQ_cmul 293355
_FlxqXQ_mul 151028
_FlxqXQ_one 138364
_FlxqXQ_red 113887
_FlxqXQ_sqr 204175
_FlxqXQ_zero 0
_FlxqX_mul 1352
_FlxqX_sqr 5096
_Flxq_add 8065562
_Flxq_cmul 9669249
_Flxq_equal0 60287
_Flxq_inv 2783
_Flxq_mul 28227451
_Flxq_neg 2853
_Flxq_one 5404003
_Flxq_pow 8845377
_Flxq_rand 294523
_Flxq_red 4995264
_Flxq_rmul 495330
_Flxq_s 11349
_Flxq_sqr 34925572
_Flxq_zero 32236
bounded_order 674787
gener_Flxq 8413
get_Flx_degree 14159753
get_Flx_mod 3481252
get_Flx_red 237416347
get_Flx_var 10784115
get_Flxq_field 580
get_Flxq_star 221302
int_to_Flx 2229740
int_to_Flx_half 40406856
matid2_FlxM 10
maxlengthcoeffpol 126626272
mkF2 1083547
pol1_FlxX 145725
polx_FlxX 26824
random_Flx 677419
zxX_to_FlxX 78390
zxX_to_Kronecker 641146
zxX_to_Kronecker_spec 2272014
zx_to_Flx 256499

Generated by: LCOV version 1.9