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 - F2x.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.0 lcov report (development 29815-a300ec5c34) Lines: 1543 1845 83.6 %
Date: 2024-12-25 09:08:54 Functions: 191 214 89.3 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
F2xC_to_FlxC 0
F2xC_to_ZXC 3843
F2xV_to_F2m 234917
F2xV_to_FlxV_inplace 30456
F2xV_to_ZXV_inplace 1429157
F2xXC_to_ZXXC 1267
F2xXV_to_F2xM 0
F2xX_F2x_add 0
F2xX_F2x_mul 481782
F2xX_add 423492
F2xX_addspec 1186
F2xX_deriv 80535
F2xX_lgrenormalizespec 3337
F2xX_recipspec 2423
F2xX_renormalize 2713075
F2xX_to_F2xC 0
F2xX_to_FlxX 56
F2xX_to_Kronecker 310708
F2xX_to_Kronecker_spec 6038
F2xX_to_ZXX 1638
F2xXn_red 0
F2xY_F2xqV_evalx 136584
F2xY_F2xq_evalx 0
F2xY_degreex 206577
F2x_1_add 189895
F2x_F2xqV_eval 610904
F2x_F2xq_eval 44849
F2x_Frobenius 656597
F2x_add 31082517
F2x_addshift 46908
F2x_addshiftip 136788174
F2x_addshiftipspec 164437517
F2x_addspec 73287
F2x_deflate 0
F2x_degree 81349301
F2x_degree_lg 270443395
F2x_degreespec 264
F2x_deriv 1281860
F2x_divrem 11703101
F2x_eval 13370
F2x_even_odd 61558
F2x_extgcd 2042116
F2x_factorel 15035
F2x_gcd 3884870
F2x_get_red 219128
F2x_halfgcd 837
F2x_halfgcd_i 837
F2x_is_smooth 240519
F2x_is_smooth_squarefree 276092
F2x_is_x 19319
F2x_issquare 35865
F2x_matFrobenius 234919
F2x_mul 28356808
F2x_mul1 20094190
F2x_mulspec 28420983
F2x_mulspec_basecase 3820813
F2x_mulspec_mulii 132
F2x_pow2n 182663
F2x_recip 0
F2x_recip1 42
F2x_recip_raw 0
F2x_rem 49365831
F2x_shift 283794
F2x_shiftip 23947399
F2x_shiftneg 1269
F2x_shiftpos 282543
F2x_slice 1609820
F2x_sqr 9143242
F2x_sqrt 243836
F2x_to_F2v 1555668
F2x_to_F2xX 378
F2x_to_Flx 132047
F2x_to_ZX 1312062
F2x_to_int 264
F2x_valrem 35396
F2xn_div 42
F2xn_div1 28
F2xn_inv 28
F2xn_inv1 42
F2xn_inv_basecase1 42
F2xn_mul 46
F2xn_red 83
F2xqV_roots_to_deg1 7
F2xqV_roots_to_pol 7
F2xqXM_F2xqX_mul2 0
F2xqXM_mul2 0
F2xqXQV_red 63
F2xqXQ_autpow 70490
F2xqXQ_autpow_mul 33271
F2xqXQ_autpow_sqr 88865
F2xqXQ_auttrace 2730
F2xqXQ_auttrace_mul 7224
F2xqXQ_auttrace_sqr 4921
F2xqXQ_inv 7
F2xqXQ_invsafe 7
F2xqXQ_mul 114240
F2xqXQ_pow 7
F2xqXQ_powers 7812
F2xqXQ_sqr 104292
F2xqXV_prod 7
F2xqX_F2xqXM_qmul 0
F2xqX_F2xqXQV_eval 14497
F2xqX_F2xqXQ_eval 122136
F2xqX_F2xq_mul 7021
F2xqX_F2xq_mul_to_monic 206248
F2xqX_addmulmul 0
F2xqX_disc 14
F2xqX_divrem 33299
F2xqX_divrem_Barrett 1186
F2xqX_divrem_Barrettspec 1189
F2xqX_divrem_basecase 545448
F2xqX_extgcd 14
F2xqX_extgcd_basecase 14
F2xqX_extgcd_halfgcd 0
F2xqX_gcd 169838
F2xqX_gcd_basecase 169469
F2xqX_get_red 220360
F2xqX_halfgcd 0
F2xqX_halfgcd_all 7
F2xqX_halfgcd_all_i 7
F2xqX_halfres 0
F2xqX_halfres_basecase 7
F2xqX_halfres_i 7
F2xqX_halfres_split 0
F2xqX_halfres_update 0
F2xqX_invBarrett 45
F2xqX_invBarrett_Newton 45
F2xqX_invBarrett_basecase 0
F2xqX_mul 155354
F2xqX_mulspec 3019
F2xqX_normalize 206262
F2xqX_powu 0
F2xqX_red 1004330
F2xqX_rem 750265
F2xqX_resultant 21
F2xqX_resultant_basecase 21
F2xqX_sqr 105370
F2xq_Artin_Schreier 211596
F2xq_autpow 19326
F2xq_autpow_mul 14707
F2xq_autpow_sqr 29414
F2xq_conjvec 7
F2xq_div 558109
F2xq_easylog 559557
F2xq_inv 2042109
F2xq_invsafe 2042116
F2xq_log 543718
F2xq_log_Coppersmith 14
F2xq_log_Coppersmith_d 110
F2xq_log_Coppersmith_rec 28
F2xq_log_Coppersmith_worker 2050
F2xq_log_find_rel 64
F2xq_log_from_rel 81
F2xq_log_index 14
F2xq_matrix_pow 234919
F2xq_mul 10050729
F2xq_order 392
F2xq_pow 2440369
F2xq_pow_init 14
F2xq_pow_table 5247
F2xq_powers 364279
F2xq_powu 49
F2xq_sqr 8782452
F2xq_sqrt 38807
F2xq_sqrt_fast 61558
F2xq_sqrtn 7161
F2xq_trace 456749
FlxC_to_F2xC 16520
FlxXC_to_F2xXC 497
FlxX_to_F2xX 1043
Flx_to_F2x 151176
Kronecker_to_F2xqX 158373
RgX_to_F2x 1400
Rg_to_F2xq 1164279
ZXX_to_F2xX 5117
ZX_to_F2x 3142190
Z_to_F2x 213317
_F2xqXQ_add 345198
_F2xqXQ_cmul 481782
_F2xqXQ_mul 114184
_F2xqXQ_one 375039
_F2xqXQ_red 351372
_F2xqXQ_sqr 33292
_F2xqXQ_zero 49
_F2xqX_mul 882
_F2xqX_sqr 0
_F2xq_add 1701129
_F2xq_cmul 2089187
_F2xq_equal0 861
_F2xq_inv 364
_F2xq_mul 2183187
_F2xq_neg 756
_F2xq_one 926477
_F2xq_pow 2397109
_F2xq_rand 9457
_F2xq_red 583540
_F2xq_rmul 15799
_F2xq_s 623
_F2xq_sqr 1208756
_F2xq_zero 259306
check_kernel 14
gener_F2xq 161
get_F2xqX_red 783564
get_F2xq_field 1666
int_to_F2x 132
matJ2_F2xXM 0
matid2_F2xXM 0
mkF2 27094
monomial_F2x 63
pol1_F2xX 446481
polx_F2xX 497
random_F2xqX 2832
rel_Coppersmith 147977
smallirred_F2x 14

Generated by: LCOV version 1.16