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 - FF.c (source / functions) Coverage Total Hit
Test: PARI/GP v2.18.1 lcov report (development 31042-0fbe168e69) Lines: 89.3 % 1443 1289
Test Date: 2026-07-23 17:04:59 Functions: 91.9 % 149 137
Legend: Lines:     hit not hit

Function Name Sort by function name Hit count Sort by function hit count
F3x_equalm1 0
FFC_to_raw 44289
FFM_FFC_gauss 56
FFM_FFC_invimage 63
FFM_FFC_mul 91
FFM_FFC_wrap 210
FFM_FFM_wrap 4662
FFM_deplin 84
FFM_det 63
FFM_gauss 63
FFM_image 49
FFM_indexrank 21
FFM_inv 147
FFM_invimage 105
FFM_ker 77
FFM_mul 4494
FFM_rank 70
FFM_suppl 35
FFM_to_raw 9968
FFM_wrap 308
FFV_roots_to_pol 14
FFXQ_inv 14
FFXQ_minpoly 77
FFXQ_mul 105
FFXQ_sqr 7
FFX_add 0
FFX_ddf 7
FFX_degfact 126
FFX_disc 35
FFX_extgcd 21
FFX_factor 441
FFX_factor_squarefree 7
FFX_gcd 2744
FFX_halfgcd 0
FFX_halfgcd_all 21
FFX_ispower 168
FFX_mul 105477
FFX_nbroots 0
FFX_preimage 966
FFX_preimage_i 1029
FFX_preimagerel 168
FFX_rem 574
FFX_resultant 21
FFX_roots 103670
FFX_sqr 2499
FFX_to_raw 326209
FFX_wrap2 108816
FFX_zero 2643
FF_1 27895
FF_Frobenius 42
FF_Q_add 1337
FF_Z_Z_muldiv 3234
FF_Z_add 1365388
FF_Z_mul 3946719
FF_add 33688944
FF_charpoly 28
FF_conjvec 28
FF_div 2464014
FF_ellcard 103687
FF_ellcard_SEA 14
FF_elldata 119
FF_ellgens 18116
FF_ellgroup 26117
FF_ellinit 121418
FF_elllog 91
FF_ellmul 7
FF_ellorder 1764
FF_ellrandom 245977
FF_elltatepairing 98
FF_elltwist 27188
FF_ellweilpairing 4998
FF_equal 256033
FF_equal0 11510977
FF_equal1 26201
FF_equalm1 42
FF_f 371
FF_gen 770
FF_inv 14086
FF_ispower 210
FF_issquare 7
FF_issquareall 189
FF_log 196
FF_map 1785
FF_minpoly 154
FF_mod 416171
FF_mul 25760621
FF_mul2n 3843722
FF_neg 2299202
FF_neg_i 85064
FF_norm 28
FF_order 56
FF_p 112
FF_p_i 3153530
FF_pow 122
FF_primroot 406
FF_q 81921
FF_samechar 73637639
FF_samefield 73637639
FF_sqr 2971367
FF_sqrt 7161
FF_sqrtn 2212
FF_sub 7934927
FF_to_F2xq 549867
FF_to_F2xq_i 0
FF_to_Flxq 603026
FF_to_Flxq_i 0
FF_to_FpXQ 18973
FF_to_FpXQ_i 172802
FF_trace 28
FF_var 140
FF_zero 6108
Fp_cmp_1 0
FqC_to_FFC 3731
FqC_to_FpXQC 3436
FqM_to_FFM 1715
FqM_to_FpXQM 476
FqV_to_FFV 0
FqV_to_FpXQV 970
FqX_to_FFX 0
Fq_to_FF 143738
RgC_is_FFC 0
RgM_is_FFM 0
Rg_is_FF 0
Rg_to_raw 2222940
Tp_to_FF 8225
Z_FF_div 462
Z_to_raw 431312
_checkFF 69848702
_getFF 86039898
_initFF 84759846
_mkFF 84524124
_mkFF_i 3350761
ffgen 3460
fflog 196
fforder 63
ffprimroot 406
ffrandom 184493
gc_gcdext 21
mkFF_i 3121959
p_to_FF 9779
rawFq_to_FF 670965
raw_to_FFC 124397
raw_to_FFM 4844
raw_to_FFX 111010
raw_to_FFXC 49
raw_to_FFXM 21
raw_to_FFX_fact 448
to_FFE 266511
to_FFE_vec 18116

Generated by: LCOV version 2.0-1