On Wednesday, 24 August 2016 at 19:16:56 UTC, jmh530 wrote:
I'm a little confused on why pow behaves so differently when
switching from an int to a uint for the exponent.
import std.math : pow;
import std.stdio : writeln;
void main()
{
float x = 2;
int y1 = 1;
uint y2 = 1;
writeln(pow(x, -y1)); //prints 0.5
writeln(pow(x, -y2)); //prints inf
}
-y1 is -1. But -y2 is uint.max, i.e. a pretty large positive
number.
The 'u' in "uint" stands for "unsigned". That is, it doesn't know
negative numbers. Dont' use uint when you need negative numbers.