brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.1 KiB · 4de9c59 Raw
607 lines · plain
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCPP___CXX03_CMATH11#define _LIBCPP___CXX03_CMATH12 13/*14    cmath synopsis15 16Macros:17 18    HUGE_VAL19    HUGE_VALF               // C9920    HUGE_VALL               // C9921    INFINITY                // C9922    NAN                     // C9923    FP_INFINITE             // C9924    FP_NAN                  // C9925    FP_NORMAL               // C9926    FP_SUBNORMAL            // C9927    FP_ZERO                 // C9928    FP_FAST_FMA             // C9929    FP_FAST_FMAF            // C9930    FP_FAST_FMAL            // C9931    FP_ILOGB0               // C9932    FP_ILOGBNAN             // C9933    MATH_ERRNO              // C9934    MATH_ERREXCEPT          // C9935    math_errhandling        // C9936 37namespace std38{39 40Types:41 42    float_t                 // C9943    double_t                // C9944 45// C9046 47floating_point abs(floating_point x);48 49floating_point acos (arithmetic x);50float          acosf(float x);51long double    acosl(long double x);52 53floating_point asin (arithmetic x);54float          asinf(float x);55long double    asinl(long double x);56 57floating_point atan (arithmetic x);58float          atanf(float x);59long double    atanl(long double x);60 61floating_point atan2 (arithmetic y, arithmetic x);62float          atan2f(float y, float x);63long double    atan2l(long double y, long double x);64 65floating_point ceil (arithmetic x);66float          ceilf(float x);67long double    ceill(long double x);68 69floating_point cos (arithmetic x);70float          cosf(float x);71long double    cosl(long double x);72 73floating_point cosh (arithmetic x);74float          coshf(float x);75long double    coshl(long double x);76 77floating_point exp (arithmetic x);78float          expf(float x);79long double    expl(long double x);80 81floating_point fabs (arithmetic x);82float          fabsf(float x);83long double    fabsl(long double x);84 85floating_point floor (arithmetic x);86float          floorf(float x);87long double    floorl(long double x);88 89floating_point fmod (arithmetic x, arithmetic y);90float          fmodf(float x, float y);91long double    fmodl(long double x, long double y);92 93floating_point frexp (arithmetic value, int* exp);94float          frexpf(float value, int* exp);95long double    frexpl(long double value, int* exp);96 97floating_point ldexp (arithmetic value, int exp);98float          ldexpf(float value, int exp);99long double    ldexpl(long double value, int exp);100 101floating_point log (arithmetic x);102float          logf(float x);103long double    logl(long double x);104 105floating_point log10 (arithmetic x);106float          log10f(float x);107long double    log10l(long double x);108 109floating_point modf (floating_point value, floating_point* iptr);110float          modff(float value, float* iptr);111long double    modfl(long double value, long double* iptr);112 113floating_point pow (arithmetic x, arithmetic y);114float          powf(float x, float y);115long double    powl(long double x, long double y);116 117floating_point sin (arithmetic x);118float          sinf(float x);119long double    sinl(long double x);120 121floating_point sinh (arithmetic x);122float          sinhf(float x);123long double    sinhl(long double x);124 125floating_point sqrt (arithmetic x);126float          sqrtf(float x);127long double    sqrtl(long double x);128 129floating_point tan (arithmetic x);130float          tanf(float x);131long double    tanl(long double x);132 133floating_point tanh (arithmetic x);134float          tanhf(float x);135long double    tanhl(long double x);136 137//  C99138 139bool signbit(arithmetic x);140 141int fpclassify(arithmetic x);142 143bool isfinite(arithmetic x);144bool isinf(arithmetic x);145bool isnan(arithmetic x);146bool isnormal(arithmetic x);147 148bool isgreater(arithmetic x, arithmetic y);149bool isgreaterequal(arithmetic x, arithmetic y);150bool isless(arithmetic x, arithmetic y);151bool islessequal(arithmetic x, arithmetic y);152bool islessgreater(arithmetic x, arithmetic y);153bool isunordered(arithmetic x, arithmetic y);154 155floating_point acosh (arithmetic x);156float          acoshf(float x);157long double    acoshl(long double x);158 159floating_point asinh (arithmetic x);160float          asinhf(float x);161long double    asinhl(long double x);162 163floating_point atanh (arithmetic x);164float          atanhf(float x);165long double    atanhl(long double x);166 167floating_point cbrt (arithmetic x);168float          cbrtf(float x);169long double    cbrtl(long double x);170 171floating_point copysign (arithmetic x, arithmetic y);172float          copysignf(float x, float y);173long double    copysignl(long double x, long double y);174 175floating_point erf (arithmetic x);176float          erff(float x);177long double    erfl(long double x);178 179floating_point erfc (arithmetic x);180float          erfcf(float x);181long double    erfcl(long double x);182 183floating_point exp2 (arithmetic x);184float          exp2f(float x);185long double    exp2l(long double x);186 187floating_point expm1 (arithmetic x);188float          expm1f(float x);189long double    expm1l(long double x);190 191floating_point fdim (arithmetic x, arithmetic y);192float          fdimf(float x, float y);193long double    fdiml(long double x, long double y);194 195floating_point fma (arithmetic x, arithmetic y, arithmetic z);196float          fmaf(float x, float y, float z);197long double    fmal(long double x, long double y, long double z);198 199floating_point fmax (arithmetic x, arithmetic y);200float          fmaxf(float x, float y);201long double    fmaxl(long double x, long double y);202 203floating_point fmin (arithmetic x, arithmetic y);204float          fminf(float x, float y);205long double    fminl(long double x, long double y);206 207double         hermite(unsigned n, double x);                    // C++17208float          hermite(unsigned n, float x);                     // C++17209long double    hermite(unsigned n, long double x);               // C++17210float          hermitef(unsigned n, float x);                    // C++17211long double    hermitel(unsigned n, long double x);              // C++17212template <class Integer>213double         hermite(unsigned n, Integer x);                   // C++17214 215floating_point hypot (arithmetic x, arithmetic y);216float          hypotf(float x, float y);217long double    hypotl(long double x, long double y);218 219double       hypot(double x, double y, double z);                // C++17220float        hypot(float x, float y, float z);                   // C++17221long double  hypot(long double x, long double y, long double z); // C++17222 223int ilogb (arithmetic x);224int ilogbf(float x);225int ilogbl(long double x);226 227floating_point lgamma (arithmetic x);228float          lgammaf(float x);229long double    lgammal(long double x);230 231long long llrint (arithmetic x);232long long llrintf(float x);233long long llrintl(long double x);234 235long long llround (arithmetic x);236long long llroundf(float x);237long long llroundl(long double x);238 239floating_point log1p (arithmetic x);240float          log1pf(float x);241long double    log1pl(long double x);242 243floating_point log2 (arithmetic x);244float          log2f(float x);245long double    log2l(long double x);246 247floating_point logb (arithmetic x);248float          logbf(float x);249long double    logbl(long double x);250 251long lrint (arithmetic x);252long lrintf(float x);253long lrintl(long double x);254 255long lround (arithmetic x);256long lroundf(float x);257long lroundl(long double x);258 259double      nan (const char* str);260float       nanf(const char* str);261long double nanl(const char* str);262 263floating_point nearbyint (arithmetic x);264float          nearbyintf(float x);265long double    nearbyintl(long double x);266 267floating_point nextafter (arithmetic x, arithmetic y);268float          nextafterf(float x, float y);269long double    nextafterl(long double x, long double y);270 271floating_point nexttoward (arithmetic x, long double y);272float          nexttowardf(float x, long double y);273long double    nexttowardl(long double x, long double y);274 275floating_point remainder (arithmetic x, arithmetic y);276float          remainderf(float x, float y);277long double    remainderl(long double x, long double y);278 279floating_point remquo (arithmetic x, arithmetic y, int* pquo);280float          remquof(float x, float y, int* pquo);281long double    remquol(long double x, long double y, int* pquo);282 283floating_point rint (arithmetic x);284float          rintf(float x);285long double    rintl(long double x);286 287floating_point round (arithmetic x);288float          roundf(float x);289long double    roundl(long double x);290 291floating_point scalbln (arithmetic x, long ex);292float          scalblnf(float x, long ex);293long double    scalblnl(long double x, long ex);294 295floating_point scalbn (arithmetic x, int ex);296float          scalbnf(float x, int ex);297long double    scalbnl(long double x, int ex);298 299floating_point tgamma (arithmetic x);300float          tgammaf(float x);301long double    tgammal(long double x);302 303floating_point trunc (arithmetic x);304float          truncf(float x);305long double    truncl(long double x);306 307constexpr float       lerp(float a, float b, float t) noexcept;                   // C++20308constexpr double      lerp(double a, double b, double t) noexcept;                // C++20309constexpr long double lerp(long double a, long double b, long double t) noexcept; // C++20310 311}  // std312 313*/314 315#include <__cxx03/__config>316#include <__cxx03/__math/hypot.h>317#include <__cxx03/__type_traits/enable_if.h>318#include <__cxx03/__type_traits/is_arithmetic.h>319#include <__cxx03/__type_traits/is_constant_evaluated.h>320#include <__cxx03/__type_traits/is_floating_point.h>321#include <__cxx03/__type_traits/is_same.h>322#include <__cxx03/__type_traits/promote.h>323#include <__cxx03/__type_traits/remove_cv.h>324#include <__cxx03/limits>325#include <__cxx03/version>326 327#include <__cxx03/math.h>328 329#ifndef _LIBCPP___CXX03_MATH_H330#   error <cmath> tried including <math.h> but didn't find libc++'s <math.h> header. \331          This usually means that your header search paths are not configured properly. \332          The header search paths should contain the C++ Standard Library headers before \333          any C Standard Library, and you are probably using compiler flags that make that \334          not be the case.335#endif336 337#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)338#  pragma GCC system_header339#endif340 341_LIBCPP_PUSH_MACROS342#include <__cxx03/__undef_macros>343 344_LIBCPP_BEGIN_NAMESPACE_STD345 346using ::signbit _LIBCPP_USING_IF_EXISTS;347using ::fpclassify _LIBCPP_USING_IF_EXISTS;348using ::isfinite _LIBCPP_USING_IF_EXISTS;349using ::isinf _LIBCPP_USING_IF_EXISTS;350using ::isnan _LIBCPP_USING_IF_EXISTS;351using ::isnormal _LIBCPP_USING_IF_EXISTS;352using ::isgreater _LIBCPP_USING_IF_EXISTS;353using ::isgreaterequal _LIBCPP_USING_IF_EXISTS;354using ::isless _LIBCPP_USING_IF_EXISTS;355using ::islessequal _LIBCPP_USING_IF_EXISTS;356using ::islessgreater _LIBCPP_USING_IF_EXISTS;357using ::isunordered _LIBCPP_USING_IF_EXISTS;358using ::isunordered _LIBCPP_USING_IF_EXISTS;359 360using ::float_t _LIBCPP_USING_IF_EXISTS;361using ::double_t _LIBCPP_USING_IF_EXISTS;362 363using ::abs _LIBCPP_USING_IF_EXISTS;364 365using ::acos _LIBCPP_USING_IF_EXISTS;366using ::acosf _LIBCPP_USING_IF_EXISTS;367using ::asin _LIBCPP_USING_IF_EXISTS;368using ::asinf _LIBCPP_USING_IF_EXISTS;369using ::atan _LIBCPP_USING_IF_EXISTS;370using ::atanf _LIBCPP_USING_IF_EXISTS;371using ::atan2 _LIBCPP_USING_IF_EXISTS;372using ::atan2f _LIBCPP_USING_IF_EXISTS;373using ::ceil _LIBCPP_USING_IF_EXISTS;374using ::ceilf _LIBCPP_USING_IF_EXISTS;375using ::cos _LIBCPP_USING_IF_EXISTS;376using ::cosf _LIBCPP_USING_IF_EXISTS;377using ::cosh _LIBCPP_USING_IF_EXISTS;378using ::coshf _LIBCPP_USING_IF_EXISTS;379 380using ::exp _LIBCPP_USING_IF_EXISTS;381using ::expf _LIBCPP_USING_IF_EXISTS;382 383using ::fabs _LIBCPP_USING_IF_EXISTS;384using ::fabsf _LIBCPP_USING_IF_EXISTS;385using ::floor _LIBCPP_USING_IF_EXISTS;386using ::floorf _LIBCPP_USING_IF_EXISTS;387 388using ::fmod _LIBCPP_USING_IF_EXISTS;389using ::fmodf _LIBCPP_USING_IF_EXISTS;390 391using ::frexp _LIBCPP_USING_IF_EXISTS;392using ::frexpf _LIBCPP_USING_IF_EXISTS;393using ::ldexp _LIBCPP_USING_IF_EXISTS;394using ::ldexpf _LIBCPP_USING_IF_EXISTS;395 396using ::log _LIBCPP_USING_IF_EXISTS;397using ::logf _LIBCPP_USING_IF_EXISTS;398 399using ::log10 _LIBCPP_USING_IF_EXISTS;400using ::log10f _LIBCPP_USING_IF_EXISTS;401using ::modf _LIBCPP_USING_IF_EXISTS;402using ::modff _LIBCPP_USING_IF_EXISTS;403 404using ::pow _LIBCPP_USING_IF_EXISTS;405using ::powf _LIBCPP_USING_IF_EXISTS;406 407using ::sin _LIBCPP_USING_IF_EXISTS;408using ::sinf _LIBCPP_USING_IF_EXISTS;409using ::sinh _LIBCPP_USING_IF_EXISTS;410using ::sinhf _LIBCPP_USING_IF_EXISTS;411 412using ::sqrt _LIBCPP_USING_IF_EXISTS;413using ::sqrtf _LIBCPP_USING_IF_EXISTS;414using ::tan _LIBCPP_USING_IF_EXISTS;415using ::tanf _LIBCPP_USING_IF_EXISTS;416 417using ::tanh _LIBCPP_USING_IF_EXISTS;418using ::tanhf _LIBCPP_USING_IF_EXISTS;419 420using ::acosh _LIBCPP_USING_IF_EXISTS;421using ::acoshf _LIBCPP_USING_IF_EXISTS;422using ::asinh _LIBCPP_USING_IF_EXISTS;423using ::asinhf _LIBCPP_USING_IF_EXISTS;424using ::atanh _LIBCPP_USING_IF_EXISTS;425using ::atanhf _LIBCPP_USING_IF_EXISTS;426using ::cbrt _LIBCPP_USING_IF_EXISTS;427using ::cbrtf _LIBCPP_USING_IF_EXISTS;428 429using ::copysign _LIBCPP_USING_IF_EXISTS;430using ::copysignf _LIBCPP_USING_IF_EXISTS;431 432using ::erf _LIBCPP_USING_IF_EXISTS;433using ::erff _LIBCPP_USING_IF_EXISTS;434using ::erfc _LIBCPP_USING_IF_EXISTS;435using ::erfcf _LIBCPP_USING_IF_EXISTS;436using ::exp2 _LIBCPP_USING_IF_EXISTS;437using ::exp2f _LIBCPP_USING_IF_EXISTS;438using ::expm1 _LIBCPP_USING_IF_EXISTS;439using ::expm1f _LIBCPP_USING_IF_EXISTS;440using ::fdim _LIBCPP_USING_IF_EXISTS;441using ::fdimf _LIBCPP_USING_IF_EXISTS;442using ::fmaf _LIBCPP_USING_IF_EXISTS;443using ::fma _LIBCPP_USING_IF_EXISTS;444using ::fmax _LIBCPP_USING_IF_EXISTS;445using ::fmaxf _LIBCPP_USING_IF_EXISTS;446using ::fmin _LIBCPP_USING_IF_EXISTS;447using ::fminf _LIBCPP_USING_IF_EXISTS;448using ::hypot _LIBCPP_USING_IF_EXISTS;449using ::hypotf _LIBCPP_USING_IF_EXISTS;450using ::ilogb _LIBCPP_USING_IF_EXISTS;451using ::ilogbf _LIBCPP_USING_IF_EXISTS;452using ::lgamma _LIBCPP_USING_IF_EXISTS;453using ::lgammaf _LIBCPP_USING_IF_EXISTS;454using ::llrint _LIBCPP_USING_IF_EXISTS;455using ::llrintf _LIBCPP_USING_IF_EXISTS;456using ::llround _LIBCPP_USING_IF_EXISTS;457using ::llroundf _LIBCPP_USING_IF_EXISTS;458using ::log1p _LIBCPP_USING_IF_EXISTS;459using ::log1pf _LIBCPP_USING_IF_EXISTS;460using ::log2 _LIBCPP_USING_IF_EXISTS;461using ::log2f _LIBCPP_USING_IF_EXISTS;462using ::logb _LIBCPP_USING_IF_EXISTS;463using ::logbf _LIBCPP_USING_IF_EXISTS;464using ::lrint _LIBCPP_USING_IF_EXISTS;465using ::lrintf _LIBCPP_USING_IF_EXISTS;466using ::lround _LIBCPP_USING_IF_EXISTS;467using ::lroundf _LIBCPP_USING_IF_EXISTS;468 469using ::nan _LIBCPP_USING_IF_EXISTS;470using ::nanf _LIBCPP_USING_IF_EXISTS;471 472using ::nearbyint _LIBCPP_USING_IF_EXISTS;473using ::nearbyintf _LIBCPP_USING_IF_EXISTS;474using ::nextafter _LIBCPP_USING_IF_EXISTS;475using ::nextafterf _LIBCPP_USING_IF_EXISTS;476using ::nexttoward _LIBCPP_USING_IF_EXISTS;477using ::nexttowardf _LIBCPP_USING_IF_EXISTS;478using ::remainder _LIBCPP_USING_IF_EXISTS;479using ::remainderf _LIBCPP_USING_IF_EXISTS;480using ::remquo _LIBCPP_USING_IF_EXISTS;481using ::remquof _LIBCPP_USING_IF_EXISTS;482using ::rint _LIBCPP_USING_IF_EXISTS;483using ::rintf _LIBCPP_USING_IF_EXISTS;484using ::round _LIBCPP_USING_IF_EXISTS;485using ::roundf _LIBCPP_USING_IF_EXISTS;486using ::scalbln _LIBCPP_USING_IF_EXISTS;487using ::scalblnf _LIBCPP_USING_IF_EXISTS;488using ::scalbn _LIBCPP_USING_IF_EXISTS;489using ::scalbnf _LIBCPP_USING_IF_EXISTS;490using ::tgamma _LIBCPP_USING_IF_EXISTS;491using ::tgammaf _LIBCPP_USING_IF_EXISTS;492using ::trunc _LIBCPP_USING_IF_EXISTS;493using ::truncf _LIBCPP_USING_IF_EXISTS;494 495using ::acosl _LIBCPP_USING_IF_EXISTS;496using ::asinl _LIBCPP_USING_IF_EXISTS;497using ::atanl _LIBCPP_USING_IF_EXISTS;498using ::atan2l _LIBCPP_USING_IF_EXISTS;499using ::ceill _LIBCPP_USING_IF_EXISTS;500using ::cosl _LIBCPP_USING_IF_EXISTS;501using ::coshl _LIBCPP_USING_IF_EXISTS;502using ::expl _LIBCPP_USING_IF_EXISTS;503using ::fabsl _LIBCPP_USING_IF_EXISTS;504using ::floorl _LIBCPP_USING_IF_EXISTS;505using ::fmodl _LIBCPP_USING_IF_EXISTS;506using ::frexpl _LIBCPP_USING_IF_EXISTS;507using ::ldexpl _LIBCPP_USING_IF_EXISTS;508using ::logl _LIBCPP_USING_IF_EXISTS;509using ::log10l _LIBCPP_USING_IF_EXISTS;510using ::modfl _LIBCPP_USING_IF_EXISTS;511using ::powl _LIBCPP_USING_IF_EXISTS;512using ::sinl _LIBCPP_USING_IF_EXISTS;513using ::sinhl _LIBCPP_USING_IF_EXISTS;514using ::sqrtl _LIBCPP_USING_IF_EXISTS;515using ::tanl _LIBCPP_USING_IF_EXISTS;516 517using ::tanhl _LIBCPP_USING_IF_EXISTS;518using ::acoshl _LIBCPP_USING_IF_EXISTS;519using ::asinhl _LIBCPP_USING_IF_EXISTS;520using ::atanhl _LIBCPP_USING_IF_EXISTS;521using ::cbrtl _LIBCPP_USING_IF_EXISTS;522 523using ::copysignl _LIBCPP_USING_IF_EXISTS;524 525using ::erfl _LIBCPP_USING_IF_EXISTS;526using ::erfcl _LIBCPP_USING_IF_EXISTS;527using ::exp2l _LIBCPP_USING_IF_EXISTS;528using ::expm1l _LIBCPP_USING_IF_EXISTS;529using ::fdiml _LIBCPP_USING_IF_EXISTS;530using ::fmal _LIBCPP_USING_IF_EXISTS;531using ::fmaxl _LIBCPP_USING_IF_EXISTS;532using ::fminl _LIBCPP_USING_IF_EXISTS;533using ::hypotl _LIBCPP_USING_IF_EXISTS;534using ::ilogbl _LIBCPP_USING_IF_EXISTS;535using ::lgammal _LIBCPP_USING_IF_EXISTS;536using ::llrintl _LIBCPP_USING_IF_EXISTS;537using ::llroundl _LIBCPP_USING_IF_EXISTS;538using ::log1pl _LIBCPP_USING_IF_EXISTS;539using ::log2l _LIBCPP_USING_IF_EXISTS;540using ::logbl _LIBCPP_USING_IF_EXISTS;541using ::lrintl _LIBCPP_USING_IF_EXISTS;542using ::lroundl _LIBCPP_USING_IF_EXISTS;543using ::nanl _LIBCPP_USING_IF_EXISTS;544using ::nearbyintl _LIBCPP_USING_IF_EXISTS;545using ::nextafterl _LIBCPP_USING_IF_EXISTS;546using ::nexttowardl _LIBCPP_USING_IF_EXISTS;547using ::remainderl _LIBCPP_USING_IF_EXISTS;548using ::remquol _LIBCPP_USING_IF_EXISTS;549using ::rintl _LIBCPP_USING_IF_EXISTS;550using ::roundl _LIBCPP_USING_IF_EXISTS;551using ::scalblnl _LIBCPP_USING_IF_EXISTS;552using ::scalbnl _LIBCPP_USING_IF_EXISTS;553using ::tgammal _LIBCPP_USING_IF_EXISTS;554using ::truncl _LIBCPP_USING_IF_EXISTS;555 556template <class _A1, __enable_if_t<is_floating_point<_A1>::value, int> = 0>557_LIBCPP_HIDE_FROM_ABI bool __constexpr_isnan(_A1 __lcpp_x) _NOEXCEPT {558#if __has_builtin(__builtin_isnan)559  return __builtin_isnan(__lcpp_x);560#else561  return isnan(__lcpp_x);562#endif563}564 565template <class _A1, __enable_if_t<!is_floating_point<_A1>::value, int> = 0>566_LIBCPP_HIDE_FROM_ABI bool __constexpr_isnan(_A1 __lcpp_x) _NOEXCEPT {567  return std::isnan(__lcpp_x);568}569 570template <class _A1, __enable_if_t<is_floating_point<_A1>::value, int> = 0>571_LIBCPP_HIDE_FROM_ABI bool __constexpr_isinf(_A1 __lcpp_x) _NOEXCEPT {572#if __has_builtin(__builtin_isinf)573  return __builtin_isinf(__lcpp_x);574#else575  return isinf(__lcpp_x);576#endif577}578 579template <class _A1, __enable_if_t<!is_floating_point<_A1>::value, int> = 0>580_LIBCPP_HIDE_FROM_ABI bool __constexpr_isinf(_A1 __lcpp_x) _NOEXCEPT {581  return std::isinf(__lcpp_x);582}583 584template <class _A1, __enable_if_t<is_floating_point<_A1>::value, int> = 0>585_LIBCPP_HIDE_FROM_ABI bool __constexpr_isfinite(_A1 __lcpp_x) _NOEXCEPT {586#if __has_builtin(__builtin_isfinite)587  return __builtin_isfinite(__lcpp_x);588#else589  return isfinite(__lcpp_x);590#endif591}592 593template <class _A1, __enable_if_t<!is_floating_point<_A1>::value, int> = 0>594_LIBCPP_HIDE_FROM_ABI bool __constexpr_isfinite(_A1 __lcpp_x) _NOEXCEPT {595  return __builtin_isfinite(__lcpp_x);596}597 598_LIBCPP_END_NAMESPACE_STD599 600_LIBCPP_POP_MACROS601 602#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES)603#  include <__cxx03/type_traits>604#endif605 606#endif // _LIBCPP___CXX03_CMATH607