1 /* Test C99 math functions are available in C++11 without _GNU_SOURCE. 2 Copyright (C) 2017-2022 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #undef _GNU_SOURCE 20 #undef _DEFAULT_SOURCE 21 #undef _XOPEN_SOURCE 22 #undef _POSIX_SOURCE 23 #undef _POSIX_C_SOURCE 24 // __STRICT_ANSI__ gets defined by -std=c++11 in CFLAGS 25 #include <math.h> 26 #include <stdio.h> 27 28 static int do_test(void)29do_test (void) 30 { 31 #ifdef _GNU_SOURCE 32 printf ("FAIL: _GNU_SOURCE is defined.\n"); 33 return 1; 34 #endif 35 36 #if __cplusplus >= 201103L 37 /* Verify that C11 math functions and types are defined for C++11, 38 without _GNU_SOURCE being defined. [BZ #21326] */ 39 (void) FP_INFINITE; 40 (void) FP_NAN; 41 (void) FP_NORMAL; 42 (void) FP_SUBNORMAL; 43 (void) FP_ZERO; 44 double_t d = 1.0; 45 (void) d; 46 float_t f = 1.0f; 47 (void) f; 48 (void) acosh; 49 (void) acoshf; 50 (void) acoshl; 51 (void) asinh; 52 (void) asinhf; 53 (void) asinhl; 54 (void) atanh; 55 (void) atanhf; 56 (void) atanhl; 57 (void) cbrt; 58 (void) cbrtf; 59 (void) cbrtl; 60 (void) copysign; 61 (void) copysignf; 62 (void) copysignl; 63 (void) erf; 64 (void) erff; 65 (void) erfl; 66 (void) erfc; 67 (void) erfcf; 68 (void) erfcl; 69 (void) exp2; 70 (void) exp2f; 71 (void) exp2l; 72 (void) expm1; 73 (void) expm1f; 74 (void) expm1l; 75 (void) fdim; 76 (void) fdimf; 77 (void) fdiml; 78 (void) fma; 79 (void) fmaf; 80 (void) fmal; 81 (void) fmax; 82 (void) fmaxf; 83 (void) fmaxl; 84 (void) fmin; 85 (void) fminf; 86 (void) fminl; 87 (void) hypot; 88 (void) hypotf; 89 (void) hypotl; 90 (void) ilogb; 91 (void) ilogbf; 92 (void) ilogbl; 93 (void) lgamma; 94 (void) lgammaf; 95 (void) lgammal; 96 (void) llrint; 97 (void) llrintf; 98 (void) llrintl; 99 (void) llround; 100 (void) llroundf; 101 (void) llroundl; 102 (void) log1p; 103 (void) log1pf; 104 (void) log1pl; 105 (void) log2; 106 (void) log2f; 107 (void) log2l; 108 (void) logb; 109 (void) logbf; 110 (void) logbl; 111 (void) lrint; 112 (void) lrintf; 113 (void) lrintl; 114 (void) lround; 115 (void) lroundf; 116 (void) lroundl; 117 (void) nan; 118 (void) nanf; 119 (void) nanl; 120 (void) nearbyint; 121 (void) nearbyintf; 122 (void) nearbyintl; 123 (void) nextafter; 124 (void) nextafterf; 125 (void) nextafterl; 126 (void) nexttoward; 127 (void) nexttowardf; 128 (void) nexttowardl; 129 (void) remainder; 130 (void) remainderf; 131 (void) remainderl; 132 (void) remquo; 133 (void) remquof; 134 (void) remquol; 135 (void) rint; 136 (void) rintf; 137 (void) rintl; 138 (void) round; 139 (void) roundf; 140 (void) roundl; 141 (void) scalbln; 142 (void) scalblnf; 143 (void) scalblnl; 144 (void) scalbn; 145 (void) scalbnf; 146 (void) scalbnl; 147 (void) tgamma; 148 (void) tgammaf; 149 (void) tgammal; 150 (void) trunc; 151 (void) truncf; 152 (void) truncl; 153 printf ("PASS: C11 math functions present in C++11 without _GNU_SOURCE.\n"); 154 #else 155 printf ("UNSUPPORTED: C++11 not enabled.\n"); 156 #endif 157 return 0; 158 } 159 160 #include <support/test-driver.c> 161