/* Test C99 math functions are available in C++11 without _GNU_SOURCE.
   Copyright (C) 2017-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#undef _GNU_SOURCE
#undef _DEFAULT_SOURCE
#undef _XOPEN_SOURCE
#undef _POSIX_SOURCE
#undef _POSIX_C_SOURCE
// __STRICT_ANSI__ gets defined by -std=c++11 in CFLAGS
#include <math.h>
#include <stdio.h>

static int
do_test (void)
{
#ifdef _GNU_SOURCE
  printf ("FAIL: _GNU_SOURCE is defined.\n");
  return 1;
#endif

#if __cplusplus >= 201103L
  /* Verify that C11 math functions and types are defined for C++11,
     without _GNU_SOURCE being defined. [BZ #21326] */
  (void) FP_INFINITE;
  (void) FP_NAN;
  (void) FP_NORMAL;
  (void) FP_SUBNORMAL;
  (void) FP_ZERO;
  double_t d = 1.0;
  (void) d;
  float_t f = 1.0f;
  (void) f;
  (void) acosh;
  (void) acoshf;
  (void) acoshl;
  (void) asinh;
  (void) asinhf;
  (void) asinhl;
  (void) atanh;
  (void) atanhf;
  (void) atanhl;
  (void) cbrt;
  (void) cbrtf;
  (void) cbrtl;
  (void) copysign;
  (void) copysignf;
  (void) copysignl;
  (void) erf;
  (void) erff;
  (void) erfl;
  (void) erfc;
  (void) erfcf;
  (void) erfcl;
  (void) exp2;
  (void) exp2f;
  (void) exp2l;
  (void) expm1;
  (void) expm1f;
  (void) expm1l;
  (void) fdim;
  (void) fdimf;
  (void) fdiml;
  (void) fma;
  (void) fmaf;
  (void) fmal;
  (void) fmax;
  (void) fmaxf;
  (void) fmaxl;
  (void) fmin;
  (void) fminf;
  (void) fminl;
  (void) hypot;
  (void) hypotf;
  (void) hypotl;
  (void) ilogb;
  (void) ilogbf;
  (void) ilogbl;
  (void) lgamma;
  (void) lgammaf;
  (void) lgammal;
  (void) llrint;
  (void) llrintf;
  (void) llrintl;
  (void) llround;
  (void) llroundf;
  (void) llroundl;
  (void) log1p;
  (void) log1pf;
  (void) log1pl;
  (void) log2;
  (void) log2f;
  (void) log2l;
  (void) logb;
  (void) logbf;
  (void) logbl;
  (void) lrint;
  (void) lrintf;
  (void) lrintl;
  (void) lround;
  (void) lroundf;
  (void) lroundl;
  (void) nan;
  (void) nanf;
  (void) nanl;
  (void) nearbyint;
  (void) nearbyintf;
  (void) nearbyintl;
  (void) nextafter;
  (void) nextafterf;
  (void) nextafterl;
  (void) nexttoward;
  (void) nexttowardf;
  (void) nexttowardl;
  (void) remainder;
  (void) remainderf;
  (void) remainderl;
  (void) remquo;
  (void) remquof;
  (void) remquol;
  (void) rint;
  (void) rintf;
  (void) rintl;
  (void) round;
  (void) roundf;
  (void) roundl;
  (void) scalbln;
  (void) scalblnf;
  (void) scalblnl;
  (void) scalbn;
  (void) scalbnf;
  (void) scalbnl;
  (void) tgamma;
  (void) tgammaf;
  (void) tgammal;
  (void) trunc;
  (void) truncf;
  (void) truncl;
  printf ("PASS: C11 math functions present in C++11 without _GNU_SOURCE.\n");
#else
  printf ("UNSUPPORTED: C++11 not enabled.\n");
#endif
  return 0;
}

#include <support/test-driver.c>
