Reject a precision below one in ReduceSignificance [patch] - #130
Merged
Merged
Conversation
ReduceSignificance did not validate its argument, so 5 reduced to zero significant digits returned 10, and to minus one returned 0, with no error. It now throws ArgumentOutOfRangeException below one, as Divide, the roots, Sin and the constant accessors already do. The exponent addition is now checked too, following the exponent-overflow fix in #120, so a result beyond int's exponent range throws OverflowException instead of wrapping. Fixes #126 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LasidbyRZfyxgW8Z9wQu9M
|
This was referenced Sep 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.



Fixes #126
What changed
ReduceSignificance(int)now throwsArgumentOutOfRangeExceptionwhensignificantDigits < 1. It uses the same message asDivideandConstantTo. Before this,5.ReduceSignificance(0)returned 10 and5.ReduceSignificance(-1)returned 0.checked(Exponent + significantDifference), following Throw OverflowException when Multiply or Divide leaves the int exponent range #120. A result beyond theintexponent range throwsOverflowExceptioninstead of wrapping. I also removed theExponent == 0special case, which gave the same result as the plain sum.<exception>docs for both exceptions.Tests
TestReduceSignificanceRejectsAPrecisionBelowOnechecks 0, -1 andint.MinValue, on both an integer andPi.TestReduceSignificanceThrowsWhenTheExponentLeavesTheIntRangeuses an exponent ofint.MaxValue - 1and reduces 5 digits to 3.dotnet test PreciseNumber.Testpasses 413/413.🤖 Generated with Claude Code
https://claude.ai/code/session_01LasidbyRZfyxgW8Z9wQu9M
Generated by Claude Code