-
Notifications
You must be signed in to change notification settings - Fork 226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve Heuman Lambda precision: #1125
Conversation
Make sure we pass 1 - k^2 down through the call stack otherwise we get cancellation errors.
@mborland the clang/Mac errors are coming down, but there's still a few left to investigate, starting with the binomial failures, can I get you to run the following? The quantile is returning zero in this case which is very strange:
|
The other main errors are from autodiff, I can't tell from the output if these are small tolerance failures, or something more serious? |
Clang 18:
GCC-13
|
Thanks @mborland : looks like the ibeta is going strangely wrong, OK can you try this one for me? Thanks again!
Output should be:
|
@jzmaddock Here it is: Clang-18
GCC-13
|
Thanks Matt, this might be a tough one: the incomplete beta is basically returning garbage (all digits in the log terms cancel out). Will have to think about this... |
@pulver do you have any thoughts on the clang/Mac autodiff failures? I note that you're using random_device in the tests which has the drawback of rendering the test non-reproducable? But also for example in the Hermite tests, running a fairly exhaustive search using interval arithmetic, I can find "bad" cases fairly easily, for example:
The issue here, is that the Hermite is a polynomial (albeit we calculate via recurrence relations), and so the error is always absolute and relative to the largest term. There is no way round that that I can see: if you hit an ill-conditioned polynomial there's not much we can do about it. Is this likely to be the cause? |
@NAThompson : cubic_roots_test is generating NaN's, but only in Clang C++20 mode: any ideas? |
The |
For Clang on Apple, as it can not be made to pass here.
Apart from a network failure in drone, this is passing now... merging. |
Make sure we pass 1 - k^2 down through the call stack otherwise we get cancellation errors.