xref: /minix3/external/bsd/libc++/dist/libcxx/include/cmath (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
14684ddb6SLionel Sambuc// -*- C++ -*-
24684ddb6SLionel Sambuc//===---------------------------- cmath -----------------------------------===//
34684ddb6SLionel Sambuc//
44684ddb6SLionel Sambuc//                     The LLVM Compiler Infrastructure
54684ddb6SLionel Sambuc//
64684ddb6SLionel Sambuc// This file is dual licensed under the MIT and the University of Illinois Open
74684ddb6SLionel Sambuc// Source Licenses. See LICENSE.TXT for details.
84684ddb6SLionel Sambuc//
94684ddb6SLionel Sambuc//===----------------------------------------------------------------------===//
104684ddb6SLionel Sambuc
114684ddb6SLionel Sambuc#ifndef _LIBCPP_CMATH
124684ddb6SLionel Sambuc#define _LIBCPP_CMATH
134684ddb6SLionel Sambuc
144684ddb6SLionel Sambuc/*
154684ddb6SLionel Sambuc    cmath synopsis
164684ddb6SLionel Sambuc
174684ddb6SLionel SambucMacros:
184684ddb6SLionel Sambuc
194684ddb6SLionel Sambuc    HUGE_VAL
204684ddb6SLionel Sambuc    HUGE_VALF               // C99
214684ddb6SLionel Sambuc    HUGE_VALL               // C99
224684ddb6SLionel Sambuc    INFINITY                // C99
234684ddb6SLionel Sambuc    NAN                     // C99
244684ddb6SLionel Sambuc    FP_INFINITE             // C99
254684ddb6SLionel Sambuc    FP_NAN                  // C99
264684ddb6SLionel Sambuc    FP_NORMAL               // C99
274684ddb6SLionel Sambuc    FP_SUBNORMAL            // C99
284684ddb6SLionel Sambuc    FP_ZERO                 // C99
294684ddb6SLionel Sambuc    FP_FAST_FMA             // C99
304684ddb6SLionel Sambuc    FP_FAST_FMAF            // C99
314684ddb6SLionel Sambuc    FP_FAST_FMAL            // C99
324684ddb6SLionel Sambuc    FP_ILOGB0               // C99
334684ddb6SLionel Sambuc    FP_ILOGBNAN             // C99
344684ddb6SLionel Sambuc    MATH_ERRNO              // C99
354684ddb6SLionel Sambuc    MATH_ERREXCEPT          // C99
364684ddb6SLionel Sambuc    math_errhandling        // C99
374684ddb6SLionel Sambuc
384684ddb6SLionel Sambucnamespace std
394684ddb6SLionel Sambuc{
404684ddb6SLionel Sambuc
414684ddb6SLionel SambucTypes:
424684ddb6SLionel Sambuc
434684ddb6SLionel Sambuc    float_t                 // C99
444684ddb6SLionel Sambuc    double_t                // C99
454684ddb6SLionel Sambuc
464684ddb6SLionel Sambuc// C90
474684ddb6SLionel Sambuc
484684ddb6SLionel Sambucfloating_point abs(floating_point x);
494684ddb6SLionel Sambuc
504684ddb6SLionel Sambucfloating_point acos (arithmetic x);
514684ddb6SLionel Sambucfloat          acosf(float x);
524684ddb6SLionel Sambuclong double    acosl(long double x);
534684ddb6SLionel Sambuc
544684ddb6SLionel Sambucfloating_point asin (arithmetic x);
554684ddb6SLionel Sambucfloat          asinf(float x);
564684ddb6SLionel Sambuclong double    asinl(long double x);
574684ddb6SLionel Sambuc
584684ddb6SLionel Sambucfloating_point atan (arithmetic x);
594684ddb6SLionel Sambucfloat          atanf(float x);
604684ddb6SLionel Sambuclong double    atanl(long double x);
614684ddb6SLionel Sambuc
624684ddb6SLionel Sambucfloating_point atan2 (arithmetic y, arithmetic x);
634684ddb6SLionel Sambucfloat          atan2f(float y, float x);
644684ddb6SLionel Sambuclong double    atan2l(long double y, long double x);
654684ddb6SLionel Sambuc
664684ddb6SLionel Sambucfloating_point ceil (arithmetic x);
674684ddb6SLionel Sambucfloat          ceilf(float x);
684684ddb6SLionel Sambuclong double    ceill(long double x);
694684ddb6SLionel Sambuc
704684ddb6SLionel Sambucfloating_point cos (arithmetic x);
714684ddb6SLionel Sambucfloat          cosf(float x);
724684ddb6SLionel Sambuclong double    cosl(long double x);
734684ddb6SLionel Sambuc
744684ddb6SLionel Sambucfloating_point cosh (arithmetic x);
754684ddb6SLionel Sambucfloat          coshf(float x);
764684ddb6SLionel Sambuclong double    coshl(long double x);
774684ddb6SLionel Sambuc
784684ddb6SLionel Sambucfloating_point exp (arithmetic x);
794684ddb6SLionel Sambucfloat          expf(float x);
804684ddb6SLionel Sambuclong double    expl(long double x);
814684ddb6SLionel Sambuc
824684ddb6SLionel Sambucfloating_point fabs (arithmetic x);
834684ddb6SLionel Sambucfloat          fabsf(float x);
844684ddb6SLionel Sambuclong double    fabsl(long double x);
854684ddb6SLionel Sambuc
864684ddb6SLionel Sambucfloating_point floor (arithmetic x);
874684ddb6SLionel Sambucfloat          floorf(float x);
884684ddb6SLionel Sambuclong double    floorl(long double x);
894684ddb6SLionel Sambuc
904684ddb6SLionel Sambucfloating_point fmod (arithmetic x, arithmetic y);
914684ddb6SLionel Sambucfloat          fmodf(float x, float y);
924684ddb6SLionel Sambuclong double    fmodl(long double x, long double y);
934684ddb6SLionel Sambuc
944684ddb6SLionel Sambucfloating_point frexp (arithmetic value, int* exp);
954684ddb6SLionel Sambucfloat          frexpf(float value, int* exp);
964684ddb6SLionel Sambuclong double    frexpl(long double value, int* exp);
974684ddb6SLionel Sambuc
984684ddb6SLionel Sambucfloating_point ldexp (arithmetic value, int exp);
994684ddb6SLionel Sambucfloat          ldexpf(float value, int exp);
1004684ddb6SLionel Sambuclong double    ldexpl(long double value, int exp);
1014684ddb6SLionel Sambuc
1024684ddb6SLionel Sambucfloating_point log (arithmetic x);
1034684ddb6SLionel Sambucfloat          logf(float x);
1044684ddb6SLionel Sambuclong double    logl(long double x);
1054684ddb6SLionel Sambuc
1064684ddb6SLionel Sambucfloating_point log10 (arithmetic x);
1074684ddb6SLionel Sambucfloat          log10f(float x);
1084684ddb6SLionel Sambuclong double    log10l(long double x);
1094684ddb6SLionel Sambuc
1104684ddb6SLionel Sambucfloating_point modf (floating_point value, floating_point* iptr);
1114684ddb6SLionel Sambucfloat          modff(float value, float* iptr);
1124684ddb6SLionel Sambuclong double    modfl(long double value, long double* iptr);
1134684ddb6SLionel Sambuc
1144684ddb6SLionel Sambucfloating_point pow (arithmetic x, arithmetic y);
1154684ddb6SLionel Sambucfloat          powf(float x, float y);
1164684ddb6SLionel Sambuclong double    powl(long double x, long double y);
1174684ddb6SLionel Sambuc
1184684ddb6SLionel Sambucfloating_point sin (arithmetic x);
1194684ddb6SLionel Sambucfloat          sinf(float x);
1204684ddb6SLionel Sambuclong double    sinl(long double x);
1214684ddb6SLionel Sambuc
1224684ddb6SLionel Sambucfloating_point sinh (arithmetic x);
1234684ddb6SLionel Sambucfloat          sinhf(float x);
1244684ddb6SLionel Sambuclong double    sinhl(long double x);
1254684ddb6SLionel Sambuc
1264684ddb6SLionel Sambucfloating_point sqrt (arithmetic x);
1274684ddb6SLionel Sambucfloat          sqrtf(float x);
1284684ddb6SLionel Sambuclong double    sqrtl(long double x);
1294684ddb6SLionel Sambuc
1304684ddb6SLionel Sambucfloating_point tan (arithmetic x);
1314684ddb6SLionel Sambucfloat          tanf(float x);
1324684ddb6SLionel Sambuclong double    tanl(long double x);
1334684ddb6SLionel Sambuc
1344684ddb6SLionel Sambucfloating_point tanh (arithmetic x);
1354684ddb6SLionel Sambucfloat          tanhf(float x);
1364684ddb6SLionel Sambuclong double    tanhl(long double x);
1374684ddb6SLionel Sambuc
1384684ddb6SLionel Sambuc//  C99
1394684ddb6SLionel Sambuc
1404684ddb6SLionel Sambucbool signbit(arithmetic x);
1414684ddb6SLionel Sambuc
1424684ddb6SLionel Sambucint fpclassify(arithmetic x);
1434684ddb6SLionel Sambuc
1444684ddb6SLionel Sambucbool isfinite(arithmetic x);
1454684ddb6SLionel Sambucbool isinf(arithmetic x);
1464684ddb6SLionel Sambucbool isnan(arithmetic x);
1474684ddb6SLionel Sambucbool isnormal(arithmetic x);
1484684ddb6SLionel Sambuc
1494684ddb6SLionel Sambucbool isgreater(arithmetic x, arithmetic y);
1504684ddb6SLionel Sambucbool isgreaterequal(arithmetic x, arithmetic y);
1514684ddb6SLionel Sambucbool isless(arithmetic x, arithmetic y);
1524684ddb6SLionel Sambucbool islessequal(arithmetic x, arithmetic y);
1534684ddb6SLionel Sambucbool islessgreater(arithmetic x, arithmetic y);
1544684ddb6SLionel Sambucbool isunordered(arithmetic x, arithmetic y);
1554684ddb6SLionel Sambuc
1564684ddb6SLionel Sambucfloating_point acosh (arithmetic x);
1574684ddb6SLionel Sambucfloat          acoshf(float x);
1584684ddb6SLionel Sambuclong double    acoshl(long double x);
1594684ddb6SLionel Sambuc
1604684ddb6SLionel Sambucfloating_point asinh (arithmetic x);
1614684ddb6SLionel Sambucfloat          asinhf(float x);
1624684ddb6SLionel Sambuclong double    asinhl(long double x);
1634684ddb6SLionel Sambuc
1644684ddb6SLionel Sambucfloating_point atanh (arithmetic x);
1654684ddb6SLionel Sambucfloat          atanhf(float x);
1664684ddb6SLionel Sambuclong double    atanhl(long double x);
1674684ddb6SLionel Sambuc
1684684ddb6SLionel Sambucfloating_point cbrt (arithmetic x);
1694684ddb6SLionel Sambucfloat          cbrtf(float x);
1704684ddb6SLionel Sambuclong double    cbrtl(long double x);
1714684ddb6SLionel Sambuc
1724684ddb6SLionel Sambucfloating_point copysign (arithmetic x, arithmetic y);
1734684ddb6SLionel Sambucfloat          copysignf(float x, float y);
1744684ddb6SLionel Sambuclong double    copysignl(long double x, long double y);
1754684ddb6SLionel Sambuc
1764684ddb6SLionel Sambucfloating_point erf (arithmetic x);
1774684ddb6SLionel Sambucfloat          erff(float x);
1784684ddb6SLionel Sambuclong double    erfl(long double x);
1794684ddb6SLionel Sambuc
1804684ddb6SLionel Sambucfloating_point erfc (arithmetic x);
1814684ddb6SLionel Sambucfloat          erfcf(float x);
1824684ddb6SLionel Sambuclong double    erfcl(long double x);
1834684ddb6SLionel Sambuc
1844684ddb6SLionel Sambucfloating_point exp2 (arithmetic x);
1854684ddb6SLionel Sambucfloat          exp2f(float x);
1864684ddb6SLionel Sambuclong double    exp2l(long double x);
1874684ddb6SLionel Sambuc
1884684ddb6SLionel Sambucfloating_point expm1 (arithmetic x);
1894684ddb6SLionel Sambucfloat          expm1f(float x);
1904684ddb6SLionel Sambuclong double    expm1l(long double x);
1914684ddb6SLionel Sambuc
1924684ddb6SLionel Sambucfloating_point fdim (arithmetic x, arithmetic y);
1934684ddb6SLionel Sambucfloat          fdimf(float x, float y);
1944684ddb6SLionel Sambuclong double    fdiml(long double x, long double y);
1954684ddb6SLionel Sambuc
1964684ddb6SLionel Sambucfloating_point fma (arithmetic x, arithmetic y, arithmetic z);
1974684ddb6SLionel Sambucfloat          fmaf(float x, float y, float z);
1984684ddb6SLionel Sambuclong double    fmal(long double x, long double y, long double z);
1994684ddb6SLionel Sambuc
2004684ddb6SLionel Sambucfloating_point fmax (arithmetic x, arithmetic y);
2014684ddb6SLionel Sambucfloat          fmaxf(float x, float y);
2024684ddb6SLionel Sambuclong double    fmaxl(long double x, long double y);
2034684ddb6SLionel Sambuc
2044684ddb6SLionel Sambucfloating_point fmin (arithmetic x, arithmetic y);
2054684ddb6SLionel Sambucfloat          fminf(float x, float y);
2064684ddb6SLionel Sambuclong double    fminl(long double x, long double y);
2074684ddb6SLionel Sambuc
2084684ddb6SLionel Sambucfloating_point hypot (arithmetic x, arithmetic y);
2094684ddb6SLionel Sambucfloat          hypotf(float x, float y);
2104684ddb6SLionel Sambuclong double    hypotl(long double x, long double y);
2114684ddb6SLionel Sambuc
2124684ddb6SLionel Sambucint ilogb (arithmetic x);
2134684ddb6SLionel Sambucint ilogbf(float x);
2144684ddb6SLionel Sambucint ilogbl(long double x);
2154684ddb6SLionel Sambuc
2164684ddb6SLionel Sambucfloating_point lgamma (arithmetic x);
2174684ddb6SLionel Sambucfloat          lgammaf(float x);
2184684ddb6SLionel Sambuclong double    lgammal(long double x);
2194684ddb6SLionel Sambuc
2204684ddb6SLionel Sambuclong long llrint (arithmetic x);
2214684ddb6SLionel Sambuclong long llrintf(float x);
2224684ddb6SLionel Sambuclong long llrintl(long double x);
2234684ddb6SLionel Sambuc
2244684ddb6SLionel Sambuclong long llround (arithmetic x);
2254684ddb6SLionel Sambuclong long llroundf(float x);
2264684ddb6SLionel Sambuclong long llroundl(long double x);
2274684ddb6SLionel Sambuc
2284684ddb6SLionel Sambucfloating_point log1p (arithmetic x);
2294684ddb6SLionel Sambucfloat          log1pf(float x);
2304684ddb6SLionel Sambuclong double    log1pl(long double x);
2314684ddb6SLionel Sambuc
2324684ddb6SLionel Sambucfloating_point log2 (arithmetic x);
2334684ddb6SLionel Sambucfloat          log2f(float x);
2344684ddb6SLionel Sambuclong double    log2l(long double x);
2354684ddb6SLionel Sambuc
2364684ddb6SLionel Sambucfloating_point logb (arithmetic x);
2374684ddb6SLionel Sambucfloat          logbf(float x);
2384684ddb6SLionel Sambuclong double    logbl(long double x);
2394684ddb6SLionel Sambuc
2404684ddb6SLionel Sambuclong lrint (arithmetic x);
2414684ddb6SLionel Sambuclong lrintf(float x);
2424684ddb6SLionel Sambuclong lrintl(long double x);
2434684ddb6SLionel Sambuc
2444684ddb6SLionel Sambuclong lround (arithmetic x);
2454684ddb6SLionel Sambuclong lroundf(float x);
2464684ddb6SLionel Sambuclong lroundl(long double x);
2474684ddb6SLionel Sambuc
2484684ddb6SLionel Sambucdouble      nan (const char* str);
2494684ddb6SLionel Sambucfloat       nanf(const char* str);
2504684ddb6SLionel Sambuclong double nanl(const char* str);
2514684ddb6SLionel Sambuc
2524684ddb6SLionel Sambucfloating_point nearbyint (arithmetic x);
2534684ddb6SLionel Sambucfloat          nearbyintf(float x);
2544684ddb6SLionel Sambuclong double    nearbyintl(long double x);
2554684ddb6SLionel Sambuc
2564684ddb6SLionel Sambucfloating_point nextafter (arithmetic x, arithmetic y);
2574684ddb6SLionel Sambucfloat          nextafterf(float x, float y);
2584684ddb6SLionel Sambuclong double    nextafterl(long double x, long double y);
2594684ddb6SLionel Sambuc
2604684ddb6SLionel Sambucfloating_point nexttoward (arithmetic x, long double y);
2614684ddb6SLionel Sambucfloat          nexttowardf(float x, long double y);
2624684ddb6SLionel Sambuclong double    nexttowardl(long double x, long double y);
2634684ddb6SLionel Sambuc
2644684ddb6SLionel Sambucfloating_point remainder (arithmetic x, arithmetic y);
2654684ddb6SLionel Sambucfloat          remainderf(float x, float y);
2664684ddb6SLionel Sambuclong double    remainderl(long double x, long double y);
2674684ddb6SLionel Sambuc
2684684ddb6SLionel Sambucfloating_point remquo (arithmetic x, arithmetic y, int* pquo);
2694684ddb6SLionel Sambucfloat          remquof(float x, float y, int* pquo);
2704684ddb6SLionel Sambuclong double    remquol(long double x, long double y, int* pquo);
2714684ddb6SLionel Sambuc
2724684ddb6SLionel Sambucfloating_point rint (arithmetic x);
2734684ddb6SLionel Sambucfloat          rintf(float x);
2744684ddb6SLionel Sambuclong double    rintl(long double x);
2754684ddb6SLionel Sambuc
2764684ddb6SLionel Sambucfloating_point round (arithmetic x);
2774684ddb6SLionel Sambucfloat          roundf(float x);
2784684ddb6SLionel Sambuclong double    roundl(long double x);
2794684ddb6SLionel Sambuc
2804684ddb6SLionel Sambucfloating_point scalbln (arithmetic x, long ex);
2814684ddb6SLionel Sambucfloat          scalblnf(float x, long ex);
2824684ddb6SLionel Sambuclong double    scalblnl(long double x, long ex);
2834684ddb6SLionel Sambuc
2844684ddb6SLionel Sambucfloating_point scalbn (arithmetic x, int ex);
2854684ddb6SLionel Sambucfloat          scalbnf(float x, int ex);
2864684ddb6SLionel Sambuclong double    scalbnl(long double x, int ex);
2874684ddb6SLionel Sambuc
2884684ddb6SLionel Sambucfloating_point tgamma (arithmetic x);
2894684ddb6SLionel Sambucfloat          tgammaf(float x);
2904684ddb6SLionel Sambuclong double    tgammal(long double x);
2914684ddb6SLionel Sambuc
2924684ddb6SLionel Sambucfloating_point trunc (arithmetic x);
2934684ddb6SLionel Sambucfloat          truncf(float x);
2944684ddb6SLionel Sambuclong double    truncl(long double x);
2954684ddb6SLionel Sambuc
2964684ddb6SLionel Sambuc}  // std
2974684ddb6SLionel Sambuc
2984684ddb6SLionel Sambuc*/
2994684ddb6SLionel Sambuc
3004684ddb6SLionel Sambuc#include <__config>
3014684ddb6SLionel Sambuc#include <math.h>
3024684ddb6SLionel Sambuc#include <type_traits>
3034684ddb6SLionel Sambuc
3044684ddb6SLionel Sambuc#ifdef _LIBCPP_MSVCRT
3054684ddb6SLionel Sambuc#include "support/win32/math_win32.h"
3064684ddb6SLionel Sambuc#endif
3074684ddb6SLionel Sambuc
3084684ddb6SLionel Sambuc#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
3094684ddb6SLionel Sambuc#pragma GCC system_header
3104684ddb6SLionel Sambuc#endif
3114684ddb6SLionel Sambuc
3124684ddb6SLionel Sambuc// signbit
3134684ddb6SLionel Sambuc
3144684ddb6SLionel Sambuc#ifdef signbit
3154684ddb6SLionel Sambuc
3164684ddb6SLionel Sambuctemplate <class _A1>
3174684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
3184684ddb6SLionel Sambucbool
319*0a6a1f1dSLionel Sambuc__libcpp_signbit(_A1 __lcpp_x) _NOEXCEPT
3204684ddb6SLionel Sambuc{
321*0a6a1f1dSLionel Sambuc    return signbit(__lcpp_x);
3224684ddb6SLionel Sambuc}
3234684ddb6SLionel Sambuc
3244684ddb6SLionel Sambuc#undef signbit
3254684ddb6SLionel Sambuc
3264684ddb6SLionel Sambuctemplate <class _A1>
3274684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
3284684ddb6SLionel Sambuctypename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type
329*0a6a1f1dSLionel Sambucsignbit(_A1 __lcpp_x) _NOEXCEPT
3304684ddb6SLionel Sambuc{
331*0a6a1f1dSLionel Sambuc    return __libcpp_signbit((typename std::__promote<_A1>::type)__lcpp_x);
3324684ddb6SLionel Sambuc}
3334684ddb6SLionel Sambuc
3344684ddb6SLionel Sambuc#endif  // signbit
3354684ddb6SLionel Sambuc
3364684ddb6SLionel Sambuc// fpclassify
3374684ddb6SLionel Sambuc
3384684ddb6SLionel Sambuc#ifdef fpclassify
3394684ddb6SLionel Sambuc
3404684ddb6SLionel Sambuctemplate <class _A1>
3414684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
3424684ddb6SLionel Sambucint
343*0a6a1f1dSLionel Sambuc__libcpp_fpclassify(_A1 __lcpp_x) _NOEXCEPT
3444684ddb6SLionel Sambuc{
345*0a6a1f1dSLionel Sambuc    return fpclassify(__lcpp_x);
3464684ddb6SLionel Sambuc}
3474684ddb6SLionel Sambuc
3484684ddb6SLionel Sambuc#undef fpclassify
3494684ddb6SLionel Sambuc
3504684ddb6SLionel Sambuctemplate <class _A1>
3514684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
3524684ddb6SLionel Sambuctypename std::enable_if<std::is_arithmetic<_A1>::value, int>::type
353*0a6a1f1dSLionel Sambucfpclassify(_A1 __lcpp_x) _NOEXCEPT
3544684ddb6SLionel Sambuc{
355*0a6a1f1dSLionel Sambuc    return __libcpp_fpclassify((typename std::__promote<_A1>::type)__lcpp_x);
3564684ddb6SLionel Sambuc}
3574684ddb6SLionel Sambuc
3584684ddb6SLionel Sambuc#endif  // fpclassify
3594684ddb6SLionel Sambuc
3604684ddb6SLionel Sambuc// isfinite
3614684ddb6SLionel Sambuc
3624684ddb6SLionel Sambuc#ifdef isfinite
3634684ddb6SLionel Sambuc
3644684ddb6SLionel Sambuctemplate <class _A1>
3654684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
3664684ddb6SLionel Sambucbool
367*0a6a1f1dSLionel Sambuc__libcpp_isfinite(_A1 __lcpp_x) _NOEXCEPT
3684684ddb6SLionel Sambuc{
369*0a6a1f1dSLionel Sambuc    return isfinite(__lcpp_x);
3704684ddb6SLionel Sambuc}
3714684ddb6SLionel Sambuc
3724684ddb6SLionel Sambuc#undef isfinite
3734684ddb6SLionel Sambuc
3744684ddb6SLionel Sambuctemplate <class _A1>
3754684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
3764684ddb6SLionel Sambuctypename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type
377*0a6a1f1dSLionel Sambucisfinite(_A1 __lcpp_x) _NOEXCEPT
3784684ddb6SLionel Sambuc{
379*0a6a1f1dSLionel Sambuc    return __libcpp_isfinite((typename std::__promote<_A1>::type)__lcpp_x);
3804684ddb6SLionel Sambuc}
3814684ddb6SLionel Sambuc
3824684ddb6SLionel Sambuc#endif  // isfinite
3834684ddb6SLionel Sambuc
3844684ddb6SLionel Sambuc// isinf
3854684ddb6SLionel Sambuc
3864684ddb6SLionel Sambuc#ifdef isinf
3874684ddb6SLionel Sambuc
3884684ddb6SLionel Sambuctemplate <class _A1>
3894684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
3904684ddb6SLionel Sambucbool
391*0a6a1f1dSLionel Sambuc__libcpp_isinf(_A1 __lcpp_x) _NOEXCEPT
3924684ddb6SLionel Sambuc{
393*0a6a1f1dSLionel Sambuc    return isinf(__lcpp_x);
3944684ddb6SLionel Sambuc}
3954684ddb6SLionel Sambuc
3964684ddb6SLionel Sambuc#undef isinf
3974684ddb6SLionel Sambuc
3984684ddb6SLionel Sambuctemplate <class _A1>
3994684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
4004684ddb6SLionel Sambuctypename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type
401*0a6a1f1dSLionel Sambucisinf(_A1 __lcpp_x) _NOEXCEPT
4024684ddb6SLionel Sambuc{
403*0a6a1f1dSLionel Sambuc    return __libcpp_isinf((typename std::__promote<_A1>::type)__lcpp_x);
4044684ddb6SLionel Sambuc}
4054684ddb6SLionel Sambuc
4064684ddb6SLionel Sambuc#endif  // isinf
4074684ddb6SLionel Sambuc
4084684ddb6SLionel Sambuc// isnan
4094684ddb6SLionel Sambuc
4104684ddb6SLionel Sambuc#ifdef isnan
4114684ddb6SLionel Sambuc
4124684ddb6SLionel Sambuctemplate <class _A1>
4134684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
4144684ddb6SLionel Sambucbool
415*0a6a1f1dSLionel Sambuc__libcpp_isnan(_A1 __lcpp_x) _NOEXCEPT
4164684ddb6SLionel Sambuc{
417*0a6a1f1dSLionel Sambuc    return isnan(__lcpp_x);
4184684ddb6SLionel Sambuc}
4194684ddb6SLionel Sambuc
4204684ddb6SLionel Sambuc#undef isnan
4214684ddb6SLionel Sambuc
4224684ddb6SLionel Sambuctemplate <class _A1>
4234684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
4244684ddb6SLionel Sambuctypename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type
425*0a6a1f1dSLionel Sambucisnan(_A1 __lcpp_x) _NOEXCEPT
4264684ddb6SLionel Sambuc{
427*0a6a1f1dSLionel Sambuc    return __libcpp_isnan((typename std::__promote<_A1>::type)__lcpp_x);
4284684ddb6SLionel Sambuc}
4294684ddb6SLionel Sambuc
4304684ddb6SLionel Sambuc#endif  // isnan
4314684ddb6SLionel Sambuc
4324684ddb6SLionel Sambuc// isnormal
4334684ddb6SLionel Sambuc
4344684ddb6SLionel Sambuc#ifdef isnormal
4354684ddb6SLionel Sambuc
4364684ddb6SLionel Sambuctemplate <class _A1>
4374684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
4384684ddb6SLionel Sambucbool
439*0a6a1f1dSLionel Sambuc__libcpp_isnormal(_A1 __lcpp_x) _NOEXCEPT
4404684ddb6SLionel Sambuc{
441*0a6a1f1dSLionel Sambuc    return isnormal(__lcpp_x);
4424684ddb6SLionel Sambuc}
4434684ddb6SLionel Sambuc
4444684ddb6SLionel Sambuc#undef isnormal
4454684ddb6SLionel Sambuc
4464684ddb6SLionel Sambuctemplate <class _A1>
4474684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
4484684ddb6SLionel Sambuctypename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type
449*0a6a1f1dSLionel Sambucisnormal(_A1 __lcpp_x) _NOEXCEPT
4504684ddb6SLionel Sambuc{
451*0a6a1f1dSLionel Sambuc    return __libcpp_isnormal((typename std::__promote<_A1>::type)__lcpp_x);
4524684ddb6SLionel Sambuc}
4534684ddb6SLionel Sambuc
4544684ddb6SLionel Sambuc#endif  // isnormal
4554684ddb6SLionel Sambuc
4564684ddb6SLionel Sambuc// isgreater
4574684ddb6SLionel Sambuc
4584684ddb6SLionel Sambuc#ifdef isgreater
4594684ddb6SLionel Sambuc
4604684ddb6SLionel Sambuctemplate <class _A1, class _A2>
4614684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
4624684ddb6SLionel Sambucbool
463*0a6a1f1dSLionel Sambuc__libcpp_isgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
4644684ddb6SLionel Sambuc{
465*0a6a1f1dSLionel Sambuc    return isgreater(__lcpp_x, __lcpp_y);
4664684ddb6SLionel Sambuc}
4674684ddb6SLionel Sambuc
4684684ddb6SLionel Sambuc#undef isgreater
4694684ddb6SLionel Sambuc
4704684ddb6SLionel Sambuctemplate <class _A1, class _A2>
4714684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
4724684ddb6SLionel Sambuctypename std::enable_if
4734684ddb6SLionel Sambuc<
4744684ddb6SLionel Sambuc    std::is_arithmetic<_A1>::value &&
4754684ddb6SLionel Sambuc    std::is_arithmetic<_A2>::value,
4764684ddb6SLionel Sambuc    bool
4774684ddb6SLionel Sambuc>::type
478*0a6a1f1dSLionel Sambucisgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
4794684ddb6SLionel Sambuc{
4804684ddb6SLionel Sambuc    typedef typename std::__promote<_A1, _A2>::type type;
481*0a6a1f1dSLionel Sambuc    return __libcpp_isgreater((type)__lcpp_x, (type)__lcpp_y);
4824684ddb6SLionel Sambuc}
4834684ddb6SLionel Sambuc
4844684ddb6SLionel Sambuc#endif  // isgreater
4854684ddb6SLionel Sambuc
4864684ddb6SLionel Sambuc// isgreaterequal
4874684ddb6SLionel Sambuc
4884684ddb6SLionel Sambuc#ifdef isgreaterequal
4894684ddb6SLionel Sambuc
4904684ddb6SLionel Sambuctemplate <class _A1, class _A2>
4914684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
4924684ddb6SLionel Sambucbool
493*0a6a1f1dSLionel Sambuc__libcpp_isgreaterequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
4944684ddb6SLionel Sambuc{
495*0a6a1f1dSLionel Sambuc    return isgreaterequal(__lcpp_x, __lcpp_y);
4964684ddb6SLionel Sambuc}
4974684ddb6SLionel Sambuc
4984684ddb6SLionel Sambuc#undef isgreaterequal
4994684ddb6SLionel Sambuc
5004684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5014684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
5024684ddb6SLionel Sambuctypename std::enable_if
5034684ddb6SLionel Sambuc<
5044684ddb6SLionel Sambuc    std::is_arithmetic<_A1>::value &&
5054684ddb6SLionel Sambuc    std::is_arithmetic<_A2>::value,
5064684ddb6SLionel Sambuc    bool
5074684ddb6SLionel Sambuc>::type
508*0a6a1f1dSLionel Sambucisgreaterequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5094684ddb6SLionel Sambuc{
5104684ddb6SLionel Sambuc    typedef typename std::__promote<_A1, _A2>::type type;
511*0a6a1f1dSLionel Sambuc    return __libcpp_isgreaterequal((type)__lcpp_x, (type)__lcpp_y);
5124684ddb6SLionel Sambuc}
5134684ddb6SLionel Sambuc
5144684ddb6SLionel Sambuc#endif  // isgreaterequal
5154684ddb6SLionel Sambuc
5164684ddb6SLionel Sambuc// isless
5174684ddb6SLionel Sambuc
5184684ddb6SLionel Sambuc#ifdef isless
5194684ddb6SLionel Sambuc
5204684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5214684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
5224684ddb6SLionel Sambucbool
523*0a6a1f1dSLionel Sambuc__libcpp_isless(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5244684ddb6SLionel Sambuc{
525*0a6a1f1dSLionel Sambuc    return isless(__lcpp_x, __lcpp_y);
5264684ddb6SLionel Sambuc}
5274684ddb6SLionel Sambuc
5284684ddb6SLionel Sambuc#undef isless
5294684ddb6SLionel Sambuc
5304684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5314684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
5324684ddb6SLionel Sambuctypename std::enable_if
5334684ddb6SLionel Sambuc<
5344684ddb6SLionel Sambuc    std::is_arithmetic<_A1>::value &&
5354684ddb6SLionel Sambuc    std::is_arithmetic<_A2>::value,
5364684ddb6SLionel Sambuc    bool
5374684ddb6SLionel Sambuc>::type
538*0a6a1f1dSLionel Sambucisless(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5394684ddb6SLionel Sambuc{
5404684ddb6SLionel Sambuc    typedef typename std::__promote<_A1, _A2>::type type;
541*0a6a1f1dSLionel Sambuc    return __libcpp_isless((type)__lcpp_x, (type)__lcpp_y);
5424684ddb6SLionel Sambuc}
5434684ddb6SLionel Sambuc
5444684ddb6SLionel Sambuc#endif  // isless
5454684ddb6SLionel Sambuc
5464684ddb6SLionel Sambuc// islessequal
5474684ddb6SLionel Sambuc
5484684ddb6SLionel Sambuc#ifdef islessequal
5494684ddb6SLionel Sambuc
5504684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5514684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
5524684ddb6SLionel Sambucbool
553*0a6a1f1dSLionel Sambuc__libcpp_islessequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5544684ddb6SLionel Sambuc{
555*0a6a1f1dSLionel Sambuc    return islessequal(__lcpp_x, __lcpp_y);
5564684ddb6SLionel Sambuc}
5574684ddb6SLionel Sambuc
5584684ddb6SLionel Sambuc#undef islessequal
5594684ddb6SLionel Sambuc
5604684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5614684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
5624684ddb6SLionel Sambuctypename std::enable_if
5634684ddb6SLionel Sambuc<
5644684ddb6SLionel Sambuc    std::is_arithmetic<_A1>::value &&
5654684ddb6SLionel Sambuc    std::is_arithmetic<_A2>::value,
5664684ddb6SLionel Sambuc    bool
5674684ddb6SLionel Sambuc>::type
568*0a6a1f1dSLionel Sambucislessequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5694684ddb6SLionel Sambuc{
5704684ddb6SLionel Sambuc    typedef typename std::__promote<_A1, _A2>::type type;
571*0a6a1f1dSLionel Sambuc    return __libcpp_islessequal((type)__lcpp_x, (type)__lcpp_y);
5724684ddb6SLionel Sambuc}
5734684ddb6SLionel Sambuc
5744684ddb6SLionel Sambuc#endif  // islessequal
5754684ddb6SLionel Sambuc
5764684ddb6SLionel Sambuc// islessgreater
5774684ddb6SLionel Sambuc
5784684ddb6SLionel Sambuc#ifdef islessgreater
5794684ddb6SLionel Sambuc
5804684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5814684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
5824684ddb6SLionel Sambucbool
583*0a6a1f1dSLionel Sambuc__libcpp_islessgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5844684ddb6SLionel Sambuc{
585*0a6a1f1dSLionel Sambuc    return islessgreater(__lcpp_x, __lcpp_y);
5864684ddb6SLionel Sambuc}
5874684ddb6SLionel Sambuc
5884684ddb6SLionel Sambuc#undef islessgreater
5894684ddb6SLionel Sambuc
5904684ddb6SLionel Sambuctemplate <class _A1, class _A2>
5914684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
5924684ddb6SLionel Sambuctypename std::enable_if
5934684ddb6SLionel Sambuc<
5944684ddb6SLionel Sambuc    std::is_arithmetic<_A1>::value &&
5954684ddb6SLionel Sambuc    std::is_arithmetic<_A2>::value,
5964684ddb6SLionel Sambuc    bool
5974684ddb6SLionel Sambuc>::type
598*0a6a1f1dSLionel Sambucislessgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
5994684ddb6SLionel Sambuc{
6004684ddb6SLionel Sambuc    typedef typename std::__promote<_A1, _A2>::type type;
601*0a6a1f1dSLionel Sambuc    return __libcpp_islessgreater((type)__lcpp_x, (type)__lcpp_y);
6024684ddb6SLionel Sambuc}
6034684ddb6SLionel Sambuc
6044684ddb6SLionel Sambuc#endif  // islessgreater
6054684ddb6SLionel Sambuc
6064684ddb6SLionel Sambuc// isunordered
6074684ddb6SLionel Sambuc
6084684ddb6SLionel Sambuc#ifdef isunordered
6094684ddb6SLionel Sambuc
6104684ddb6SLionel Sambuctemplate <class _A1, class _A2>
6114684ddb6SLionel Sambuc_LIBCPP_ALWAYS_INLINE
6124684ddb6SLionel Sambucbool
613*0a6a1f1dSLionel Sambuc__libcpp_isunordered(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
6144684ddb6SLionel Sambuc{
615*0a6a1f1dSLionel Sambuc    return isunordered(__lcpp_x, __lcpp_y);
6164684ddb6SLionel Sambuc}
6174684ddb6SLionel Sambuc
6184684ddb6SLionel Sambuc#undef isunordered
6194684ddb6SLionel Sambuc
6204684ddb6SLionel Sambuctemplate <class _A1, class _A2>
6214684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
6224684ddb6SLionel Sambuctypename std::enable_if
6234684ddb6SLionel Sambuc<
6244684ddb6SLionel Sambuc    std::is_arithmetic<_A1>::value &&
6254684ddb6SLionel Sambuc    std::is_arithmetic<_A2>::value,
6264684ddb6SLionel Sambuc    bool
6274684ddb6SLionel Sambuc>::type
628*0a6a1f1dSLionel Sambucisunordered(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
6294684ddb6SLionel Sambuc{
6304684ddb6SLionel Sambuc    typedef typename std::__promote<_A1, _A2>::type type;
631*0a6a1f1dSLionel Sambuc    return __libcpp_isunordered((type)__lcpp_x, (type)__lcpp_y);
6324684ddb6SLionel Sambuc}
6334684ddb6SLionel Sambuc
6344684ddb6SLionel Sambuc#endif  // isunordered
6354684ddb6SLionel Sambuc
6364684ddb6SLionel Sambuc_LIBCPP_BEGIN_NAMESPACE_STD
6374684ddb6SLionel Sambuc
6384684ddb6SLionel Sambucusing ::signbit;
6394684ddb6SLionel Sambucusing ::fpclassify;
6404684ddb6SLionel Sambucusing ::isfinite;
6414684ddb6SLionel Sambucusing ::isinf;
6424684ddb6SLionel Sambucusing ::isnan;
6434684ddb6SLionel Sambucusing ::isnormal;
6444684ddb6SLionel Sambucusing ::isgreater;
6454684ddb6SLionel Sambucusing ::isgreaterequal;
6464684ddb6SLionel Sambucusing ::isless;
6474684ddb6SLionel Sambucusing ::islessequal;
6484684ddb6SLionel Sambucusing ::islessgreater;
6494684ddb6SLionel Sambucusing ::isunordered;
6504684ddb6SLionel Sambucusing ::isunordered;
6514684ddb6SLionel Sambuc
6524684ddb6SLionel Sambucusing ::float_t;
6534684ddb6SLionel Sambucusing ::double_t;
6544684ddb6SLionel Sambuc
6554684ddb6SLionel Sambuc// abs
6564684ddb6SLionel Sambuc
657*0a6a1f1dSLionel Sambuc#if defined(__sun__)
658*0a6a1f1dSLionel Sambucusing ::abs;
659*0a6a1f1dSLionel Sambuc#endif
660*0a6a1f1dSLionel Sambuc
661*0a6a1f1dSLionel Sambuc#if !defined(_AIX) && !defined(__sun__)
6624684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
6634684ddb6SLionel Sambucfloat
664*0a6a1f1dSLionel Sambucabs(float __lcpp_x) _NOEXCEPT {return fabsf(__lcpp_x);}
6654684ddb6SLionel Sambuc
6664684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
6674684ddb6SLionel Sambucdouble
668*0a6a1f1dSLionel Sambucabs(double __lcpp_x) _NOEXCEPT {return fabs(__lcpp_x);}
6694684ddb6SLionel Sambuc
6704684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
6714684ddb6SLionel Sambuclong double
672*0a6a1f1dSLionel Sambucabs(long double __lcpp_x) _NOEXCEPT {return fabsl(__lcpp_x);}
6734684ddb6SLionel Sambuc#endif // !defined(_AIX)
6744684ddb6SLionel Sambuc
6754684ddb6SLionel Sambuc#ifndef __sun__
6764684ddb6SLionel Sambuc
6774684ddb6SLionel Sambuc// acos
6784684ddb6SLionel Sambuc
6794684ddb6SLionel Sambucusing ::acos;
6804684ddb6SLionel Sambucusing ::acosf;
6814684ddb6SLionel Sambuc
6824684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
683*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       acos(float __lcpp_x) _NOEXCEPT       {return acosf(__lcpp_x);}
684*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);}
6854684ddb6SLionel Sambuc#endif
6864684ddb6SLionel Sambuc
6874684ddb6SLionel Sambuctemplate <class _A1>
6884684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
6894684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
690*0a6a1f1dSLionel Sambucacos(_A1 __lcpp_x) _NOEXCEPT {return acos((double)__lcpp_x);}
6914684ddb6SLionel Sambuc
6924684ddb6SLionel Sambuc// asin
6934684ddb6SLionel Sambuc
6944684ddb6SLionel Sambucusing ::asin;
6954684ddb6SLionel Sambucusing ::asinf;
6964684ddb6SLionel Sambuc
6974684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
698*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       asin(float __lcpp_x) _NOEXCEPT       {return asinf(__lcpp_x);}
699*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double asin(long double __lcpp_x) _NOEXCEPT {return asinl(__lcpp_x);}
7004684ddb6SLionel Sambuc#endif
7014684ddb6SLionel Sambuc
7024684ddb6SLionel Sambuctemplate <class _A1>
7034684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
7044684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
705*0a6a1f1dSLionel Sambucasin(_A1 __lcpp_x) _NOEXCEPT {return asin((double)__lcpp_x);}
7064684ddb6SLionel Sambuc
7074684ddb6SLionel Sambuc// atan
7084684ddb6SLionel Sambuc
7094684ddb6SLionel Sambucusing ::atan;
7104684ddb6SLionel Sambucusing ::atanf;
7114684ddb6SLionel Sambuc
7124684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
713*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       atan(float __lcpp_x) _NOEXCEPT       {return atanf(__lcpp_x);}
714*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double atan(long double __lcpp_x) _NOEXCEPT {return atanl(__lcpp_x);}
7154684ddb6SLionel Sambuc#endif
7164684ddb6SLionel Sambuc
7174684ddb6SLionel Sambuctemplate <class _A1>
7184684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
7194684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
720*0a6a1f1dSLionel Sambucatan(_A1 __lcpp_x) _NOEXCEPT {return atan((double)__lcpp_x);}
7214684ddb6SLionel Sambuc
7224684ddb6SLionel Sambuc// atan2
7234684ddb6SLionel Sambuc
7244684ddb6SLionel Sambucusing ::atan2;
7254684ddb6SLionel Sambucusing ::atan2f;
7264684ddb6SLionel Sambuc
7274684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
728*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       atan2(float __lcpp_y, float __lcpp_x) _NOEXCEPT             {return atan2f(__lcpp_y, __lcpp_x);}
729*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __lcpp_y, long double __lcpp_x) _NOEXCEPT {return atan2l(__lcpp_y, __lcpp_x);}
7304684ddb6SLionel Sambuc#endif
7314684ddb6SLionel Sambuc
7324684ddb6SLionel Sambuctemplate <class _A1, class _A2>
7334684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
734*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
7354684ddb6SLionel Sambuc<
7364684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
7374684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
738*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
7394684ddb6SLionel Sambuc>::type
740*0a6a1f1dSLionel Sambucatan2(_A1 __lcpp_y, _A2 __lcpp_x) _NOEXCEPT
7414684ddb6SLionel Sambuc{
7424684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
7434684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
7444684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
745*0a6a1f1dSLionel Sambuc    return atan2((__result_type)__lcpp_y, (__result_type)__lcpp_x);
7464684ddb6SLionel Sambuc}
7474684ddb6SLionel Sambuc
7484684ddb6SLionel Sambuc// ceil
7494684ddb6SLionel Sambuc
7504684ddb6SLionel Sambucusing ::ceil;
7514684ddb6SLionel Sambucusing ::ceilf;
7524684ddb6SLionel Sambuc
7534684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
754*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       ceil(float __lcpp_x) _NOEXCEPT       {return ceilf(__lcpp_x);}
755*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __lcpp_x) _NOEXCEPT {return ceill(__lcpp_x);}
7564684ddb6SLionel Sambuc#endif
7574684ddb6SLionel Sambuc
7584684ddb6SLionel Sambuctemplate <class _A1>
7594684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
7604684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
761*0a6a1f1dSLionel Sambucceil(_A1 __lcpp_x) _NOEXCEPT {return ceil((double)__lcpp_x);}
7624684ddb6SLionel Sambuc
7634684ddb6SLionel Sambuc// cos
7644684ddb6SLionel Sambuc
7654684ddb6SLionel Sambucusing ::cos;
7664684ddb6SLionel Sambucusing ::cosf;
7674684ddb6SLionel Sambuc
7684684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
769*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       cos(float __lcpp_x) _NOEXCEPT       {return cosf(__lcpp_x);}
770*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double cos(long double __lcpp_x) _NOEXCEPT {return cosl(__lcpp_x);}
7714684ddb6SLionel Sambuc#endif
7724684ddb6SLionel Sambuc
7734684ddb6SLionel Sambuctemplate <class _A1>
7744684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
7754684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
776*0a6a1f1dSLionel Sambuccos(_A1 __lcpp_x) _NOEXCEPT {return cos((double)__lcpp_x);}
7774684ddb6SLionel Sambuc
7784684ddb6SLionel Sambuc// cosh
7794684ddb6SLionel Sambuc
7804684ddb6SLionel Sambucusing ::cosh;
7814684ddb6SLionel Sambucusing ::coshf;
7824684ddb6SLionel Sambuc
7834684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
784*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       cosh(float __lcpp_x) _NOEXCEPT       {return coshf(__lcpp_x);}
785*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double cosh(long double __lcpp_x) _NOEXCEPT {return coshl(__lcpp_x);}
7864684ddb6SLionel Sambuc#endif
7874684ddb6SLionel Sambuc
7884684ddb6SLionel Sambuctemplate <class _A1>
7894684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
7904684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
791*0a6a1f1dSLionel Sambuccosh(_A1 __lcpp_x) _NOEXCEPT {return cosh((double)__lcpp_x);}
7924684ddb6SLionel Sambuc
7934684ddb6SLionel Sambuc#endif // __sun__
7944684ddb6SLionel Sambuc// exp
7954684ddb6SLionel Sambuc
7964684ddb6SLionel Sambucusing ::exp;
7974684ddb6SLionel Sambucusing ::expf;
7984684ddb6SLionel Sambuc
7994684ddb6SLionel Sambuc#ifndef __sun__
8004684ddb6SLionel Sambuc
8014684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
802*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       exp(float __lcpp_x) _NOEXCEPT       {return expf(__lcpp_x);}
803*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double exp(long double __lcpp_x) _NOEXCEPT {return expl(__lcpp_x);}
8044684ddb6SLionel Sambuc#endif
8054684ddb6SLionel Sambuc
8064684ddb6SLionel Sambuc
8074684ddb6SLionel Sambuctemplate <class _A1>
8084684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
8094684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
810*0a6a1f1dSLionel Sambucexp(_A1 __lcpp_x) _NOEXCEPT {return exp((double)__lcpp_x);}
8114684ddb6SLionel Sambuc
8124684ddb6SLionel Sambuc// fabs
8134684ddb6SLionel Sambuc
8144684ddb6SLionel Sambucusing ::fabs;
8154684ddb6SLionel Sambucusing ::fabsf;
8164684ddb6SLionel Sambuc
8174684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
818*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       fabs(float __lcpp_x) _NOEXCEPT       {return fabsf(__lcpp_x);}
819*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double fabs(long double __lcpp_x) _NOEXCEPT {return fabsl(__lcpp_x);}
8204684ddb6SLionel Sambuc#endif
8214684ddb6SLionel Sambuc
8224684ddb6SLionel Sambuctemplate <class _A1>
8234684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
8244684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
825*0a6a1f1dSLionel Sambucfabs(_A1 __lcpp_x) _NOEXCEPT {return fabs((double)__lcpp_x);}
8264684ddb6SLionel Sambuc
8274684ddb6SLionel Sambuc// floor
8284684ddb6SLionel Sambuc
8294684ddb6SLionel Sambucusing ::floor;
8304684ddb6SLionel Sambucusing ::floorf;
8314684ddb6SLionel Sambuc
8324684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
833*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       floor(float __lcpp_x) _NOEXCEPT       {return floorf(__lcpp_x);}
834*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double floor(long double __lcpp_x) _NOEXCEPT {return floorl(__lcpp_x);}
8354684ddb6SLionel Sambuc#endif
8364684ddb6SLionel Sambuc
8374684ddb6SLionel Sambuctemplate <class _A1>
8384684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
8394684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
840*0a6a1f1dSLionel Sambucfloor(_A1 __lcpp_x) _NOEXCEPT {return floor((double)__lcpp_x);}
8414684ddb6SLionel Sambuc
8424684ddb6SLionel Sambuc// fmod
8434684ddb6SLionel Sambuc
8444684ddb6SLionel Sambuc#endif //__sun__
8454684ddb6SLionel Sambucusing ::fmod;
8464684ddb6SLionel Sambucusing ::fmodf;
8474684ddb6SLionel Sambuc#ifndef __sun__
8484684ddb6SLionel Sambuc
8494684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
850*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       fmod(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return fmodf(__lcpp_x, __lcpp_y);}
851*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fmodl(__lcpp_x, __lcpp_y);}
8524684ddb6SLionel Sambuc#endif
8534684ddb6SLionel Sambuc
8544684ddb6SLionel Sambuctemplate <class _A1, class _A2>
8554684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
856*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
8574684ddb6SLionel Sambuc<
8584684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
8594684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
860*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
8614684ddb6SLionel Sambuc>::type
862*0a6a1f1dSLionel Sambucfmod(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
8634684ddb6SLionel Sambuc{
8644684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
8654684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
8664684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
867*0a6a1f1dSLionel Sambuc    return fmod((__result_type)__lcpp_x, (__result_type)__lcpp_y);
8684684ddb6SLionel Sambuc}
8694684ddb6SLionel Sambuc
8704684ddb6SLionel Sambuc
8714684ddb6SLionel Sambuc// frexp
8724684ddb6SLionel Sambuc
8734684ddb6SLionel Sambucusing ::frexp;
8744684ddb6SLionel Sambucusing ::frexpf;
8754684ddb6SLionel Sambuc
8764684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
877*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       frexp(float __lcpp_x, int* __lcpp_e) _NOEXCEPT       {return frexpf(__lcpp_x, __lcpp_e);}
878*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double frexp(long double __lcpp_x, int* __lcpp_e) _NOEXCEPT {return frexpl(__lcpp_x, __lcpp_e);}
8794684ddb6SLionel Sambuc#endif
8804684ddb6SLionel Sambuc
8814684ddb6SLionel Sambuctemplate <class _A1>
8824684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
8834684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
884*0a6a1f1dSLionel Sambucfrexp(_A1 __lcpp_x, int* __lcpp_e) _NOEXCEPT {return frexp((double)__lcpp_x, __lcpp_e);}
8854684ddb6SLionel Sambuc
8864684ddb6SLionel Sambuc// ldexp
8874684ddb6SLionel Sambuc
8884684ddb6SLionel Sambucusing ::ldexp;
8894684ddb6SLionel Sambucusing ::ldexpf;
8904684ddb6SLionel Sambuc
8914684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
892*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       ldexp(float __lcpp_x, int __lcpp_e) _NOEXCEPT       {return ldexpf(__lcpp_x, __lcpp_e);}
893*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double ldexp(long double __lcpp_x, int __lcpp_e) _NOEXCEPT {return ldexpl(__lcpp_x, __lcpp_e);}
8944684ddb6SLionel Sambuc#endif
8954684ddb6SLionel Sambuc
8964684ddb6SLionel Sambuctemplate <class _A1>
8974684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
8984684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
899*0a6a1f1dSLionel Sambucldexp(_A1 __lcpp_x, int __lcpp_e) _NOEXCEPT {return ldexp((double)__lcpp_x, __lcpp_e);}
9004684ddb6SLionel Sambuc
9014684ddb6SLionel Sambuc// log
9024684ddb6SLionel Sambuc
9034684ddb6SLionel Sambuc#endif // __sun__
9044684ddb6SLionel Sambucusing ::log;
9054684ddb6SLionel Sambucusing ::logf;
9064684ddb6SLionel Sambuc#ifndef __sun__
9074684ddb6SLionel Sambuc
9084684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
909*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       log(float __lcpp_x) _NOEXCEPT       {return logf(__lcpp_x);}
910*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double log(long double __lcpp_x) _NOEXCEPT {return logl(__lcpp_x);}
9114684ddb6SLionel Sambuc#endif
9124684ddb6SLionel Sambuc
9134684ddb6SLionel Sambuctemplate <class _A1>
9144684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
9154684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
916*0a6a1f1dSLionel Sambuclog(_A1 __lcpp_x) _NOEXCEPT {return log((double)__lcpp_x);}
9174684ddb6SLionel Sambuc
9184684ddb6SLionel Sambuc
9194684ddb6SLionel Sambuc// log10
9204684ddb6SLionel Sambuc
9214684ddb6SLionel Sambucusing ::log10;
9224684ddb6SLionel Sambucusing ::log10f;
9234684ddb6SLionel Sambuc
9244684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
925*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       log10(float __lcpp_x) _NOEXCEPT       {return log10f(__lcpp_x);}
926*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double log10(long double __lcpp_x) _NOEXCEPT {return log10l(__lcpp_x);}
9274684ddb6SLionel Sambuc#endif
9284684ddb6SLionel Sambuc
9294684ddb6SLionel Sambuctemplate <class _A1>
9304684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
9314684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
932*0a6a1f1dSLionel Sambuclog10(_A1 __lcpp_x) _NOEXCEPT {return log10((double)__lcpp_x);}
9334684ddb6SLionel Sambuc
9344684ddb6SLionel Sambuc// modf
9354684ddb6SLionel Sambuc
9364684ddb6SLionel Sambucusing ::modf;
9374684ddb6SLionel Sambucusing ::modff;
9384684ddb6SLionel Sambuc
9394684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
940*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       modf(float __lcpp_x, float* __lcpp_y) _NOEXCEPT             {return modff(__lcpp_x, __lcpp_y);}
941*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double modf(long double __lcpp_x, long double* __lcpp_y) _NOEXCEPT {return modfl(__lcpp_x, __lcpp_y);}
9424684ddb6SLionel Sambuc#endif
9434684ddb6SLionel Sambuc
9444684ddb6SLionel Sambuc// pow
9454684ddb6SLionel Sambuc
9464684ddb6SLionel Sambuc#endif // __sun__
9474684ddb6SLionel Sambucusing ::pow;
9484684ddb6SLionel Sambucusing ::powf;
9494684ddb6SLionel Sambuc
9504684ddb6SLionel Sambuc#ifndef __sun__
9514684ddb6SLionel Sambuc
9524684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
953*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       pow(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return powf(__lcpp_x, __lcpp_y);}
954*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double pow(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return powl(__lcpp_x, __lcpp_y);}
9554684ddb6SLionel Sambuc#endif
9564684ddb6SLionel Sambuc
9574684ddb6SLionel Sambuctemplate <class _A1, class _A2>
9584684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
959*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
9604684ddb6SLionel Sambuc<
9614684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
9624684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
963*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
9644684ddb6SLionel Sambuc>::type
965*0a6a1f1dSLionel Sambucpow(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
9664684ddb6SLionel Sambuc{
9674684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
9684684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
9694684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
970*0a6a1f1dSLionel Sambuc    return pow((__result_type)__lcpp_x, (__result_type)__lcpp_y);
9714684ddb6SLionel Sambuc}
9724684ddb6SLionel Sambuc
9734684ddb6SLionel Sambuc// sin
9744684ddb6SLionel Sambuc
9754684ddb6SLionel Sambucusing ::sin;
9764684ddb6SLionel Sambucusing ::sinf;
9774684ddb6SLionel Sambuc
9784684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
979*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       sin(float __lcpp_x) _NOEXCEPT       {return sinf(__lcpp_x);}
980*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double sin(long double __lcpp_x) _NOEXCEPT {return sinl(__lcpp_x);}
9814684ddb6SLionel Sambuc#endif
9824684ddb6SLionel Sambuc
9834684ddb6SLionel Sambuctemplate <class _A1>
9844684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
9854684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
986*0a6a1f1dSLionel Sambucsin(_A1 __lcpp_x) _NOEXCEPT {return sin((double)__lcpp_x);}
9874684ddb6SLionel Sambuc
9884684ddb6SLionel Sambuc// sinh
9894684ddb6SLionel Sambuc
9904684ddb6SLionel Sambucusing ::sinh;
9914684ddb6SLionel Sambucusing ::sinhf;
9924684ddb6SLionel Sambuc
9934684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
994*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       sinh(float __lcpp_x) _NOEXCEPT       {return sinhf(__lcpp_x);}
995*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double sinh(long double __lcpp_x) _NOEXCEPT {return sinhl(__lcpp_x);}
9964684ddb6SLionel Sambuc#endif
9974684ddb6SLionel Sambuc
9984684ddb6SLionel Sambuctemplate <class _A1>
9994684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10004684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1001*0a6a1f1dSLionel Sambucsinh(_A1 __lcpp_x) _NOEXCEPT {return sinh((double)__lcpp_x);}
10024684ddb6SLionel Sambuc
10034684ddb6SLionel Sambuc// sqrt
10044684ddb6SLionel Sambuc
10054684ddb6SLionel Sambuc#endif // __sun__
10064684ddb6SLionel Sambucusing ::sqrt;
10074684ddb6SLionel Sambucusing ::sqrtf;
10084684ddb6SLionel Sambuc
10094684ddb6SLionel Sambuc
10104684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(__sun__) || defined(_AIX))
1011*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       sqrt(float __lcpp_x) _NOEXCEPT       {return sqrtf(__lcpp_x);}
1012*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __lcpp_x) _NOEXCEPT {return sqrtl(__lcpp_x);}
10134684ddb6SLionel Sambuc#endif
10144684ddb6SLionel Sambuc
10154684ddb6SLionel Sambuctemplate <class _A1>
10164684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10174684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1018*0a6a1f1dSLionel Sambucsqrt(_A1 __lcpp_x) _NOEXCEPT {return sqrt((double)__lcpp_x);}
10194684ddb6SLionel Sambuc
10204684ddb6SLionel Sambuc// tan
10214684ddb6SLionel Sambuc
10224684ddb6SLionel Sambucusing ::tan;
10234684ddb6SLionel Sambucusing ::tanf;
10244684ddb6SLionel Sambuc#ifndef __sun__
10254684ddb6SLionel Sambuc
10264684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
1027*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       tan(float __lcpp_x) _NOEXCEPT       {return tanf(__lcpp_x);}
1028*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double tan(long double __lcpp_x) _NOEXCEPT {return tanl(__lcpp_x);}
10294684ddb6SLionel Sambuc#endif
10304684ddb6SLionel Sambuc
10314684ddb6SLionel Sambuctemplate <class _A1>
10324684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10334684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1034*0a6a1f1dSLionel Sambuctan(_A1 __lcpp_x) _NOEXCEPT {return tan((double)__lcpp_x);}
10354684ddb6SLionel Sambuc
10364684ddb6SLionel Sambuc// tanh
10374684ddb6SLionel Sambuc
10384684ddb6SLionel Sambucusing ::tanh;
10394684ddb6SLionel Sambucusing ::tanhf;
10404684ddb6SLionel Sambuc
10414684ddb6SLionel Sambuc#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
1042*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       tanh(float __lcpp_x) _NOEXCEPT       {return tanhf(__lcpp_x);}
1043*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double tanh(long double __lcpp_x) _NOEXCEPT {return tanhl(__lcpp_x);}
10444684ddb6SLionel Sambuc#endif
10454684ddb6SLionel Sambuc
10464684ddb6SLionel Sambuctemplate <class _A1>
10474684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10484684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1049*0a6a1f1dSLionel Sambuctanh(_A1 __lcpp_x) _NOEXCEPT {return tanh((double)__lcpp_x);}
10504684ddb6SLionel Sambuc
10514684ddb6SLionel Sambuc// acosh
10524684ddb6SLionel Sambuc
10534684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
10544684ddb6SLionel Sambucusing ::acosh;
10554684ddb6SLionel Sambucusing ::acoshf;
10564684ddb6SLionel Sambuc
1057*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       acosh(float __lcpp_x) _NOEXCEPT       {return acoshf(__lcpp_x);}
1058*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double acosh(long double __lcpp_x) _NOEXCEPT {return acoshl(__lcpp_x);}
10594684ddb6SLionel Sambuc
10604684ddb6SLionel Sambuctemplate <class _A1>
10614684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10624684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1063*0a6a1f1dSLionel Sambucacosh(_A1 __lcpp_x) _NOEXCEPT {return acosh((double)__lcpp_x);}
10644684ddb6SLionel Sambuc#endif
10654684ddb6SLionel Sambuc
10664684ddb6SLionel Sambuc// asinh
10674684ddb6SLionel Sambuc
10684684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
10694684ddb6SLionel Sambucusing ::asinh;
10704684ddb6SLionel Sambucusing ::asinhf;
10714684ddb6SLionel Sambuc
1072*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       asinh(float __lcpp_x) _NOEXCEPT       {return asinhf(__lcpp_x);}
1073*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double asinh(long double __lcpp_x) _NOEXCEPT {return asinhl(__lcpp_x);}
10744684ddb6SLionel Sambuc
10754684ddb6SLionel Sambuctemplate <class _A1>
10764684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10774684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1078*0a6a1f1dSLionel Sambucasinh(_A1 __lcpp_x) _NOEXCEPT {return asinh((double)__lcpp_x);}
10794684ddb6SLionel Sambuc#endif
10804684ddb6SLionel Sambuc
10814684ddb6SLionel Sambuc// atanh
10824684ddb6SLionel Sambuc
10834684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
10844684ddb6SLionel Sambucusing ::atanh;
10854684ddb6SLionel Sambucusing ::atanhf;
10864684ddb6SLionel Sambuc
1087*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       atanh(float __lcpp_x) _NOEXCEPT       {return atanhf(__lcpp_x);}
1088*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double atanh(long double __lcpp_x) _NOEXCEPT {return atanhl(__lcpp_x);}
10894684ddb6SLionel Sambuc
10904684ddb6SLionel Sambuctemplate <class _A1>
10914684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
10924684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1093*0a6a1f1dSLionel Sambucatanh(_A1 __lcpp_x) _NOEXCEPT {return atanh((double)__lcpp_x);}
10944684ddb6SLionel Sambuc#endif
10954684ddb6SLionel Sambuc
10964684ddb6SLionel Sambuc// cbrt
10974684ddb6SLionel Sambuc
10984684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
10994684ddb6SLionel Sambucusing ::cbrt;
11004684ddb6SLionel Sambucusing ::cbrtf;
11014684ddb6SLionel Sambuc
1102*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       cbrt(float __lcpp_x) _NOEXCEPT       {return cbrtf(__lcpp_x);}
1103*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double cbrt(long double __lcpp_x) _NOEXCEPT {return cbrtl(__lcpp_x);}
11044684ddb6SLionel Sambuc
11054684ddb6SLionel Sambuctemplate <class _A1>
11064684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
11074684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1108*0a6a1f1dSLionel Sambuccbrt(_A1 __lcpp_x) _NOEXCEPT {return cbrt((double)__lcpp_x);}
11094684ddb6SLionel Sambuc#endif
11104684ddb6SLionel Sambuc
11114684ddb6SLionel Sambuc// copysign
11124684ddb6SLionel Sambuc
11134684ddb6SLionel Sambucusing ::copysign;
11144684ddb6SLionel Sambucusing ::copysignf;
11154684ddb6SLionel Sambuc
1116*0a6a1f1dSLionel Sambuc#if !defined(_VC_CRT_MAJOR_VERSION) || (_VC_CRT_MAJOR_VERSION < 12)
1117*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float copysign(float __lcpp_x,
1118*0a6a1f1dSLionel Sambuc                                                float __lcpp_y) _NOEXCEPT {
1119*0a6a1f1dSLionel Sambuc  return copysignf(__lcpp_x, __lcpp_y);
1120*0a6a1f1dSLionel Sambuc}
1121*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double
1122*0a6a1f1dSLionel Sambuccopysign(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {
1123*0a6a1f1dSLionel Sambuc  return copysignl(__lcpp_x, __lcpp_y);
1124*0a6a1f1dSLionel Sambuc}
1125*0a6a1f1dSLionel Sambuc#endif
11264684ddb6SLionel Sambuc
11274684ddb6SLionel Sambuctemplate <class _A1, class _A2>
11284684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1129*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
11304684ddb6SLionel Sambuc<
11314684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
11324684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1133*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
11344684ddb6SLionel Sambuc>::type
1135*0a6a1f1dSLionel Sambuccopysign(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
11364684ddb6SLionel Sambuc{
11374684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
11384684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
11394684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1140*0a6a1f1dSLionel Sambuc    return copysign((__result_type)__lcpp_x, (__result_type)__lcpp_y);
11414684ddb6SLionel Sambuc}
11424684ddb6SLionel Sambuc
11434684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
11444684ddb6SLionel Sambuc
11454684ddb6SLionel Sambuc// erf
11464684ddb6SLionel Sambuc
11474684ddb6SLionel Sambucusing ::erf;
11484684ddb6SLionel Sambucusing ::erff;
11494684ddb6SLionel Sambuc
1150*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       erf(float __lcpp_x) _NOEXCEPT       {return erff(__lcpp_x);}
1151*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double erf(long double __lcpp_x) _NOEXCEPT {return erfl(__lcpp_x);}
11524684ddb6SLionel Sambuc
11534684ddb6SLionel Sambuctemplate <class _A1>
11544684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
11554684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1156*0a6a1f1dSLionel Sambucerf(_A1 __lcpp_x) _NOEXCEPT {return erf((double)__lcpp_x);}
11574684ddb6SLionel Sambuc
11584684ddb6SLionel Sambuc// erfc
11594684ddb6SLionel Sambuc
11604684ddb6SLionel Sambucusing ::erfc;
11614684ddb6SLionel Sambucusing ::erfcf;
11624684ddb6SLionel Sambuc
1163*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       erfc(float __lcpp_x) _NOEXCEPT       {return erfcf(__lcpp_x);}
1164*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double erfc(long double __lcpp_x) _NOEXCEPT {return erfcl(__lcpp_x);}
11654684ddb6SLionel Sambuc
11664684ddb6SLionel Sambuctemplate <class _A1>
11674684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
11684684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1169*0a6a1f1dSLionel Sambucerfc(_A1 __lcpp_x) _NOEXCEPT {return erfc((double)__lcpp_x);}
11704684ddb6SLionel Sambuc
11714684ddb6SLionel Sambuc// exp2
11724684ddb6SLionel Sambuc
11734684ddb6SLionel Sambucusing ::exp2;
11744684ddb6SLionel Sambucusing ::exp2f;
11754684ddb6SLionel Sambuc
1176*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       exp2(float __lcpp_x) _NOEXCEPT       {return exp2f(__lcpp_x);}
1177*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double exp2(long double __lcpp_x) _NOEXCEPT {return exp2l(__lcpp_x);}
11784684ddb6SLionel Sambuc
11794684ddb6SLionel Sambuctemplate <class _A1>
11804684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
11814684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1182*0a6a1f1dSLionel Sambucexp2(_A1 __lcpp_x) _NOEXCEPT {return exp2((double)__lcpp_x);}
11834684ddb6SLionel Sambuc
11844684ddb6SLionel Sambuc// expm1
11854684ddb6SLionel Sambuc
11864684ddb6SLionel Sambucusing ::expm1;
11874684ddb6SLionel Sambucusing ::expm1f;
11884684ddb6SLionel Sambuc
1189*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       expm1(float __lcpp_x) _NOEXCEPT       {return expm1f(__lcpp_x);}
1190*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double expm1(long double __lcpp_x) _NOEXCEPT {return expm1l(__lcpp_x);}
11914684ddb6SLionel Sambuc
11924684ddb6SLionel Sambuctemplate <class _A1>
11934684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
11944684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1195*0a6a1f1dSLionel Sambucexpm1(_A1 __lcpp_x) _NOEXCEPT {return expm1((double)__lcpp_x);}
11964684ddb6SLionel Sambuc
11974684ddb6SLionel Sambuc// fdim
11984684ddb6SLionel Sambuc
11994684ddb6SLionel Sambucusing ::fdim;
12004684ddb6SLionel Sambucusing ::fdimf;
12014684ddb6SLionel Sambuc
1202*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       fdim(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return fdimf(__lcpp_x, __lcpp_y);}
1203*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double fdim(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fdiml(__lcpp_x, __lcpp_y);}
12044684ddb6SLionel Sambuc
12054684ddb6SLionel Sambuctemplate <class _A1, class _A2>
12064684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1207*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
12084684ddb6SLionel Sambuc<
12094684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
12104684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1211*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
12124684ddb6SLionel Sambuc>::type
1213*0a6a1f1dSLionel Sambucfdim(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
12144684ddb6SLionel Sambuc{
12154684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
12164684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
12174684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1218*0a6a1f1dSLionel Sambuc    return fdim((__result_type)__lcpp_x, (__result_type)__lcpp_y);
12194684ddb6SLionel Sambuc}
12204684ddb6SLionel Sambuc
12214684ddb6SLionel Sambuc// fma
12224684ddb6SLionel Sambuc
1223*0a6a1f1dSLionel Sambucusing ::fmaf;
12244684ddb6SLionel Sambucusing ::fma;
12254684ddb6SLionel Sambuc
1226*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       fma(float __lcpp_x, float __lcpp_y, float __lcpp_z) _NOEXCEPT                   {return fmaf(__lcpp_x, __lcpp_y, __lcpp_z);}
1227*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double fma(long double __lcpp_x, long double __lcpp_y, long double __lcpp_z) _NOEXCEPT {return fmal(__lcpp_x, __lcpp_y, __lcpp_z);}
12284684ddb6SLionel Sambuc
12294684ddb6SLionel Sambuctemplate <class _A1, class _A2, class _A3>
12304684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1231*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
12324684ddb6SLionel Sambuc<
12334684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
12344684ddb6SLionel Sambuc    is_arithmetic<_A2>::value &&
12354684ddb6SLionel Sambuc    is_arithmetic<_A3>::value,
1236*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2, _A3>
12374684ddb6SLionel Sambuc>::type
1238*0a6a1f1dSLionel Sambucfma(_A1 __lcpp_x, _A2 __lcpp_y, _A3 __lcpp_z) _NOEXCEPT
12394684ddb6SLionel Sambuc{
12404684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2, _A3>::type __result_type;
12414684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
12424684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value &&
12434684ddb6SLionel Sambuc                      is_same<_A3, __result_type>::value)), "");
1244*0a6a1f1dSLionel Sambuc    return fma((__result_type)__lcpp_x, (__result_type)__lcpp_y, (__result_type)__lcpp_z);
12454684ddb6SLionel Sambuc}
12464684ddb6SLionel Sambuc
12474684ddb6SLionel Sambuc// fmax
12484684ddb6SLionel Sambuc
12494684ddb6SLionel Sambucusing ::fmax;
12504684ddb6SLionel Sambucusing ::fmaxf;
12514684ddb6SLionel Sambuc
1252*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       fmax(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return fmaxf(__lcpp_x, __lcpp_y);}
1253*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double fmax(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fmaxl(__lcpp_x, __lcpp_y);}
12544684ddb6SLionel Sambuc
12554684ddb6SLionel Sambuctemplate <class _A1, class _A2>
12564684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1257*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
12584684ddb6SLionel Sambuc<
12594684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
12604684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1261*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
12624684ddb6SLionel Sambuc>::type
1263*0a6a1f1dSLionel Sambucfmax(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
12644684ddb6SLionel Sambuc{
12654684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
12664684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
12674684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1268*0a6a1f1dSLionel Sambuc    return fmax((__result_type)__lcpp_x, (__result_type)__lcpp_y);
12694684ddb6SLionel Sambuc}
12704684ddb6SLionel Sambuc
12714684ddb6SLionel Sambuc// fmin
12724684ddb6SLionel Sambuc
12734684ddb6SLionel Sambucusing ::fmin;
12744684ddb6SLionel Sambucusing ::fminf;
12754684ddb6SLionel Sambuc
1276*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       fmin(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return fminf(__lcpp_x, __lcpp_y);}
1277*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double fmin(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fminl(__lcpp_x, __lcpp_y);}
12784684ddb6SLionel Sambuc
12794684ddb6SLionel Sambuctemplate <class _A1, class _A2>
12804684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1281*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
12824684ddb6SLionel Sambuc<
12834684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
12844684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1285*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
12864684ddb6SLionel Sambuc>::type
1287*0a6a1f1dSLionel Sambucfmin(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
12884684ddb6SLionel Sambuc{
12894684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
12904684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
12914684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1292*0a6a1f1dSLionel Sambuc    return fmin((__result_type)__lcpp_x, (__result_type)__lcpp_y);
12934684ddb6SLionel Sambuc}
12944684ddb6SLionel Sambuc
12954684ddb6SLionel Sambuc// hypot
12964684ddb6SLionel Sambuc
12974684ddb6SLionel Sambucusing ::hypot;
12984684ddb6SLionel Sambucusing ::hypotf;
12994684ddb6SLionel Sambuc
1300*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       hypot(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return hypotf(__lcpp_x, __lcpp_y);}
1301*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double hypot(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return hypotl(__lcpp_x, __lcpp_y);}
13024684ddb6SLionel Sambuc
13034684ddb6SLionel Sambuctemplate <class _A1, class _A2>
13044684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1305*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
13064684ddb6SLionel Sambuc<
13074684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
13084684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1309*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
13104684ddb6SLionel Sambuc>::type
1311*0a6a1f1dSLionel Sambuchypot(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
13124684ddb6SLionel Sambuc{
13134684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
13144684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
13154684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1316*0a6a1f1dSLionel Sambuc    return hypot((__result_type)__lcpp_x, (__result_type)__lcpp_y);
13174684ddb6SLionel Sambuc}
13184684ddb6SLionel Sambuc
13194684ddb6SLionel Sambuc// ilogb
13204684ddb6SLionel Sambuc
13214684ddb6SLionel Sambucusing ::ilogb;
13224684ddb6SLionel Sambucusing ::ilogbf;
13234684ddb6SLionel Sambuc
1324*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY int ilogb(float __lcpp_x) _NOEXCEPT       {return ilogbf(__lcpp_x);}
1325*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY int ilogb(long double __lcpp_x) _NOEXCEPT {return ilogbl(__lcpp_x);}
13264684ddb6SLionel Sambuc
13274684ddb6SLionel Sambuctemplate <class _A1>
13284684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
13294684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, int>::type
1330*0a6a1f1dSLionel Sambucilogb(_A1 __lcpp_x) _NOEXCEPT {return ilogb((double)__lcpp_x);}
13314684ddb6SLionel Sambuc
13324684ddb6SLionel Sambuc// lgamma
13334684ddb6SLionel Sambuc
13344684ddb6SLionel Sambucusing ::lgamma;
13354684ddb6SLionel Sambucusing ::lgammaf;
13364684ddb6SLionel Sambuc
1337*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       lgamma(float __lcpp_x) _NOEXCEPT       {return lgammaf(__lcpp_x);}
1338*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double lgamma(long double __lcpp_x) _NOEXCEPT {return lgammal(__lcpp_x);}
13394684ddb6SLionel Sambuc
13404684ddb6SLionel Sambuc
13414684ddb6SLionel Sambuctemplate <class _A1>
13424684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
13434684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1344*0a6a1f1dSLionel Sambuclgamma(_A1 __lcpp_x) _NOEXCEPT {return lgamma((double)__lcpp_x);}
13454684ddb6SLionel Sambuc
13464684ddb6SLionel Sambuc
13474684ddb6SLionel Sambuc// llrint
13484684ddb6SLionel Sambuc
13494684ddb6SLionel Sambucusing ::llrint;
13504684ddb6SLionel Sambucusing ::llrintf;
13514684ddb6SLionel Sambuc
1352*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long long llrint(float __lcpp_x) _NOEXCEPT       {return llrintf(__lcpp_x);}
1353*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long long llrint(long double __lcpp_x) _NOEXCEPT {return llrintl(__lcpp_x);}
13544684ddb6SLionel Sambuc
13554684ddb6SLionel Sambuctemplate <class _A1>
13564684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
13574684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, long long>::type
1358*0a6a1f1dSLionel Sambucllrint(_A1 __lcpp_x) _NOEXCEPT {return llrint((double)__lcpp_x);}
13594684ddb6SLionel Sambuc
13604684ddb6SLionel Sambuc// llround
13614684ddb6SLionel Sambuc
13624684ddb6SLionel Sambucusing ::llround;
13634684ddb6SLionel Sambucusing ::llroundf;
13644684ddb6SLionel Sambuc
1365*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long long llround(float __lcpp_x) _NOEXCEPT       {return llroundf(__lcpp_x);}
1366*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long long llround(long double __lcpp_x) _NOEXCEPT {return llroundl(__lcpp_x);}
13674684ddb6SLionel Sambuc
13684684ddb6SLionel Sambuctemplate <class _A1>
13694684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
13704684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, long long>::type
1371*0a6a1f1dSLionel Sambucllround(_A1 __lcpp_x) _NOEXCEPT {return llround((double)__lcpp_x);}
13724684ddb6SLionel Sambuc
13734684ddb6SLionel Sambuc// log1p
13744684ddb6SLionel Sambuc
13754684ddb6SLionel Sambucusing ::log1p;
13764684ddb6SLionel Sambucusing ::log1pf;
13774684ddb6SLionel Sambuc
1378*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       log1p(float __lcpp_x) _NOEXCEPT       {return log1pf(__lcpp_x);}
1379*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double log1p(long double __lcpp_x) _NOEXCEPT {return log1pl(__lcpp_x);}
13804684ddb6SLionel Sambuc
13814684ddb6SLionel Sambuctemplate <class _A1>
13824684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
13834684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1384*0a6a1f1dSLionel Sambuclog1p(_A1 __lcpp_x) _NOEXCEPT {return log1p((double)__lcpp_x);}
13854684ddb6SLionel Sambuc
13864684ddb6SLionel Sambuc// log2
13874684ddb6SLionel Sambuc
13884684ddb6SLionel Sambucusing ::log2;
13894684ddb6SLionel Sambucusing ::log2f;
13904684ddb6SLionel Sambuc
1391*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       log2(float __lcpp_x) _NOEXCEPT       {return log2f(__lcpp_x);}
1392*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double log2(long double __lcpp_x) _NOEXCEPT {return log2l(__lcpp_x);}
13934684ddb6SLionel Sambuc
13944684ddb6SLionel Sambuctemplate <class _A1>
13954684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
13964684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1397*0a6a1f1dSLionel Sambuclog2(_A1 __lcpp_x) _NOEXCEPT {return log2((double)__lcpp_x);}
13984684ddb6SLionel Sambuc
13994684ddb6SLionel Sambuc// logb
14004684ddb6SLionel Sambuc
14014684ddb6SLionel Sambucusing ::logb;
14024684ddb6SLionel Sambucusing ::logbf;
14034684ddb6SLionel Sambuc
1404*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       logb(float __lcpp_x) _NOEXCEPT       {return logbf(__lcpp_x);}
1405*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double logb(long double __lcpp_x) _NOEXCEPT {return logbl(__lcpp_x);}
14064684ddb6SLionel Sambuc
14074684ddb6SLionel Sambuctemplate <class _A1>
14084684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
14094684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1410*0a6a1f1dSLionel Sambuclogb(_A1 __lcpp_x) _NOEXCEPT {return logb((double)__lcpp_x);}
14114684ddb6SLionel Sambuc
14124684ddb6SLionel Sambuc// lrint
14134684ddb6SLionel Sambuc
14144684ddb6SLionel Sambucusing ::lrint;
14154684ddb6SLionel Sambucusing ::lrintf;
14164684ddb6SLionel Sambuc
1417*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long lrint(float __lcpp_x) _NOEXCEPT       {return lrintf(__lcpp_x);}
1418*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long lrint(long double __lcpp_x) _NOEXCEPT {return lrintl(__lcpp_x);}
14194684ddb6SLionel Sambuc
14204684ddb6SLionel Sambuctemplate <class _A1>
14214684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
14224684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, long>::type
1423*0a6a1f1dSLionel Sambuclrint(_A1 __lcpp_x) _NOEXCEPT {return lrint((double)__lcpp_x);}
14244684ddb6SLionel Sambuc
14254684ddb6SLionel Sambuc// lround
14264684ddb6SLionel Sambuc
14274684ddb6SLionel Sambucusing ::lround;
14284684ddb6SLionel Sambucusing ::lroundf;
14294684ddb6SLionel Sambuc
1430*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long lround(float __lcpp_x) _NOEXCEPT       {return lroundf(__lcpp_x);}
1431*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long lround(long double __lcpp_x) _NOEXCEPT {return lroundl(__lcpp_x);}
14324684ddb6SLionel Sambuc
14334684ddb6SLionel Sambuctemplate <class _A1>
14344684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
14354684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, long>::type
1436*0a6a1f1dSLionel Sambuclround(_A1 __lcpp_x) _NOEXCEPT {return lround((double)__lcpp_x);}
14374684ddb6SLionel Sambuc
14384684ddb6SLionel Sambuc#endif // _LIBCPP_MSVCRT
14394684ddb6SLionel Sambuc#endif // __sun__
14404684ddb6SLionel Sambuc
14414684ddb6SLionel Sambuc// nan
14424684ddb6SLionel Sambuc
14434684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
14444684ddb6SLionel Sambucusing ::nan;
14454684ddb6SLionel Sambucusing ::nanf;
14464684ddb6SLionel Sambuc#endif // _LIBCPP_MSVCRT
14474684ddb6SLionel Sambuc
14484684ddb6SLionel Sambuc#ifndef __sun__
14494684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
14504684ddb6SLionel Sambuc
14514684ddb6SLionel Sambuc// nearbyint
14524684ddb6SLionel Sambuc
14534684ddb6SLionel Sambucusing ::nearbyint;
14544684ddb6SLionel Sambucusing ::nearbyintf;
14554684ddb6SLionel Sambuc
1456*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       nearbyint(float __lcpp_x) _NOEXCEPT       {return nearbyintf(__lcpp_x);}
1457*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double nearbyint(long double __lcpp_x) _NOEXCEPT {return nearbyintl(__lcpp_x);}
14584684ddb6SLionel Sambuc
14594684ddb6SLionel Sambuctemplate <class _A1>
14604684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
14614684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1462*0a6a1f1dSLionel Sambucnearbyint(_A1 __lcpp_x) _NOEXCEPT {return nearbyint((double)__lcpp_x);}
14634684ddb6SLionel Sambuc
14644684ddb6SLionel Sambuc// nextafter
14654684ddb6SLionel Sambuc
14664684ddb6SLionel Sambucusing ::nextafter;
14674684ddb6SLionel Sambucusing ::nextafterf;
14684684ddb6SLionel Sambuc
1469*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       nextafter(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return nextafterf(__lcpp_x, __lcpp_y);}
1470*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double nextafter(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nextafterl(__lcpp_x, __lcpp_y);}
14714684ddb6SLionel Sambuc
14724684ddb6SLionel Sambuctemplate <class _A1, class _A2>
14734684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1474*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
14754684ddb6SLionel Sambuc<
14764684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
14774684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1478*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
14794684ddb6SLionel Sambuc>::type
1480*0a6a1f1dSLionel Sambucnextafter(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
14814684ddb6SLionel Sambuc{
14824684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
14834684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
14844684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1485*0a6a1f1dSLionel Sambuc    return nextafter((__result_type)__lcpp_x, (__result_type)__lcpp_y);
14864684ddb6SLionel Sambuc}
14874684ddb6SLionel Sambuc
14884684ddb6SLionel Sambuc// nexttoward
14894684ddb6SLionel Sambuc
14904684ddb6SLionel Sambucusing ::nexttoward;
14914684ddb6SLionel Sambucusing ::nexttowardf;
14924684ddb6SLionel Sambuc
1493*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       nexttoward(float __lcpp_x, long double __lcpp_y) _NOEXCEPT       {return nexttowardf(__lcpp_x, __lcpp_y);}
1494*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double nexttoward(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nexttowardl(__lcpp_x, __lcpp_y);}
14954684ddb6SLionel Sambuc
14964684ddb6SLionel Sambuctemplate <class _A1>
14974684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
14984684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1499*0a6a1f1dSLionel Sambucnexttoward(_A1 __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nexttoward((double)__lcpp_x, __lcpp_y);}
15004684ddb6SLionel Sambuc
15014684ddb6SLionel Sambuc// remainder
15024684ddb6SLionel Sambuc
15034684ddb6SLionel Sambucusing ::remainder;
15044684ddb6SLionel Sambucusing ::remainderf;
15054684ddb6SLionel Sambuc
1506*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       remainder(float __lcpp_x, float __lcpp_y) _NOEXCEPT             {return remainderf(__lcpp_x, __lcpp_y);}
1507*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double remainder(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return remainderl(__lcpp_x, __lcpp_y);}
15084684ddb6SLionel Sambuc
15094684ddb6SLionel Sambuctemplate <class _A1, class _A2>
15104684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1511*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
15124684ddb6SLionel Sambuc<
15134684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
15144684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1515*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
15164684ddb6SLionel Sambuc>::type
1517*0a6a1f1dSLionel Sambucremainder(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
15184684ddb6SLionel Sambuc{
15194684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
15204684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
15214684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1522*0a6a1f1dSLionel Sambuc    return remainder((__result_type)__lcpp_x, (__result_type)__lcpp_y);
15234684ddb6SLionel Sambuc}
15244684ddb6SLionel Sambuc
15254684ddb6SLionel Sambuc// remquo
15264684ddb6SLionel Sambuc
15274684ddb6SLionel Sambucusing ::remquo;
15284684ddb6SLionel Sambucusing ::remquof;
15294684ddb6SLionel Sambuc
1530*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       remquo(float __lcpp_x, float __lcpp_y, int* __lcpp_z) _NOEXCEPT             {return remquof(__lcpp_x, __lcpp_y, __lcpp_z);}
1531*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double remquo(long double __lcpp_x, long double __lcpp_y, int* __lcpp_z) _NOEXCEPT {return remquol(__lcpp_x, __lcpp_y, __lcpp_z);}
15324684ddb6SLionel Sambuc
15334684ddb6SLionel Sambuctemplate <class _A1, class _A2>
15344684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
1535*0a6a1f1dSLionel Sambuctypename __lazy_enable_if
15364684ddb6SLionel Sambuc<
15374684ddb6SLionel Sambuc    is_arithmetic<_A1>::value &&
15384684ddb6SLionel Sambuc    is_arithmetic<_A2>::value,
1539*0a6a1f1dSLionel Sambuc    __promote<_A1, _A2>
15404684ddb6SLionel Sambuc>::type
1541*0a6a1f1dSLionel Sambucremquo(_A1 __lcpp_x, _A2 __lcpp_y, int* __lcpp_z) _NOEXCEPT
15424684ddb6SLionel Sambuc{
15434684ddb6SLionel Sambuc    typedef typename __promote<_A1, _A2>::type __result_type;
15444684ddb6SLionel Sambuc    static_assert((!(is_same<_A1, __result_type>::value &&
15454684ddb6SLionel Sambuc                      is_same<_A2, __result_type>::value)), "");
1546*0a6a1f1dSLionel Sambuc    return remquo((__result_type)__lcpp_x, (__result_type)__lcpp_y, __lcpp_z);
15474684ddb6SLionel Sambuc}
15484684ddb6SLionel Sambuc
15494684ddb6SLionel Sambuc// rint
15504684ddb6SLionel Sambuc
15514684ddb6SLionel Sambucusing ::rint;
15524684ddb6SLionel Sambucusing ::rintf;
15534684ddb6SLionel Sambuc
1554*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       rint(float __lcpp_x) _NOEXCEPT       {return rintf(__lcpp_x);}
1555*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double rint(long double __lcpp_x) _NOEXCEPT {return rintl(__lcpp_x);}
15564684ddb6SLionel Sambuc
15574684ddb6SLionel Sambuctemplate <class _A1>
15584684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
15594684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1560*0a6a1f1dSLionel Sambucrint(_A1 __lcpp_x) _NOEXCEPT {return rint((double)__lcpp_x);}
15614684ddb6SLionel Sambuc
15624684ddb6SLionel Sambuc// round
15634684ddb6SLionel Sambuc
15644684ddb6SLionel Sambucusing ::round;
15654684ddb6SLionel Sambucusing ::roundf;
15664684ddb6SLionel Sambuc
1567*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       round(float __lcpp_x) _NOEXCEPT       {return roundf(__lcpp_x);}
1568*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double round(long double __lcpp_x) _NOEXCEPT {return roundl(__lcpp_x);}
15694684ddb6SLionel Sambuc
15704684ddb6SLionel Sambuctemplate <class _A1>
15714684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
15724684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1573*0a6a1f1dSLionel Sambucround(_A1 __lcpp_x) _NOEXCEPT {return round((double)__lcpp_x);}
15744684ddb6SLionel Sambuc
15754684ddb6SLionel Sambuc// scalbln
15764684ddb6SLionel Sambuc
15774684ddb6SLionel Sambucusing ::scalbln;
15784684ddb6SLionel Sambucusing ::scalblnf;
15794684ddb6SLionel Sambuc
1580*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       scalbln(float __lcpp_x, long __lcpp_y) _NOEXCEPT       {return scalblnf(__lcpp_x, __lcpp_y);}
1581*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double scalbln(long double __lcpp_x, long __lcpp_y) _NOEXCEPT {return scalblnl(__lcpp_x, __lcpp_y);}
15824684ddb6SLionel Sambuc
15834684ddb6SLionel Sambuctemplate <class _A1>
15844684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
15854684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1586*0a6a1f1dSLionel Sambucscalbln(_A1 __lcpp_x, long __lcpp_y) _NOEXCEPT {return scalbln((double)__lcpp_x, __lcpp_y);}
15874684ddb6SLionel Sambuc
15884684ddb6SLionel Sambuc// scalbn
15894684ddb6SLionel Sambuc
15904684ddb6SLionel Sambucusing ::scalbn;
15914684ddb6SLionel Sambucusing ::scalbnf;
15924684ddb6SLionel Sambuc
1593*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       scalbn(float __lcpp_x, int __lcpp_y) _NOEXCEPT       {return scalbnf(__lcpp_x, __lcpp_y);}
1594*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double scalbn(long double __lcpp_x, int __lcpp_y) _NOEXCEPT {return scalbnl(__lcpp_x, __lcpp_y);}
15954684ddb6SLionel Sambuc
15964684ddb6SLionel Sambuctemplate <class _A1>
15974684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
15984684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1599*0a6a1f1dSLionel Sambucscalbn(_A1 __lcpp_x, int __lcpp_y) _NOEXCEPT {return scalbn((double)__lcpp_x, __lcpp_y);}
16004684ddb6SLionel Sambuc
16014684ddb6SLionel Sambuc// tgamma
16024684ddb6SLionel Sambuc
16034684ddb6SLionel Sambucusing ::tgamma;
16044684ddb6SLionel Sambucusing ::tgammaf;
16054684ddb6SLionel Sambuc
1606*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       tgamma(float __lcpp_x) _NOEXCEPT       {return tgammaf(__lcpp_x);}
1607*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double tgamma(long double __lcpp_x) _NOEXCEPT {return tgammal(__lcpp_x);}
16084684ddb6SLionel Sambuc
16094684ddb6SLionel Sambuctemplate <class _A1>
16104684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
16114684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1612*0a6a1f1dSLionel Sambuctgamma(_A1 __lcpp_x) _NOEXCEPT {return tgamma((double)__lcpp_x);}
16134684ddb6SLionel Sambuc
16144684ddb6SLionel Sambuc// trunc
16154684ddb6SLionel Sambuc
16164684ddb6SLionel Sambucusing ::trunc;
16174684ddb6SLionel Sambucusing ::truncf;
16184684ddb6SLionel Sambuc
1619*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY float       trunc(float __lcpp_x) _NOEXCEPT       {return truncf(__lcpp_x);}
1620*0a6a1f1dSLionel Sambucinline _LIBCPP_INLINE_VISIBILITY long double trunc(long double __lcpp_x) _NOEXCEPT {return truncl(__lcpp_x);}
16214684ddb6SLionel Sambuc
16224684ddb6SLionel Sambuctemplate <class _A1>
16234684ddb6SLionel Sambucinline _LIBCPP_INLINE_VISIBILITY
16244684ddb6SLionel Sambuctypename enable_if<is_integral<_A1>::value, double>::type
1625*0a6a1f1dSLionel Sambuctrunc(_A1 __lcpp_x) _NOEXCEPT {return trunc((double)__lcpp_x);}
16264684ddb6SLionel Sambuc
16274684ddb6SLionel Sambuc#endif // !_LIBCPP_MSVCRT
16284684ddb6SLionel Sambuc
16294684ddb6SLionel Sambucusing ::acosl;
16304684ddb6SLionel Sambucusing ::asinl;
16314684ddb6SLionel Sambucusing ::atanl;
16324684ddb6SLionel Sambucusing ::atan2l;
16334684ddb6SLionel Sambucusing ::ceill;
16344684ddb6SLionel Sambucusing ::cosl;
16354684ddb6SLionel Sambucusing ::coshl;
16364684ddb6SLionel Sambucusing ::expl;
16374684ddb6SLionel Sambucusing ::fabsl;
16384684ddb6SLionel Sambucusing ::floorl;
16394684ddb6SLionel Sambucusing ::fmodl;
16404684ddb6SLionel Sambucusing ::frexpl;
16414684ddb6SLionel Sambucusing ::ldexpl;
16424684ddb6SLionel Sambucusing ::logl;
16434684ddb6SLionel Sambucusing ::log10l;
16444684ddb6SLionel Sambucusing ::modfl;
16454684ddb6SLionel Sambucusing ::powl;
16464684ddb6SLionel Sambucusing ::sinl;
16474684ddb6SLionel Sambucusing ::sinhl;
16484684ddb6SLionel Sambucusing ::sqrtl;
16494684ddb6SLionel Sambucusing ::tanl;
16504684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
16514684ddb6SLionel Sambucusing ::tanhl;
16524684ddb6SLionel Sambucusing ::acoshl;
16534684ddb6SLionel Sambucusing ::asinhl;
16544684ddb6SLionel Sambucusing ::atanhl;
16554684ddb6SLionel Sambucusing ::cbrtl;
16564684ddb6SLionel Sambuc#endif  // !_LIBCPP_MSVCRT
16574684ddb6SLionel Sambucusing ::copysignl;
16584684ddb6SLionel Sambuc#ifndef _LIBCPP_MSVCRT
16594684ddb6SLionel Sambucusing ::erfl;
16604684ddb6SLionel Sambucusing ::erfcl;
16614684ddb6SLionel Sambucusing ::exp2l;
16624684ddb6SLionel Sambucusing ::expm1l;
16634684ddb6SLionel Sambucusing ::fdiml;
16644684ddb6SLionel Sambucusing ::fmal;
16654684ddb6SLionel Sambucusing ::fmaxl;
16664684ddb6SLionel Sambucusing ::fminl;
16674684ddb6SLionel Sambucusing ::hypotl;
16684684ddb6SLionel Sambucusing ::ilogbl;
16694684ddb6SLionel Sambucusing ::lgammal;
16704684ddb6SLionel Sambucusing ::llrintl;
16714684ddb6SLionel Sambucusing ::llroundl;
16724684ddb6SLionel Sambucusing ::log1pl;
16734684ddb6SLionel Sambucusing ::log2l;
16744684ddb6SLionel Sambucusing ::logbl;
16754684ddb6SLionel Sambucusing ::lrintl;
16764684ddb6SLionel Sambucusing ::lroundl;
16774684ddb6SLionel Sambucusing ::nanl;
16784684ddb6SLionel Sambucusing ::nearbyintl;
16794684ddb6SLionel Sambucusing ::nextafterl;
16804684ddb6SLionel Sambucusing ::nexttowardl;
16814684ddb6SLionel Sambucusing ::remainderl;
16824684ddb6SLionel Sambucusing ::remquol;
16834684ddb6SLionel Sambucusing ::rintl;
16844684ddb6SLionel Sambucusing ::roundl;
16854684ddb6SLionel Sambucusing ::scalblnl;
16864684ddb6SLionel Sambucusing ::scalbnl;
16874684ddb6SLionel Sambucusing ::tgammal;
16884684ddb6SLionel Sambucusing ::truncl;
16894684ddb6SLionel Sambuc#endif // !_LIBCPP_MSVCRT
16904684ddb6SLionel Sambuc
16914684ddb6SLionel Sambuc#else
16924684ddb6SLionel Sambucusing ::lgamma;
16934684ddb6SLionel Sambucusing ::lgammaf;
16944684ddb6SLionel Sambuc#endif // __sun__
16954684ddb6SLionel Sambuc_LIBCPP_END_NAMESPACE_STD
16964684ddb6SLionel Sambuc
16974684ddb6SLionel Sambuc#endif  // _LIBCPP_CMATH
1698