1  /* PR target/102498 */
       2  /* { dg-do run { target fenv } } */
       3  /* { dg-options "-frounding-math" } */
       4  
       5  #include <fenv.h>
       6  #include <stdlib.h>
       7  
       8  __attribute__((noipa)) long double
       9  fldlg2 (void)
      10  {
      11    return 0.3010299956639811952256464283594894482L;
      12  }
      13  
      14  __attribute__((noipa)) long double
      15  fldln2 (void)
      16  {
      17    return 0.6931471805599453094286904741849753009L;
      18  }
      19  
      20  __attribute__((noipa)) long double
      21  fldl2e (void)
      22  {
      23    return 1.4426950408889634073876517827983434472L;
      24  }
      25  
      26  __attribute__((noipa)) long double
      27  fldl2t (void)
      28  {
      29    return 3.3219280948873623478083405569094566090L;
      30  }
      31  
      32  __attribute__((noipa)) long double
      33  fldpi (void)
      34  {
      35    return 3.1415926535897932385128089594061862044L;
      36  }
      37  
      38  int
      39  main ()
      40  {
      41    long double a = fldlg2 ();
      42    long double b = fldln2 ();
      43    long double c = fldl2e ();
      44    long double d = fldl2t ();
      45    long double e = fldpi ();
      46    static int f[] = { FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD, FE_DOWNWARD };
      47    int i;
      48    for (i = 0; i < 4; i++)
      49      {
      50        fesetround (f[i]);
      51        if (a != fldlg2 ()
      52  	  || b != fldln2 ()
      53  	  || c != fldl2e ()
      54  	  || d != fldl2t ()
      55  	  || e != fldpi ())
      56  	abort ();
      57      }
      58    return 0;
      59  }