76 lines
1.4 KiB
C
76 lines
1.4 KiB
C
/* C99 6.5.4 Cast operators.
|
|
Test valid casts involving decimal float. */
|
|
|
|
#include "dfp-dbg.h"
|
|
|
|
_Decimal32 d32;
|
|
_Decimal64 d64;
|
|
_Decimal128 d128;
|
|
|
|
static float f = 2.f;
|
|
static double d = 2.l;
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
/* Casts between DFP types. */
|
|
d32 = 1.2df;
|
|
d64 = 1.2dd;
|
|
d128 = 1.2dl;
|
|
|
|
if (d32 != (_Decimal32) d64)
|
|
FAILURE
|
|
if (d32 != (_Decimal32) d128)
|
|
FAILURE
|
|
|
|
if (d64 != (_Decimal64) d32)
|
|
FAILURE
|
|
if (d64 != (_Decimal64) d128)
|
|
FAILURE
|
|
|
|
if (d128 != (_Decimal128) d32)
|
|
FAILURE
|
|
if (d128 != (_Decimal128) d64)
|
|
FAILURE
|
|
|
|
/* Casts between generic and decimal floating point types. Use a
|
|
value that we can assume can be represented exactly in all
|
|
representations. */
|
|
|
|
d32 = 2.0df;
|
|
d64 = 2.0dd;
|
|
d128 = 2.0dl;
|
|
|
|
/* To generic floating types. */
|
|
if ((float) d32 != 2.0f)
|
|
FAILURE
|
|
if ((double) d32 != 2.0l)
|
|
FAILURE
|
|
if ((float) d64 != 2.0f)
|
|
FAILURE
|
|
if ((double) d64 != 2.0l)
|
|
FAILURE
|
|
if ((float) d128 != 2.0f)
|
|
FAILURE
|
|
if ((double) d128 != 2.0l)
|
|
FAILURE
|
|
|
|
/* float to decimal floating types. */
|
|
if (d32 != (_Decimal32) f)
|
|
FAILURE
|
|
if (d64 != (_Decimal64) f)
|
|
FAILURE
|
|
if (d128 != (_Decimal128) f)
|
|
FAILURE
|
|
|
|
/* double to decimal floating types. */
|
|
if (d32 != (_Decimal32) d)
|
|
FAILURE
|
|
if (d64 != (_Decimal64) d)
|
|
FAILURE
|
|
if (d128 != (_Decimal128) d)
|
|
FAILURE
|
|
|
|
FINISH
|
|
}
|