issue 7006 - std.math.pow (integral, integral) crashes on negative exponents
Martin Tschierschke
mt at smartdolphin.de
Tue Dec 17 16:48:42 UTC 2019
On Tuesday, 17 December 2019 at 14:02:53 UTC, Patrick Schluter
wrote:
[...]
>> To summarize:
>> If we need to stay with int ^^ int == int, I vote NOT to
>> return 0 for negative exponent and still throw, except for the
>> three special cases, where the correct result should be given.
>
> Except for 0^^0 there is no reason to throw or crap out.
> int.max+1 also doesn't throw and it is also generally a
> probable bug in the user code.
But 0^^0 in general, is very often replaced by lim x-> 0 x^^x
witch is 1.
The question is answered here:
https://stackoverflow.com/questions/19955968/why-is-math-pow0-0-1
...long story but may be this is the point:
"as a general rule, native functions to any language should work
as described in the language specification. Sometimes this
includes explicitly "undefined behavior" where it's up to the
implementer to determine what the result should be, however this
is not a case of undefined behavior."
If you look at pow in the cpp.reference language definition, you
realize how 'complex' the pow issue becomes...
https://en.cppreference.com/w/cpp/numeric/math/pow
More information about the Digitalmars-d
mailing list