A Gaussian below the bar is read as its negated exponent above it - #1641
Merged
Merged
Conversation
e^(-x^2)/x^2 was integrated by the Gaussian's moments, and 1/(e^(x^2) x^2), the same function, was not: the moment rule took the exponential from above the bar only. By parts writes the factor beside erf(b x) in erf(b x)/(e^(b^2 x^2) x^2) the second way, and that integral was declined for want of it. A Gaussian below the bar is read as the exponential of its negated exponent now. Measured on the Rubi corpus, master at 2db4278 and this change on it, run side by side: family 8 367 -> 371 of 420, erf and erfc of b x over e^(b^2 x^2) x^2 and over e^(b^2 x^2) x^4; family 2 544 of 650, the independent suites 1756 of 1814 and families 1 and 3 to 7 at five a file 799 of 897, on both. 0 wrong everywhere. Run alone, the four are 0 of 4 on master and 4 of 4 here, each answered in 0.2 to 0.9 s where master declined it in 2.4 to 10.5 s. The unit tests pass, 14,249. The performance gate passes on c6024927, which is this change on 2db4278: allocation is what the baseline says on all 19 gated benchmarks. GaussianIntegralTest has two rows with the Gaussian below the bar, each differentiated back. Part of #1501. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
e^(-x^2)/x^2was integrated by the Gaussian's moments, and1/(e^(x^2) x^2), the same function, was not: the rule for the moments took the exponential from above the bar only. By parts writes the factor besideerf(b x)inerf(b x)/(e^(b^2 x^2) x^2)the second way, and that integral was declined for want of it. A Gaussian below the bar is read as the exponential of its negated exponent now.Measured
"1/(e^(x^2)*x^2)".Integrate("x")integral(1 / (e ^ x ^ 2 * x ^ 2), x)-1 / x * e ^ (-x ^ 2) + (-2) * pi ^ (1/2) / 2 * erf(x) + C"erf(b*x)/(e^(b^2*x^2)*x^2)".Integrate("x")UnrecognizedFunctionParseException: there is no functionerferfandEi(-2 b^2 x^2)2db42780and this change on it, run side by side, 0 wrong everywhere:erfanderfcofb xovere^(b^2 x^2) x^2and overe^(b^2 x^2) x^4.c6024927, which is this change on2db42780. Allocation matches the baseline on all 19 gated benchmarks.GaussianIntegralTesthas two rows with the Gaussian below the bar, each differentiated back.Part of #1501.
🤖 Generated with Claude Code