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.1 lcov report (development 30622-caa25a75db) Lines: 1536 1838 83.6 %
Date: 2026-01-22 09:18:00 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
F2xXV_to_F2xM 0
F2xX_F2x_add 0
F2xX_to_F2xC 0
F2xXn_red 0
F2xY_F2xq_evalx 0
F2x_deflate 0
F2x_recip 0
F2x_recip_raw 0
F2xqXM_F2xqX_mul2 0
F2xqXM_mul2 0
F2xqX_F2xqXM_qmul 0
F2xqX_addmulmul 0
F2xqX_extgcd_halfgcd 0
F2xqX_halfgcd 0
F2xqX_halfres 0
F2xqX_halfres_split 0
F2xqX_halfres_update 0
F2xqX_invBarrett_basecase 0
F2xqX_powu 0
_F2xqX_sqr 0
matJ2_F2xXM 0
matid2_F2xXM 0
F2xqV_roots_to_deg1 7
F2xqV_roots_to_pol 7
F2xqXQ_inv 7
F2xqXQ_invsafe 7
F2xqXQ_pow 7
F2xqXV_prod 7
F2xqX_halfgcd_all 7
F2xqX_halfgcd_all_i 7
F2xqX_halfres_basecase 7
F2xqX_halfres_i 7
F2xq_conjvec 7
_F2xqXQ_zero 7
F2xqX_disc 14
F2xqX_extgcd 14
F2xqX_extgcd_basecase 14
F2xq_log_Coppersmith 14
F2xq_log_index 14
F2xq_pow_init 14
check_kernel 14
smallirred_F2x 14
F2xqX_resultant 21
F2xqX_resultant_basecase 21
F2xn_div1 28
F2xn_inv 28
F2xq_log_Coppersmith_rec 28
F2x_recip1 42
F2xn_div 42
F2xn_inv1 42
F2xn_inv_basecase1 42
F2xqX_invBarrett 45
F2xqX_invBarrett_Newton 45
F2xn_mul 46
F2xq_powu 49
F2xX_to_FlxX 56
F2xqXQV_red 63
F2xq_log_find_rel 65
monomial_F2x 70
F2xq_log_from_rel 71
F2xn_red 83
F2xq_log_Coppersmith_d 95
F2x_mulspec_mulii 132
int_to_F2x 132
gener_F2xq 161
F2x_degreespec 264
F2x_to_int 264
F2x_to_F2xX 378
FlxXC_to_F2xXC 394
F2xq_order 399
_F2xq_inv 413
polx_F2xX 439
_F2xq_s 693
_F2xq_neg 798
_F2xqX_mul 882
FlxX_to_F2xX 908
F2x_halfgcd 960
F2x_halfgcd_i 960
_F2xq_equal0 973
F2x_shiftneg 1108
F2xXC_to_ZXXC 1119
F2xX_addspec 1186
F2xqX_divrem_Barrett 1186
F2xqX_divrem_Barrettspec 1189
RgX_to_F2x 1400
F2xX_to_ZXX 1430
get_F2xq_field 1701
F2xq_log_Coppersmith_worker 2045
F2xX_recipspec 2423
F2xqXQ_auttrace 2723
random_F2xqX 2842
F2xqX_mulspec 3019
F2xX_lgrenormalizespec 3337
F2xC_to_ZXC 3842
F2xqXQ_auttrace_sqr 4893
ZXX_to_F2xX 4968
F2xq_pow_table 5244
F2xX_to_Kronecker_spec 6038
F2xqX_F2xq_mul 6993
F2xqXQ_auttrace_mul 7182
F2xqXQ_powers 7712
F2xq_sqrtn 8324
_F2xq_rand 9639
F2x_eval 13370
F2xqX_F2xqXQV_eval 14413
F2xq_autpow_mul 14690
F2x_factorel 15004
_F2xq_rmul 15890
FlxC_to_F2xC 16519
F2x_is_x 19245
F2xq_autpow 19252
mkF2 27006
F2xq_autpow_sqr 29318
F2xV_to_FlxV_inplace 32615
F2x_valrem 32787
F2xqX_divrem 33217
F2xqXQ_autpow_mul 33243
_F2xqXQ_sqr 33250
F2x_issquare 35483
F2xq_sqrt 38705
F2x_F2xq_eval 44735
F2x_addshift 46908
F2x_even_odd 61298
F2xq_sqrt_fast 61298
F2xqXQ_autpow 70432
F2x_addspec 73287
F2xX_deriv 80463
F2xqXQ_autpow_sqr 88807
F2xqXQ_sqr 104277
F2xqX_sqr 105348
_F2xqXQ_mul 114184
F2xqXQ_mul 114240
F2xqX_F2xqXQ_eval 122050
F2x_to_Flx 130351
F2xY_F2xqV_evalx 136414
rel_Coppersmith 147421
Flx_to_F2x 151818
F2xqX_mul 155228
Kronecker_to_F2xqX 158247
F2xqX_gcd_basecase 169357
F2xqX_gcd 169742
F2x_pow2n 175467
F2x_1_add 189927
F2xqX_F2xq_mul_to_monic 205983
F2xqX_normalize 205997
F2xY_degreex 206443
F2xq_Artin_Schreier 211610
Z_to_F2x 213088
F2x_get_red 218645
F2xqX_get_red 219967
F2x_sqrt 232997
F2xq_matrix_pow 233596
F2xV_to_F2m 233598
F2x_matFrobenius 233598
F2x_is_smooth 236530
_F2xq_zero 259292
F2x_is_smooth_squarefree 271772
F2x_shiftpos 274777
F2x_shift 275881
F2xX_to_Kronecker 310456
_F2xqXQ_add 345030
_F2xqXQ_red 351244
F2xq_powers 362828
_F2xqXQ_one 374767
F2xX_add 423367
pol1_F2xX 446179
F2xq_trace 456809
F2xX_F2x_mul 481486
_F2xqXQ_cmul 481486
F2xq_log 541004
F2xqX_divrem_basecase 545205
F2xq_easylog 556659
F2xq_div 558225
_F2xq_red 582165
F2x_F2xqV_eval 610480
F2x_Frobenius 637151
F2xqX_rem 750115
get_F2xqX_red 783332
_F2xq_one 923717
F2xqX_red 1004020
Rg_to_F2xq 1164228
_F2xq_sqr 1207107
F2x_to_ZX 1221050
F2x_deriv 1249364
F2xV_to_ZXV_inplace 1295492
F2x_to_F2v 1550753
F2x_slice 1609211
_F2xq_add 1691136
F2xq_inv 2038561
F2x_extgcd 2038568
F2xq_invsafe 2038568
_F2xq_cmul 2079044
_F2xq_mul 2178596
_F2xq_pow 2386727
F2xq_pow 2429984
F2xX_renormalize 2711078
ZX_to_F2x 3000011
F2x_gcd 3797095
F2x_mulspec_basecase 3819686
F2xq_sqr 8714518
F2x_sqr 9060478
F2xq_mul 10042834
F2x_divrem 11655834
F2x_mul1 20080941
F2x_shiftip 23933066
F2x_mul 28341669
F2x_mulspec 28405811
F2x_add 30999113
F2x_rem 48891261
F2x_degree 80258711
F2x_addshiftip 135581211
F2x_addshiftipspec 163190220
F2x_degree_lg 267617776

Generated by: LCOV version 1.16