Investigate test-pari failure for A131083 periodic sequence #637
+58
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
test-paricommand fails for A131083 with deep recursion error. The generated PARI formula has 7 initial terms but needs 8 for the recurrencea(n) = a(n-8)with offset 1:When evaluating
a(8), it callsa(0)which is undefined, causing infinite recursion.Investigation Summary
The issue stems from interactions between formula generation and variant simplification:
getNumInitialTermsNeeded()computesloopCounterDecrement * stateful.size() = 1 * 7 = 7simplifyFormulaUsingVariants()applies an optimized variant that also specifies 7 terms, overwriting the calculated valuea(8) = 30Attempted Fixes
Root Cause
The variant system recalculates
num_initial_termsfor simplified formulas, but this calculation is off-by-one for pure periodic recurrences. The fix requires either:num_initial_termscalculation logica(n) = a(n-k)with no additional termsTest files added for reproduction. The variant simplification system (lines 199-244 in
src/form/variant.cpp) needs review to understand why it underestimates initial terms for periodic sequences.Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.