@@ -221,26 +221,32 @@ T toPrec(T:real)(real f) { pragma(inline, false); return f; }
221
221
r = toPrec! real (d + d);
222
222
r = toPrec! real (r + r);
223
223
224
+ // Comparison tests.
225
+ bool approxEqual (T)(T lhs, T rhs)
226
+ {
227
+ return fabs ((lhs - rhs) / rhs) <= 1e-2 || fabs(lhs - rhs) <= 1e-5 ;
228
+ }
229
+
224
230
enum real PIR = 0xc .90fdaa22168c235p- 2 ;
225
231
enum double PID = 0x1 .921fb54442d18p+ 1 ;
226
232
enum float PIF = 0x1 .921fb6p+ 1 ;
227
- static assert (toPrec! float (PIR ) == PIF );
228
- static assert (toPrec! double (PIR ) == PID );
229
- static assert (toPrec! real (PIR ) == PIR );
230
- static assert (toPrec! float (PID ) == PIF );
231
- static assert (toPrec! double (PID ) == PID );
232
- static assert (toPrec! real (PID ) == PID );
233
- static assert (toPrec! float (PIF ) == PIF );
234
- static assert (toPrec! double (PIF ) == PIF );
235
- static assert (toPrec! real (PIF ) == PIF );
236
-
237
- assert (toPrec! float (PIR ) == PIF );
238
- assert (toPrec! double (PIR ) == PID );
239
- assert (toPrec! real (PIR ) == PIR );
240
- assert (toPrec! float (PID ) == PIF );
241
- assert (toPrec! double (PID ) == PID );
242
- assert (toPrec! real (PID ) == PID );
243
- assert (toPrec! float (PIF ) == PIF );
244
- assert (toPrec! double (PIF ) == PIF );
245
- assert (toPrec! real (PIF ) == PIF );
233
+ static assert (approxEqual( toPrec! float (PIR ), PIF ) );
234
+ static assert (approxEqual( toPrec! double (PIR ), PID ) );
235
+ static assert (approxEqual( toPrec! real (PIR ), PIR ) );
236
+ static assert (approxEqual( toPrec! float (PID ), PIF ) );
237
+ static assert (approxEqual( toPrec! double (PID ), PID ) );
238
+ static assert (approxEqual( toPrec! real (PID ), PID ) );
239
+ static assert (approxEqual( toPrec! float (PIF ), PIF ) );
240
+ static assert (approxEqual( toPrec! double (PIF ), PIF ) );
241
+ static assert (approxEqual( toPrec! real (PIF ), PIF ) );
242
+
243
+ assert (approxEqual( toPrec! float (PIR ), PIF ) );
244
+ assert (approxEqual( toPrec! double (PIR ), PID ) );
245
+ assert (approxEqual( toPrec! real (PIR ), PIR ) );
246
+ assert (approxEqual( toPrec! float (PID ), PIF ) );
247
+ assert (approxEqual( toPrec! double (PID ), PID ) );
248
+ assert (approxEqual( toPrec! real (PID ), PID ) );
249
+ assert (approxEqual( toPrec! float (PIF ), PIF ) );
250
+ assert (approxEqual( toPrec! double (PIF ), PIF ) );
251
+ assert (approxEqual( toPrec! real (PIF ), PIF ) );
246
252
}
0 commit comments