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 - alglin1.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.16.1 lcov report (development 28676-df828f1c94) Lines: 2769 3172 87.3 %
Date: 2023-08-26 07:54:43 Functions: 292 314 93.0 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
F2Ms_colelim 53
F2m_image 7
F2m_indexrank 60
F2m_suppl 14
F2xqM_F2xqC_gauss 28
F2xqM_F2xqC_invimage 21
F2xqM_F2xqC_mul 21
F2xqM_deplin 14
F2xqM_det 7
F2xqM_gauss 21
F2xqM_gauss_gen 84
F2xqM_gauss_pivot 21
F2xqM_image 7
F2xqM_indexrank 7
F2xqM_inv 35
F2xqM_invimage 21
F2xqM_ker 21
F2xqM_ker_i 35
F2xqM_mul 1407
F2xqM_rank 7
F2xqM_suppl 7
FlkM_adjoint 3201
FlkM_inv 0
FlkM_ker 1276
FlmV_recover_pre 4477
Flm_image 39564
Flm_indexrank 52968
Flm_suppl 105
FlxqM_FlxqC_gauss 14
FlxqM_FlxqC_invimage 21
FlxqM_FlxqC_mul 35
FlxqM_deplin 35
FlxqM_det 28
FlxqM_gauss 21
FlxqM_gauss_i 91
FlxqM_gauss_pivot 1448
FlxqM_image 21
FlxqM_indexrank 7
FlxqM_inv 56
FlxqM_invimage 42
FlxqM_ker 28
FlxqM_ker_i 3029
FlxqM_mul 157015
FlxqM_rank 35
FlxqM_suppl 14
FpM_FpC_gauss 14
FpM_FpC_invimage 296097
FpM_FpC_invimage_gen 8
FpM_deplin 452365
FpM_det 3948
FpM_det_gen 315
FpM_gauss 35
FpM_gauss_gen 3533
FpM_gauss_i 326739
FpM_gauss_pivot 597737
FpM_gauss_pivot_gen 871
FpM_image 309339
FpM_indexrank 30339
FpM_init 1222239
FpM_init3 1273187
FpM_intersect 0
FpM_intersect_i 264221
FpM_inv 326689
FpM_invimage 0
FpM_invimage_gen 35
FpM_ker 813356
FpM_ker_gen 2331
FpM_ker_i 1273189
FpM_rank 56
FpM_ratlift_parallel 639923
FpM_ratlift_worker 73147
FpM_suppl 258010
FpXM_ratlift 1276
FqM_FqC_gauss 14
FqM_FqC_invimage 21
FqM_FqC_mul 63
FqM_deplin 84
FqM_det 70
FqM_gauss 21
FqM_gauss_gen 133
FqM_gauss_pivot 1525
FqM_gauss_pivot_gen 105
FqM_image 49
FqM_indexrank 7
FqM_inv 98
FqM_invimage 42
FqM_ker 10498
FqM_ker_gen 126
FqM_ker_i 10582
FqM_mul 66409
FqM_rank 70
FqM_suppl 4997
QC_normalize 6213
QM_deplin 119
QM_det 196
QM_gauss 5905
QM_gauss_i 6206
QM_image 5201
QM_image_shallow 5971
QM_indexrank 1148
QM_inv 60664
QM_ker 16541
QM_rank 0
RgC_inflate 14
RgM_Fp_init 2177
RgM_Fp_init3 189
RgM_Hadamard 19432
RgM_RgC_invimage 2275
RgM_RgC_invimage_FpC 28
RgM_RgC_invimage_fast 2170
RgM_RgC_solve_FpC 49
RgM_RgC_solve_fast 1181535
RgM_deplin 385
RgM_deplin_FpM 105
RgM_deplin_FqM 49
RgM_deplin_fast 385
RgM_deplin_i 28
RgM_det2 84662
RgM_det_FpM 1519
RgM_det_FqM 42
RgM_det_fast 34567
RgM_image_FpM 63
RgM_image_FqM 35
RgM_image_fast 5362
RgM_indexrank_FpM 28
RgM_indexrank_FqM 0
RgM_indexrank_fast 60533
RgM_inv 205347
RgM_inv_FpM 112
RgM_inv_FqM 42
RgM_inv_fast 205348
RgM_inv_upper 278426
RgM_inv_upper_ind 833767
RgM_invimage 364
RgM_invimage_FpM 84
RgM_invimage_fast 364
RgM_is_symmetric_cx 53
RgM_ker_FpM 84
RgM_ker_FqM 91
RgM_ker_fast 8568
RgM_pivots 144196
RgM_rank_FpM 126
RgM_rank_FqM 49
RgM_rank_fast 294
RgM_solve 1230150
RgM_solve_FpM 98
RgM_solve_basecase 1374353
RgM_solve_fast 48615
RgM_solve_realimag 1213820
RgM_suppl_FpM 70
RgM_suppl_fast 175
RgM_true_Hadamard 548684
RgMs_structelim 0
RgMs_structelim_col 119
RgV_deplin 0
ZM_adj_ratlift 576136
ZM_count_0_cols 348510
ZM_det 120381
ZM_det2 6371
ZM_det3 93053
ZM_det_slice 20616
ZM_det_worker 20616
ZM_detmult 156917
ZM_gauss 1577129
ZM_imagecompl 0
ZM_indeximage 5971
ZM_indexrank 25802
ZM_inv 719232
ZM_inv0 41230
ZM_inv1 67141
ZM_inv2 122837
ZM_inv_i 779897
ZM_inv_ratlift 0
ZM_inv_slice 601466
ZM_inv_worker 601466
ZM_ker 47125
ZM_ker_chinese 69556
ZM_ker_filter 105223
ZM_ker_i 62847
ZM_ker_slice 129579
ZM_ker_worker 129579
ZM_pivots 366619
ZM_pseudoinv 4977
ZM_rank 101150
ZabM_indexrank 2387
ZabM_inv 1820
ZabM_inv_ratlift 0
ZabM_inv_slice 1978
ZabM_inv_worker 1978
ZabM_ker 623
ZabM_ker_check 655
ZabM_pseudoinv 140
ZabM_true_Hadamard 1820
ZlM_gauss_ratlift 1574916
_F2xqM_mul 0
_FlxqM_mul 16373
_FpM_mul 19588
_FqM_mul 6349
_copy 0
_gen_addmul 151919
_gen_get_col 61185
_submul 10730291
add_slices 0
can_ratlift 582802
closemodinvertible 14739
coeff_det 406
col_count_non_zero 1470
deplin 385
det 319358
det0 26460
det2 116990
det_bareiss 462
det_develop 658
det_init_max 252
det_simple_gauss 61525
detint 47549
eigen 0
eigen_err 53
fill_wcol 6097
gauss 434
gauss_get_pivot_NZ 4501
gauss_get_pivot_max 1906877
gauss_get_pivot_padic 229350
gauss_pivot 59119
gauss_pivot_ker 1271
gen_CUP 10979
gen_CUP_basecase 21367
gen_Gauss 13703
gen_Gauss_pivot 1611
gen_colei 154
gen_colneg 18426
gen_colscalmul 295585
gen_colsub 563297
gen_deplin_echelon 105
gen_det 294
gen_det_CUP 140
gen_det_i 420
gen_echelon 26368
gen_gauss 3841
gen_gauss_CUP 524
gen_gerepile_gauss_ker 0
gen_get_suppl 21
gen_invimage 140
gen_invimage_CUP 63
gen_ker 1703
gen_ker_echelon 3861
gen_ker_i 5592
gen_lsolve_lower_unit 19191
gen_lsolve_lower_unit_2 7453
gen_lsolve_upper 13481
gen_lsolve_upper_2 5852
gen_matcolinvimage 0
gen_matcolinvimage_i 71
gen_matcolmul 201210
gen_matcolmul_i 632418
gen_matinv_upper 28
gen_matinv_upper_ind 77
gen_matinvimage 77
gen_matmul 83336
gen_matmul_classical 83336
gen_matmul_i 83336
gen_matmul_sw 0
gen_matneg 3938
gen_matrank 35
gen_matscalmul 51014
gen_matsub 73544
gen_pivots 2466
gen_pivots_CUP 862
gen_rsolve_lower_unit 37137
gen_rsolve_lower_unit_2 15918
gen_rsolve_upper 5399
gen_rsolve_upper_2 2074
gen_solve_upper_1 3865
gen_suppl 21
gen_zerocol 44342
gen_zeromat 14217
gerepile_gauss 0
gerepile_gauss_ker 0
gerepile_mat 0
get_col 673035
get_pivot_fun 597071
get_suppl 259601
image 5362
image2 7
image_from_pivot 349002
imagecompl 84
imagecompl_aux 84
indexcompl 17077
indeximage0 5971
indexrank 60533
indexrank0 190427
indexrank_all 22295
init_gauss 2052035
init_indexrank 174106
init_suppl 259598
inverseimage 2436
ker 8568
ker_aux 1271
mateigen 144
matimage0 210
matker0 46221
parallelogramarea 62272
perm_complete 44590
rank 294
reducemodinvertible 7
reducemodlll 0
rem_col 111649
rem_singleton 6269
row_count_non_zero 1456
split_realimag 2566893
split_realimag_col 4502145
subtract_slices 0
suppl 175
vecnorml1 5467

Generated by: LCOV version 1.14