Skip to content

Rewrite the data files in a compact format - #69

Draft
fingolfin wants to merge 1 commit into
masterfrom
mh/compact
Draft

Rewrite the data files in a compact format#69
fingolfin wants to merge 1 commit into
masterfrom
mh/compact

Conversation

@fingolfin

Copy link
Copy Markdown
Member

Three changes to how data/gps*.g is written, none to what it says:

  • matrices over the prime field GF(p) become integer matrices scaled once by Z(p)^0, instead of spelling out 0*Z(p) and Z(p)^k per entry. This also collapses the two conventions previously in use, Z(q)^k in gps1-24 and k*Z(p)^0 in gps25-39.

  • A_n, S_n, PSL(2,q) and PGL(2,q) in their natural actions are named with PGAlt, PGSym, PGPsl and PGPgl rather than repeated in full: 9294 of the 24558 entries. Those fields can no longer drift apart, which is how the socle types of the natural A_n and S_n came to be wrong above degree 2500. The five entries in degrees 2, 3 and 4 where A_n and S_n really are affine are still written out, and the writer only uses the short form where it agrees with the stored entry in every field. This is partial progress towards issue Replace natural A(n) and S(n) by special placeholders in data files #53.

  • no indentation, one entry per line. That also removes the backslash-split string literals, which no line-based tool could read.

This shrinks the data: 40781766 -> 32080459 bytes, 14025491 -> 12922412 gzipped.

Verified by reading every degree from the old files and the new ones into two copies of PRIMGRP and comparing: no difference in any of the 4094 degrees.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

Three changes to how data/gps*.g is written, none to what it says:

  - matrices over the prime field GF(p) become integer matrices scaled once
    by Z(p)^0, instead of spelling out 0*Z(p) and Z(p)^k per entry. This also
    collapses the two conventions previously in use, Z(q)^k in gps1-24 and
    k*Z(p)^0 in gps25-39.

  - A_n, S_n, PSL(2,q) and PGL(2,q) in their natural actions are named with
    PGAlt, PGSym, PGPsl and PGPgl rather than repeated in full: 9294 of the
    24558 entries. Those fields can no longer drift apart, which is how the
    socle types of the natural A_n and S_n came to be wrong above degree 2500.
    The five entries in degrees 2, 3 and 4 where A_n and S_n really are affine
    are still written out, and the writer only uses the short form where it
    agrees with the stored entry in every field.

  - no indentation, one entry per line. That also removes the backslash-split
    string literals, which no line-based tool could read.

40781766 -> 32080459 bytes, 14025491 -> 12922412 gzipped.

Verified by reading every degree from the old files and the new ones into two
copies of PRIMGRP and comparing: no difference in any of the 4094 degrees.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@fingolfin
fingolfin marked this pull request as draft August 18, 2026 15:44
@fingolfin

Copy link
Copy Markdown
Member Author

This has some more potential for savings, will follow-up.

@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.12%. Comparing base (8cffefb) to head (9ea9906).

Additional details and impacted files
@@             Coverage Diff             @@
##           master      #69       +/-   ##
===========================================
- Coverage   99.91%   99.12%    -0.80%     
===========================================
  Files          46       46               
  Lines      383081    38189   -344892     
===========================================
- Hits       382745    37853   -344892     
  Misses        336      336               
Files with missing lines Coverage Δ
data/gps1.g 100.00% <ø> (ø)
data/gps10.g 100.00% <ø> (ø)
data/gps11.g 100.00% <ø> (ø)
data/gps12.g 100.00% <ø> (ø)
data/gps13.g 100.00% <ø> (ø)
data/gps14.g 100.00% <ø> (ø)
data/gps15.g 100.00% <ø> (ø)
data/gps16.g 100.00% <ø> (ø)
data/gps17.g 100.00% <ø> (ø)
data/gps18.g 100.00% <ø> (ø)
... and 30 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant