| /*===---- float.h - Characteristics of floating point types ----------------=== |
| * |
| * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| * See https://llvm.org/LICENSE.txt for license information. |
| * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| * |
| *===-----------------------------------------------------------------------=== |
| */ |
| |
| #if defined(__MVS__) && __has_include_next(<float.h>) |
| #include <__float_header_macro.h> |
| #include_next <float.h> |
| #else |
| |
| #if !defined(__need_infinity_nan) |
| #define __need_float_float |
| #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || \ |
| !defined(__STRICT_ANSI__) |
| #define __need_infinity_nan |
| #endif |
| #include <__float_header_macro.h> |
| #endif |
| |
| #ifdef __need_float_float |
| /* If we're on MinGW, fall back to the system's float.h, which might have |
| * additional definitions provided for Windows. |
| * For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx |
| * |
| * Also fall back on AIX to allow additional definitions and |
| * implementation-defined values. |
| */ |
| #if (defined(__MINGW32__) || defined(_MSC_VER) || defined(_AIX)) && \ |
| __STDC_HOSTED__ && __has_include_next(<float.h>) |
| |
| # include_next <float.h> |
| |
| #endif |
| |
| #include <__float_float.h> |
| #undef __need_float_float |
| #endif |
| |
| #ifdef __need_infinity_nan |
| #include <__float_infinity_nan.h> |
| #undef __need_infinity_nan |
| #endif |
| |
| #endif /* __MVS__ */ |