Something wrong with std.math.pow?
Simen Kjaeraas
simen.kjaras at gmail.com
Thu Sep 27 23:05:21 PDT 2012
On 2012-35-28 0709, Jesse Phillips <jessekphillips+D at gmail.com> wrote:
> Am I getting something wrong with this code?
>
> import std.conv;
> import std.math;
>
> void main() {
> pragma(msg, "Number of bits: " ~ to!string(12 * 4));
> pragma(msg, "Addressable Bytes: " ~ to!string(pow(2, 12 * 4)));
> }
>
> Number of bits: 48
> Addressable Bytes: 0
>
>
> Linux 64bit dmd 2.060...
>
> Specifically, shouldn't 2^48 be a little bit larger than 0?
>
> And if you have corrections to the math as it applies to the statements
> I'm open to correction, but I expect it is correct.
Quick, how much is 2 << 47 modulo 2^^32?
At least I think that's the problem - all numbers involved are simple ints,
and so you get overflow. Try pow(2L, 12 * 4) instead.
--
Simen
More information about the Digitalmars-d-learn
mailing list