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 30640-c2c58e18c5) Lines: 1019 1106 92.1 %
Date: 2026-01-27 08:51:18 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 5915
_domul 2002
abelian_group 390
all_cyclic_subg 14
conjclasses_repr 4270
cyc_pow 6597
cyc_pow_perm 0
cyclic_subg 434
cyclicgroup 27844
dicyclicgroup 1085
galois_elts_sorted 3885
group_abelianHNF 343
group_abelianSNF 294
group_domain 26636
group_elts 134510
group_export 28
group_export_GAP 14
group_export_MAGMA 14
group_isA4S4 9990
group_isabelian 8862
group_leftcoset 304032
group_order 703919
group_perm_normalize 181993
group_quotient 10165
group_rightcoset 181993
group_set 90675
group_subgroup_is_faithful 4816
group_subgroup_isnormal 336
group_subgroup_kernel_set 4816
group_subgroups 13158
group_to_cc 4291
groupelt_subg_normalize 812
groupelts_abelian_group 0
groupelts_center 700
groupelts_conj_set 14448
groupelts_conjclasses 4270
groupelts_cyclic_primepow 14
groupelts_cyclic_subgroups 3553
groupelts_exponent 0
groupelts_pow 434
groupelts_quotient 11665
groupelts_residuum 14
groupelts_set 28026
groupelts_solvablesubgroups 14
groupelts_subgroup_isnormal 14597
groupelts_subgroups_raw 14
groupelts_to_group 3560
groupelts_to_regular 14
grp_get_gen 935039
grp_get_ord 1582968
isperm 2667
liftlistsubgroups 65223
liftsubgroup 49194
numtoperm 5915
perm_bracket 50400
perm_commute 572537
perm_cycles 11940
perm_generate 13052
perm_mul_inplace2 21
perm_order 427
perm_orderu 436226
perm_pow 77
perm_powu 18281
perm_relorder 220088
perm_sign 870885
perm_to_GAP 21
perm_to_Z 1680
perm_to_Z_inplace 1701
permcycles 259
permorder 434
permsign 273
permtonum 1708
quo_get_coset 29974
quo_get_gen 141519
quotient_group 10158
quotient_groupelts 1500
quotient_perm 29974
quotient_subgroup_lift 50694
set_derived 14
set_groupelts 826
set_idx 14
sgcmp 17353
subg_extend 364
subg_get_gen 1176
subg_get_set 8694
subg_to_elts 14
subgroups_tableset 497
tableset_find_index 2002
triv_subg 14
trivialgroup 52390
trivialsubgroups 52362
vec_insert 98084
vec_is1to1 0
vec_isconst 1848
vecperm_extendschreier 0
vecperm_orbits 4643
vecperm_orbits_i 1324104
vecsmall_counting_indexsort 12434
vecsmall_counting_sort 1778547
vecsmall_counting_uniq 16069
vecsmall_duplicate 20669
vecsmall_duplicate_sorted 0
vecsmall_indexsort 2458365
vecsmall_indexsortspec 8105050
vecsmall_is1to1 10434
vecsmall_is1to1spec 51356
vecsmall_isconst 16185
vecsmall_sort 29211274
vecsmall_sort_max 25426344
vecsmall_sortspec 149801303
vecsmall_uniq 16428
vecsmall_uniq_sorted 8282
vecvecsmall_indexsort 861
vecvecsmall_max 0
vecvecsmall_search 22934359
vecvecsmall_sort 14
vecvecsmall_sort_inplace 126
vecvecsmall_sort_shallow 365332
vecvecsmall_sort_uniq 462

Generated by: LCOV version 1.16