710538d467bd5827b4a37d4a4d50e565207b5af9
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))