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 to exceed 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.18.1 lcov report (development 29893-905ab89f2e) Lines: 2453 2767 88.7 %
Date: 2025-01-26 09:06:44 Functions: 298 345 86.4 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Fl2_equal1 439549
Fl2_inv_pre 192880
Fl2_mul_pre 1913940
Fl2_norm_pre 125922
Fl2_pow_pre 656743
Fl2_sqr_pre 4815939
Fl2_sqrt_pre 67676
Fl2_sqrtn_pre 74604
Fl_Flxq_log 35473
Fl_Xp1_powu 0
Fl_to_Flx 19805899
Flm_to_FlxV 2296
FlvV_polint_tree 1384466
Flv_Flm_polint 101074
Flv_inv 621928
Flv_invVandermonde 152995
Flv_inv_i 633943
Flv_inv_indir 49733
Flv_inv_inplace 12017
Flv_inv_pre 10848
Flv_inv_pre_indir 18940510
Flv_inv_pre_inplace 18336158
Flv_polint 366579
Flv_prod 0
Flv_prod_pre 3255
Flv_producttree 623129
Flv_roots_to_pol 737399
Flv_to_Flx 25192219
FlxC_FlxqV_eval 0
FlxC_FlxqV_eval_pre 0
FlxC_Flxq_eval 0
FlxC_Flxq_eval_pre 0
FlxC_eval_powers_pre 251071
FlxC_neg 0
FlxC_sub 0
FlxC_to_ZXC 103966
FlxM_Flx_add_shallow 0
FlxM_Flx_mul2 24752
FlxM_eval_powers_pre 19452
FlxM_mul2 6517
FlxM_neg 0
FlxM_pack_ZM 45547
FlxM_pack_ZM_bits 115871
FlxM_sub 0
FlxM_to_FlxXV 0
FlxM_to_ZXM 2399
FlxT_red 298759
FlxV_Flc_mul 34482
FlxV_Flv_multieval 2471
FlxV_Flv_multieval_tree 2471
FlxV_Flx_fromdigits 0
FlxV_composedsum 28885
FlxV_prod 0
FlxV_red 0
FlxV_to_Flm 171610
FlxV_to_Flm_lg 12774557
FlxV_to_FlxX 395377
FlxV_to_ZXV 600124
FlxV_to_ZXV_inplace 2877385
Flx_Fl2_eval_pre 10402
Flx_Fl_add 9883466
Flx_Fl_mul 7260126
Flx_Fl_mul_pre 18173812
Flx_Fl_mul_to_monic 11921442
Flx_Fl_sub 150525
Flx_Flv_multieval 0
Flx_Flv_multieval_tree 663423
Flx_FlxM_qmul 6345
Flx_FlxqV_eval 5040
Flx_FlxqV_eval_pre 12972830
Flx_Flxq_eval 786463
Flx_Flxq_eval_pre 2392417
Flx_Frobenius 86484
Flx_Frobenius_pre 13617720
Flx_Laplace 27281
Flx_Newton 54006
Flx_add 62452527
Flx_addmulmul 414578
Flx_addshift 3658842
Flx_addspec 7119388
Flx_blocks 516011
Flx_blocks_Flm 12773785
Flx_composedprod 0
Flx_composedsum 27489
Flx_convol 0
Flx_deflate 418891
Flx_deriv 21037406
Flx_diff1 13447
Flx_digits 0
Flx_div_by_X_x 32976609
Flx_divrem 30204572
Flx_divrem_Barrett 605337
Flx_divrem_Barrettspec 905682
Flx_divrem_basecase 61276136
Flx_divrem_pre 78694227
Flx_double 2414650
Flx_equal 28676171
Flx_eval 20350887
Flx_eval2BILspec 581742
Flx_eval_powers_pre 43812066
Flx_eval_pre 99978861
Flx_extgcd 853190
Flx_extgcd_basecase 6265933
Flx_extgcd_halfgcd 145242
Flx_extgcd_pre 6265934
Flx_extresultant 53
Flx_extresultant_basecase 53
Flx_extresultant_pre 53
Flx_fromNewton 109340
Flx_gcd 32403909
Flx_gcd_basecase 82739740
Flx_gcd_pre 84375893
Flx_get_red 14168738
Flx_get_red_pre 98042474
Flx_halfgcd 0
Flx_halfgcd_all 154
Flx_halfgcd_all_i 1095033
Flx_halfgcd_all_pre 1095034
Flx_halfgcd_pre 840866
Flx_halfres_basecase 1101543
Flx_halfres_i 1120829
Flx_halfres_pre 1044
Flx_halfres_split 19282
Flx_halfres_update_pre 9405
Flx_halve 14215
Flx_inflate 158537
Flx_integ 0
Flx_integXn 422485
Flx_invBarrett 0
Flx_invBarrett_Newton 23116
Flx_invBarrett_basecase 134204
Flx_invBarrett_pre 158627
Flx_invLaplace 54243
Flx_is_l_pow 8369
Flx_is_smooth 74256
Flx_is_smooth_pre 118616
Flx_is_smooth_squarefree 126984
Flx_is_squarefree 8524563
Flx_lgrenormalizespec 2132802
Flx_matFrobenius 0
Flx_matFrobenius_pre 86429
Flx_mod_Xn1 30232
Flx_mod_Xnm1 5097049
Flx_mul 27585262
Flx_mul_pre 371441982
Flx_mulhigh_i 937324
Flx_mullimb 1148382551
Flx_mullimb_ok 3363598403
Flx_mulspec 377106577
Flx_mulspec_Kronecker 7215361
Flx_mulspec_basecase 339936917
Flx_mulspec_halfmulii 5454
Flx_mulspec_mulii 10030
Flx_mulspec_mulii_inflate 283426
Flx_mulspec_quartmulii 97024
Flx_neg 3262870
Flx_neg_inplace 1744923
Flx_negspec 3262868
Flx_normalize 61972179
Flx_powu 0
Flx_powu_pre 7988
Flx_recip 0
Flx_recipspec 7092842
Flx_red 1879656
Flx_rem 41620949
Flx_rem_basecase 786590224
Flx_rem_pre 909357012
Flx_renormalize 2107340422
Flx_rescale 1117
Flx_resultant 4649456
Flx_resultant_basecase_pre 10150624
Flx_resultant_pre 10152673
Flx_shift 26596615
Flx_shiftip 627024051
Flx_splitting 147780
Flx_sqr 356030
Flx_sqr_pre 278578240
Flx_sqrspec 278831318
Flx_sqrspec_Kronecker 683746
Flx_sqrspec_basecase 278674422
Flx_sqrspec_halfsqri 136
Flx_sqrspec_quartsqri 10221
Flx_sqrspec_sqri 2264
Flx_sqrspec_sqri_inflate 11501
Flx_sub 137237509
Flx_subspec 898081
Flx_to_Flv 65534860
Flx_to_FlxX 70982
Flx_to_ZX 36955008
Flx_to_ZX_inplace 36351927
Flx_to_int_halfspec 464651
Flx_to_int_quartspec 204269
Flx_translate1 16107
Flx_translate1_basecase 28201
Flx_triple 1034446
Flx_val 4164078
Flx_valrem 26250948
Flxn_div 55033
Flxn_div_pre 55071
Flxn_exp 0
Flxn_expint 109339
Flxn_inv 1030
Flxn_mul 75308
Flxn_mul_pre 5046392
Flxn_mulhigh 515914
Flxn_recip 216963
Flxn_red 6212945
Flxn_sqr 0
Flxn_sqr_pre 0
FlxqC_Flxq_mul 0
FlxqM_Flxq_mul 0
FlxqM_mul_Kronecker 80753
FlxqV_dotproduct 0
FlxqV_dotproduct_pre 113533
FlxqX_dotproduct 1242
Flxq_autpow 0
Flxq_autpow_msqr 20753
Flxq_autpow_pre 31933
Flxq_autpow_sqr 46325
Flxq_autpowers 1679
Flxq_autsum 0
Flxq_autsum_mul 113367
Flxq_autsum_pre 99233
Flxq_autsum_sqr 105650
Flxq_auttrace 0
Flxq_auttrace_mul 761407
Flxq_auttrace_pre 930089
Flxq_auttrace_sqr 634671
Flxq_charpoly 3632
Flxq_conjvec 20
Flxq_div 237024
Flxq_div_pre 2392040
Flxq_easylog 548327
Flxq_inv 335727
Flxq_inv_pre 4345554
Flxq_invsafe 636551
Flxq_invsafe_pre 5412761
Flxq_is2npower 0
Flxq_issquare 397290
Flxq_log 164497
Flxq_lroot 0
Flxq_lroot_fast 0
Flxq_lroot_fast_pre 113533
Flxq_lroot_pre 25039
Flxq_matrix_pow 385
Flxq_matrix_pow_pre 170388
Flxq_minpoly 43824
Flxq_minpoly_pre 779070
Flxq_mul 13183267
Flxq_mul_pre 191226774
Flxq_norm 435427
Flxq_order 97253
Flxq_pow 930458
Flxq_pow_Frobenius 24469333
Flxq_pow_init 0
Flxq_pow_init_pre 28
Flxq_pow_pre 25394444
Flxq_pow_table 0
Flxq_pow_table_pre 4391
Flxq_powers 231952
Flxq_powers_pre 22148141
Flxq_powu 486966
Flxq_powu_pre 24041446
Flxq_sqr 2756177
Flxq_sqr_pre 277599812
Flxq_sqrt 232362
Flxq_sqrt_pre 232362
Flxq_sqrtn 20013
Flxq_sumautsum_msqr 40473
Flxq_sumautsum_pre 207585
Flxq_sumautsum_sqr 291086
Flxq_trace 4696
Flxq_transmul 4063106
Flxq_transmul_init 1681717
RgXV_to_FlxV 7
RgX_to_Flx 2351892
Rg_to_F2 1706661
Rg_to_Fl 72996981
Rg_to_Flxq 3561722
ZM_unpack_FlxqM 22777
ZM_unpack_FlxqM_bits 57976
ZXT_to_FlxT 3794417
ZXV_to_FlxV 0
ZX_to_Flx 166965539
Z_mod2BIL_Flx 294927
Z_mod2BIL_Flx_2 297857
Z_mod2BIL_Flx_3 0
Z_to_Flx 2588669
ZpX_invLaplace_init 490
_Fl2_mul 1885828
_Fl2_pow 656731
_Fl2_rand 111013
_Fl2_sqr 4815997
_Flx_add 389822
_Flx_composedsum 3819
_Flx_divrem 0
_Flx_mul 10474508
_Flx_sqr 0
_Flxq_equal0 68965
_Flxq_inv 9418
_Flxq_mul 150487232
_Flxq_neg 366530
_Flxq_one 22147769
_Flxq_pow 24461949
_Flxq_powu 68
_Flxq_powu_i 22812885
_Flxq_rand 40977
_Flxq_red 1546555
_Flxq_rmul 1457669
_Flxq_s 6453
_Flxq_sqr 269821949
bounded_order 422672
gener_Flxq 7201
get_Fl_threshold 2294461047
get_Flx_red 972326198
get_Flxq_field 68405
get_Flxq_star 281756
init_invlaplace 12507
int_to_Flx 12298
int_to_Flx_half 504145
int_to_Flx_quart 107247
kron_pack_Flx_spec 53832
kron_pack_Flx_spec_2 3389
kron_pack_Flx_spec_3 0
kron_pack_Flx_spec_bits 20702198
kron_pack_Flx_spec_half 682405
kron_unpack_Flx 42953
kron_unpack_Flx_2 2930
kron_unpack_Flx_3 0
kron_unpack_Flx_bits_narrow 5642471
kron_unpack_Flx_bits_wide 5533021
matJ2_FlxM 13
matid2_FlxM 895
maxbitcoeffpol 8322979
mkF2 7182825
monomial_Flx 907606
random_Flx 2575547
set_Flxq 68425
set_Flxq_pre 70745483
translate_basecase 41366
zero_FlxC 0
zero_FlxM 0
zl_Xp1_powu 12017
zlx_translate1 25259
zx_to_Flx 6071586

Generated by: LCOV version 1.16