Open Ashish-Gautam-22 opened 1 year ago
If I'm reading this correctly, we have:
z = 81472.4;
a = 36052;
agh = 36064.7;
and so
pow(z / agh, a / 4)
is
9.01032e+3189
Which is within the limits (1.189731495357231765e+4932) of an extended precision long double, so if you're seeing overflow here, my suspicion is that std::pow(long double, long double)
is really just calling the double version internally on that platform? If so that breaks all our internal logic for what will overflow when.
We have a macro BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS which when defined disables all use of (and support for) long double's by the library which appears may be necessary in this case. I know nothing about the platform BTW, so this is just a hunch. Also be aware that some emulators (valgrind is the prime culprit here) do not behave in the same way as the actual hardware in all cases, especially when it comes to long doubles.
I am trying to validate BOOST 1.83.0 for QNX 7.1. For the same I am running the required tests on the QNX 7.1 VM to make sure everything passes. In the random package all tests except test_poisson and test_negative_binomial are passing. I have added some traces to diagnose the issue and I have found out where the issue is happening. Please help me understand if it's a QNX issue or a BOOST issue and what's the fix. Firstly, I have modified the regularised_gamma_prefix function gamma,hpp file in the following way to get some traces:
The output that I get in QNX console is:
When a =36053, the first if else condition is triggered which then causes roughly this to be executed "pow(2,900)" which obviously gives an error. The value of 'a' is dictated from the "test_real_distribution.ipp" file, it's supposed to keep increasing much further beyong 36053. Please help me understand what might be the cause of the same.