March 2014 update
This commit is contained in:
parent
09687c4926
commit
a25938f123
1846 changed files with 21876 additions and 5203 deletions
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue