March 2014 update

This commit is contained in:
Ingy döt Net 2014-04-02 16:56:35 +00:00
parent 09687c4926
commit a25938f123
1846 changed files with 21876 additions and 5203 deletions

View file

@ -7,9 +7,9 @@ import std.math: NaN, getNaNPayload;
void show(T)() {
static string toHex(T x) {
string result;
ubyte* ptr = cast(ubyte*)&x;
foreach (i; 0 .. T.sizeof)
result = format("%02x", ptr[i]) ~ result;
auto ptr = cast(ubyte*)&x;
foreach_reverse (immutable i; 0 .. T.sizeof)
result ~= format("%02x", ptr[i]);
return result;
}
@ -17,16 +17,16 @@ void show(T)() {
writeln("Computed extreme ", name, " values:");
T zero = 0.0;
T pos_inf = (cast(T)1.0) / zero;
T pos_inf = T(1.0) / zero;
writeln(" ", name, " +oo = ", pos_inf);
T neg_inf = -pos_inf;
writeln(" ", name, " -oo = ", neg_inf);
T pos_zero = (cast(T)1.0) / pos_inf;
T pos_zero = T(1.0) / pos_inf;
writeln(" ", name, " +0 (pos_zero) = ", pos_zero);
T neg_zero = (cast(T)1.0) / neg_inf;
T neg_zero = T(1.0) / neg_inf;
writeln(" ", name, " -0 = ", neg_zero);
T nan = zero / pos_zero;
@ -36,8 +36,8 @@ void show(T)() {
writeln("Some ", T.stringof, " properties and literals:");
writeln(" ", name, " +oo = ", T.infinity);
writeln(" ", name, " -oo = ", -T.infinity);
writeln(" ", name, " +0 = ", (cast(T)0.0));
writeln(" ", name, " -0 = ", (cast(T)-0.0));
writeln(" ", name, " +0 = ", T(0.0));
writeln(" ", name, " -0 = ", T(-0.0));
writefln(" " ~ name ~ " nan = %f %s", T.nan, toHex(T.nan));
writefln(" " ~ name ~ " init = %f %s", T.init, toHex(T.init));
writeln(" ", name, " epsilon = ", T.epsilon);
@ -48,17 +48,17 @@ void show(T)() {
}
void main() {
show!float();
show!double();
show!real();
show!float;
show!double;
show!real;
writeln("Largest possible payload for float, double and real NaNs:");
float f1 = NaN(0x3F_FFFF);
immutable float f1 = NaN(0x3F_FFFF);
writeln(getNaNPayload(f1));
double f2 = NaN(0x3_FFFF_FFFF_FFFF);
immutable double f2 = NaN(0x3_FFFF_FFFF_FFFF);
writeln(getNaNPayload(f2));
real f3 = NaN(0x3FFF_FFFF_FFFF_FFFF);
immutable real f3 = NaN(0x3FFF_FFFF_FFFF_FFFF);
writeln(getNaNPayload(f3));
}