/* { dg-skip-if "test is for emulation" { hard_dfp } { "*" } { "" } } */
|
/* { dg-skip-if "test is for emulation" { hard_dfp } { "*" } { "" } } */
|
|
|
/* Check that appropriate exceptions are raised for conversions involving
|
/* Check that appropriate exceptions are raised for conversions involving
|
decimal float values. */
|
decimal float values. */
|
|
|
#include "fe-check.h"
|
#include "fe-check.h"
|
|
|
volatile _Decimal32 d32;
|
volatile _Decimal32 d32;
|
volatile _Decimal64 d64;
|
volatile _Decimal64 d64;
|
volatile _Decimal128 d128;
|
volatile _Decimal128 d128;
|
|
|
/* Conversions between decimal float types should raise an invalid
|
/* Conversions between decimal float types should raise an invalid
|
exception if the value doesn't fit, either because the value
|
exception if the value doesn't fit, either because the value
|
is too large or the result can't hold the full precision. */
|
is too large or the result can't hold the full precision. */
|
|
|
CONVERT (100, d64, d32, 9.999999e96DD, 0)
|
CONVERT (100, d64, d32, 9.999999e96DD, 0)
|
CONVERT (101, d64, d32, 10.000000e96DD, FE_INEXACT|FE_OVERFLOW)
|
CONVERT (101, d64, d32, 10.000000e96DD, FE_INEXACT|FE_OVERFLOW)
|
CONVERT (102, d64, d32, 1.1111111DD, FE_INEXACT)
|
CONVERT (102, d64, d32, 1.1111111DD, FE_INEXACT)
|
CONVERT (110, d128, d32, 9.999999e96DL, 0)
|
CONVERT (110, d128, d32, 9.999999e96DL, 0)
|
CONVERT (111, d128, d32, 10.000000e96DL, FE_INEXACT|FE_OVERFLOW)
|
CONVERT (111, d128, d32, 10.000000e96DL, FE_INEXACT|FE_OVERFLOW)
|
CONVERT (112, d128, d32, 1.1111111DL, FE_INEXACT)
|
CONVERT (112, d128, d32, 1.1111111DL, FE_INEXACT)
|
CONVERT (120, d128, d64, 9.999999999999999E384DL, 0)
|
CONVERT (120, d128, d64, 9.999999999999999E384DL, 0)
|
CONVERT (121, d128, d64, 10.00000000000000E384DL, FE_INEXACT|FE_OVERFLOW)
|
CONVERT (121, d128, d64, 10.00000000000000E384DL, FE_INEXACT|FE_OVERFLOW)
|
CONVERT (122, d128, d64, 1.1111111111111111DL, FE_INEXACT)
|
CONVERT (122, d128, d64, 1.1111111111111111DL, FE_INEXACT)
|
|
|
int
|
int
|
main ()
|
main ()
|
{
|
{
|
convert_100 ();
|
convert_100 ();
|
convert_101 ();
|
convert_101 ();
|
convert_102 ();
|
convert_102 ();
|
convert_110 ();
|
convert_110 ();
|
convert_111 ();
|
convert_111 ();
|
convert_112 ();
|
convert_112 ();
|
convert_120 ();
|
convert_120 ();
|
convert_121 ();
|
convert_121 ();
|
convert_122 ();
|
convert_122 ();
|
|
|
FINISH
|
FINISH
|
}
|
}
|
|
|