1 /* N1150 5.2 Conversions among decimal floating types and between
2 decimal floating types and generic floating types.
3 C99 6.3.1.5(4) Conversions, arithmetic operands, real floating types. */
5 /* Long double isn't supported yet at runtime, so disable those checks. */
9 static int skip_long_double;
11 volatile _Decimal32 d32;
12 volatile _Decimal64 d64;
13 volatile _Decimal128 d128;
16 volatile long double tf;
21 /* Conversions from decimal float to binary float. */
23 if (sizeof (long double) == sizeof (double))
26 /* Conversions from _Decimal32. */
36 if (skip_long_double == 0)
43 /* Conversions from _Decimal64. */
53 if (skip_long_double == 0)
60 /* Conversions from _Decimal128. */
74 /* Conversions from binary float to decimal float. */
102 if (skip_long_double == 0)
118 /* 2**(-11) = 0.00048828125. */
119 d128 = 0.000488281251dl;
121 if (sf != 0.00048828125f)
123 /* 2**(-25) = 0.298023223876953125E-7. */
124 d128 = 2.98023223876953125E-8dl;
126 if (df < (2.9802322387695312e-08 - 0.00000000001)
127 || df > (2.9802322387695312e-08 + 0.00000000001))