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 - perm.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.18.1 lcov report (development 30702-bddb8d6928) Lines: 1019 1106 92.1 %
Date: 2026-02-23 02:23:56 Functions: 112 119 94.1 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
Z_to_perm 5069
_domul 1674
abelian_group 396
all_cyclic_subg 12
conjclasses_repr 3660
cyc_pow 6288
cyc_pow_perm 0
cyclic_subg 372
cyclicgroup 23882
dicyclicgroup 906
galois_elts_sorted 3330
group_abelianHNF 330
group_abelianSNF 288
group_domain 22838
group_elts 120723
group_export 24
group_export_GAP 12
group_export_MAGMA 12
group_isA4S4 8570
group_isabelian 7668
group_leftcoset 260674
group_order 608971
group_perm_normalize 156066
group_quotient 8720
group_rightcoset 156066
group_set 77683
group_subgroup_is_faithful 4128
group_subgroup_isnormal 288
group_subgroup_kernel_set 4128
group_subgroups 11292
group_to_cc 3678
groupelt_subg_normalize 696
groupelts_abelian_group 0
groupelts_center 600
groupelts_conj_set 12384
groupelts_conjclasses 3660
groupelts_cyclic_primepow 12
groupelts_cyclic_subgroups 3066
groupelts_exponent 0
groupelts_pow 372
groupelts_quotient 10016
groupelts_residuum 12
groupelts_set 24024
groupelts_solvablesubgroups 12
groupelts_subgroup_isnormal 12522
groupelts_subgroups_raw 12
groupelts_to_group 3071
groupelts_to_regular 12
grp_get_gen 807125
grp_get_ord 1368020
isperm 2207
liftlistsubgroups 55879
liftsubgroup 42153
numtoperm 5069
perm_bracket 43200
perm_commute 490719
perm_cycles 11426
perm_generate 11182
perm_mul_inplace2 15
perm_order 341
perm_orderu 374100
perm_pow 66
perm_powu 15991
perm_relorder 188508
perm_sign 796355
perm_to_GAP 18
perm_to_Z 1440
perm_to_Z_inplace 1457
permcycles 197
permorder 346
permsign 207
permtonum 1463
quo_get_coset 25698
quo_get_gen 121310
quotient_group 8714
quotient_groupelts 1296
quotient_perm 25698
quotient_subgroup_lift 43449
set_derived 12
set_groupelts 708
set_idx 12
sgcmp 14874
subg_extend 312
subg_get_gen 1008
subg_get_set 7452
subg_to_elts 12
subgroups_tableset 426
tableset_find_index 1716
triv_subg 12
trivialgroup 44898
trivialsubgroups 44875
vec_insert 70060
vec_is1to1 0
vec_isconst 1584
vecperm_extendschreier 0
vecperm_orbits 3942
vecperm_orbits_i 1186164
vecsmall_counting_indexsort 10130
vecsmall_counting_sort 1657736
vecsmall_counting_uniq 13853
vecsmall_duplicate 16417
vecsmall_duplicate_sorted 0
vecsmall_indexsort 2012144
vecsmall_indexsortspec 6628848
vecsmall_is1to1 9482
vecsmall_is1to1spec 45254
vecsmall_isconst 14906
vecsmall_sort 16488107
vecsmall_sort_max 13279109
vecsmall_sortspec 76470752
vecsmall_uniq 14141
vecsmall_uniq_sorted 26883
vecvecsmall_indexsort 735
vecvecsmall_max 0
vecvecsmall_search 16383280
vecvecsmall_sort 12
vecvecsmall_sort_inplace 108
vecvecsmall_sort_shallow 313279
vecvecsmall_sort_uniq 330

Generated by: LCOV version 1.16