1  /* { dg-options "-w" } */
       2  
       3  /* This test assumes IEEE float and double.  */
       4  
       5  #define __STDC_WANT_DEC_FP__
       6  #include <float.h>
       7  
       8  #include "convert.h"
       9  
      10  volatile _Decimal32 sd;
      11  volatile _Decimal64 dd;
      12  volatile _Decimal128 td;
      13  volatile float sf;
      14  volatile double df;
      15  
      16  /* Values slightly smaller than minimum (closest to zero) for result type.  */
      17  CONVERT_VALID (401, sd, sf, 1.e-39df, 0.f, FLT_MIN)
      18  CONVERT_VALID (402, sd, sf, -1.e-39df, 0.f, FLT_MIN)
      19  CONVERT_VALID (403, sd, sf, 1.1e-38df, 0.f, FLT_MIN)
      20  CONVERT_VALID (404, sd, sf, -1.1e-38df, 0.f, FLT_MIN)
      21  
      22  CONVERT_VALID (411, dd, sf, 1.e-39dd, 0.f, FLT_MIN)
      23  CONVERT_VALID (412, dd, sf, -1.e-39dd, 0.f, FLT_MIN)
      24  CONVERT_VALID (413, dd, sf, 1.1e-38dd, 0.f, FLT_MIN)
      25  CONVERT_VALID (414, dd, sf, -1.1e-38dd, 0.f, FLT_MIN)
      26  
      27  CONVERT_VALID (421, dd, df, 3.e-309dd, 0., DBL_MIN)
      28  CONVERT_VALID (422, dd, df, -3.e-309dd, 0., DBL_MIN)
      29  CONVERT_VALID (423, dd, df, 2.e-308dd, 0., DBL_MIN)
      30  CONVERT_VALID (424, dd, df, -2.e-308dd, 0., DBL_MIN)
      31  
      32  CONVERT_VALID (431, td, sf, 1.e-39dl, 0.f, FLT_MIN)
      33  CONVERT_VALID (432, td, sf, -1.e-39dl, 0.f, FLT_MIN)
      34  CONVERT_VALID (433, td, sf, 1.1e-38dl, 0.f, FLT_MIN)
      35  CONVERT_VALID (434, td, sf, -1.1e-38dl, 0.f, FLT_MIN)
      36  
      37  CONVERT_VALID (441, td, df, 3.e-309dl, 0., DBL_MIN)
      38  CONVERT_VALID (442, td, df, -3.e-309dl, 0., DBL_MIN)
      39  CONVERT_VALID (443, td, df, 2.e-308dl, 0., DBL_MIN)
      40  CONVERT_VALID (444, td, df, -2.e-308dl, 0., DBL_MIN)
      41  
      42  int
      43  main ()
      44  {
      45    convert_401 ();
      46    convert_402 ();
      47    convert_403 ();
      48    convert_404 ();
      49  
      50    convert_411 ();
      51    convert_412 ();
      52    convert_413 ();
      53    convert_414 ();
      54  
      55    convert_421 ();
      56    convert_422 ();
      57    convert_423 ();
      58    convert_424 ();
      59  
      60    convert_431 ();
      61    convert_432 ();
      62    convert_433 ();
      63    convert_434 ();
      64  
      65    convert_441 ();
      66    convert_442 ();
      67    convert_443 ();
      68    convert_444 ();
      69  
      70    FINISH
      71  }