brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · e1b12e3 Raw
178 lines · c
1//===-- Definition of macros from math.h ----------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_MACROS_MATH_MACROS_H10#define LLVM_LIBC_MACROS_MATH_MACROS_H11 12#include "limits-macros.h"13 14#define FP_NAN 015#define FP_INFINITE 116#define FP_ZERO 217#define FP_SUBNORMAL 318#define FP_NORMAL 419 20#define FP_INT_UPWARD 021#define FP_INT_DOWNWARD 122#define FP_INT_TOWARDZERO 223#define FP_INT_TONEARESTFROMZERO 324#define FP_INT_TONEAREST 425 26#define MATH_ERRNO 127#define MATH_ERREXCEPT 228 29#define HUGE_VAL __builtin_huge_val()30#define HUGE_VALF __builtin_huge_valf()31#define INFINITY __builtin_inff()32#define NAN __builtin_nanf("")33 34#define FP_ILOGB0 (-INT_MAX - 1)35#define FP_LLOGB0 (-LONG_MAX - 1)36 37#ifdef __FP_LOGBNAN_MIN38#define FP_ILOGBNAN (-INT_MAX - 1)39#define FP_LLOGBNAN (-LONG_MAX - 1)40#else41#define FP_ILOGBNAN INT_MAX42#define FP_LLOGBNAN LONG_MAX43#endif44 45// Math error handling. Target support is assumed to be existent unless46// explicitly disabled.47#if defined(__NVPTX__) || defined(__AMDGPU__) || defined(__FAST_MATH__) ||     \48    defined(__NO_MATH_ERRNO__)49#define __LIBC_SUPPORTS_MATH_ERRNO 050#else51#define __LIBC_SUPPORTS_MATH_ERRNO 152#endif53 54#if defined(__FAST_MATH__) ||                                                  \55    ((defined(__arm__) || defined(_M_ARM) || defined(__thumb__) ||             \56      defined(__aarch64__) || defined(_M_ARM64)) &&                            \57     !defined(__ARM_FP))58#define __LIBC_SUPPORTS_MATH_ERREXCEPT 059#else60#define __LIBC_SUPPORTS_MATH_ERREXCEPT 161#endif62 63#if __LIBC_SUPPORTS_MATH_ERRNO && __LIBC_SUPPORTS_MATH_ERREXCEPT64#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)65#elif __LIBC_SUPPORTS_MATH_ERRNO66#define math_errhandling (MATH_ERRNO)67#elif __LIBC_SUPPORTS_MATH_ERREXCEPT68#define math_errhandling (MATH_ERREXCEPT)69#else70#define math_errhandling 071#endif72 73#undef __LIBC_SUPPORTS_MATH_ERRNO74#undef __LIBC_SUPPORTS_MATH_ERREXCEPT75 76// POSIX math constants77// https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/math.h.html78#define M_E (__extension__ 0x1.5bf0a8b145769p1)79#define M_EGAMMA (__extension__ 0x1.2788cfc6fb619p-1)80#define M_LOG2E (__extension__ 0x1.71547652b82fep0)81#define M_LOG10E (__extension__ 0x1.bcb7b1526e50ep-2)82#define M_LN2 (__extension__ 0x1.62e42fefa39efp-1)83#define M_LN10 (__extension__ 0x1.26bb1bbb55516p1)84#define M_PHI (__extension__ 0x1.9e3779b97f4a8p0)85#define M_PI (__extension__ 0x1.921fb54442d18p1)86#define M_PI_2 (__extension__ 0x1.921fb54442d18p0)87#define M_PI_4 (__extension__ 0x1.921fb54442d18p-1)88#define M_1_PI (__extension__ 0x1.45f306dc9c883p-2)89#define M_1_SQRTPI (__extension__ 0x1.20dd750429b6dp-1)90#define M_2_PI (__extension__ 0x1.45f306dc9c883p-1)91#define M_2_SQRTPI (__extension__ 0x1.20dd750429b6dp0)92#define M_SQRT2 (__extension__ 0x1.6a09e667f3bcdp0)93#define M_SQRT3 (__extension__ 0x1.bb67ae8584caap0)94#define M_SQRT1_2 (__extension__ 0x1.6a09e667f3bcdp-1)95#define M_SQRT1_3 (__extension__ 0x1.279a74590331cp-1)96 97#define M_Ef (__extension__ 0x1.5bf0a8p1f)98#define M_EGAMMAf (__extension__ 0x1.2788dp-1f)99#define M_LOG2Ef (__extension__ 0x1.715476p0f)100#define M_LOG10Ef (__extension__ 0x1.bcb7b2p-2f)101#define M_LN2f (__extension__ 0x1.62e43p-1f)102#define M_LN10f (__extension__ 0x1.26bb1cp1f)103#define M_PHIf (__extension__ 0x1.9e377ap0f)104#define M_PIf (__extension__ 0x1.921fb6p1f)105#define M_PI_2f (__extension__ 0x1.921fb6p0f)106#define M_PI_4f (__extension__ 0x1.921fb6p-1f)107#define M_1_PIf (__extension__ 0x1.45f306p-2f)108#define M_1_SQRTPIf (__extension__ 0x1.20dd76p-1f)109#define M_2_PIf (__extension__ 0x1.45f306p-1f)110#define M_2_SQRTPIf (__extension__ 0x1.20dd76p0f)111#define M_SQRT2f (__extension__ 0x1.6a09e6p0f)112#define M_SQRT3f (__extension__ 0x1.bb67aep0f)113#define M_SQRT1_2f (__extension__ 0x1.6a09e6p-1f)114#define M_SQRT1_3f (__extension__ 0x1.279a74p-1f)115 116#define M_El (__extension__ 0x1.5bf0a8b1457695355fb8ac404e7ap1L)117#define M_EGAMMAl (__extension__ 0x1.2788cfc6fb618f49a37c7f0202a6p-1L)118#define M_LOG2El (__extension__ 0x1.71547652b82fe1777d0ffda0d23ap0L)119#define M_LOG10El (__extension__ 0x1.bcb7b1526e50e32a6ab7555f5a68p-2L)120#define M_LN2l (__extension__ 0x1.62e42fefa39ef35793c7673007e6p-1L)121#define M_LN10l (__extension__ 0x1.26bb1bbb5551582dd4adac5705a6p1L)122#define M_PHIl (__extension__ 0x1.9e3779b97f4a7c15f39cc0605ceep0L)123#define M_PIl (__extension__ 0x1.921fb54442d18469898cc51701b8p1L)124#define M_PI_2l (__extension__ 0x1.921fb54442d18469898cc51701b8p0L)125#define M_PI_4l (__extension__ 0x1.921fb54442d18469898cc51701b8p-1L)126#define M_1_PIl (__extension__ 0x1.45f306dc9c882a53f84eafa3ea6ap-2L)127#define M_1_SQRTPIl (__extension__ 0x1.20dd750429b6d11ae3a914fed7fep-1L)128#define M_2_PIl (__extension__ 0x1.45f306dc9c882a53f84eafa3ea6ap-1L)129#define M_2_SQRTPIl (__extension__ 0x1.20dd750429b6d11ae3a914fed7fep0L)130#define M_SQRT2l (__extension__ 0x1.6a09e667f3bcc908b2fb1366ea95p0L)131#define M_SQRT3l (__extension__ 0x1.bb67ae8584caa73b25742d7078b8p0L)132#define M_SQRT1_2l (__extension__ 0x1.6a09e667f3bcc908b2fb1366ea95p-1L)133#define M_SQRT1_3l (__extension__ 0x1.279a74590331c4d218f81e4afb25p-1L)134 135#ifdef __FLT16_MANT_DIG__136#define M_Ef16 (__extension__ 0x1.5cp1f16)137#define M_EGAMMAf16 (__extension__ 0x1.278p-1f16)138#define M_LOG2Ef16 (__extension__ 0x1.714f16)139#define M_LOG10Ef16 (__extension__ 0x1.bccp-2f16)140#define M_LN2f16 (__extension__ 0x1.63p-1f16)141#define M_LN10f16 (__extension__ 0x1.26cp1f16)142#define M_PHIf16 (__extension__ 0x1.9e4p0f16)143#define M_PIf16 (__extension__ 0x1.92p1f16)144#define M_PI_2f16 (__extension__ 0x1.92p0f16)145#define M_PI_4f16 (__extension__ 0x1.92p-1f16)146#define M_1_PIf16 (__extension__ 0x1.46p-2f16)147#define M_1_SQRTPIf16 (__extension__ 0x1.20cp-1f16)148#define M_2_PIf16 (__extension__ 0x1.46p-1f16)149#define M_2_SQRTPIf16 (__extension__ 0x1.20cp0f16)150#define M_SQRT2f16 (__extension__ 0x1.6ap0f16)151#define M_SQRT3f16 (__extension__ 0x1.bb8p0f16)152#define M_SQRT1_2f16 (__extension__ 0x1.6ap-1f16)153#define M_SQRT1_3f16 (__extension__ 0x1.278p-1f16)154#endif // __FLT16_MANT_DIG__155 156#ifdef __SIZEOF_FLOAT128__157#define M_Ef128 (__extension__ 0x1.5bf0a8b1457695355fb8ac404e7ap1q)158#define M_EGAMMAf128 (__extension__ 0x1.2788cfc6fb618f49a37c7f0202a6p-1q)159#define M_LOG2Ef128 (__extension__ 0x1.71547652b82fe1777d0ffda0d23ap0q)160#define M_LOG10Ef128 (__extension__ 0x1.bcb7b1526e50e32a6ab7555f5a68p-2q)161#define M_LN2f128 (__extension__ 0x1.62e42fefa39ef35793c7673007e6p-1q)162#define M_LN10f128 (__extension__ 0x1.26bb1bbb5551582dd4adac5705a6p1q)163#define M_PHIf128 (__extension__ 0x1.9e3779b97f4a7c15f39cc0605ceep0q)164#define M_PIf128 (__extension__ 0x1.921fb54442d18469898cc51701b8p1q)165#define M_PI_2f128 (__extension__ 0x1.921fb54442d18469898cc51701b8p0q)166#define M_PI_4f128 (__extension__ 0x1.921fb54442d18469898cc51701b8p-1q)167#define M_1_PIf128 (__extension__ 0x1.45f306dc9c882a53f84eafa3ea6ap-2q)168#define M_1_SQRTPIf128 (__extension__ 0x1.20dd750429b6d11ae3a914fed7fep-1q)169#define M_2_PIf128 (__extension__ 0x1.45f306dc9c882a53f84eafa3ea6ap-1q)170#define M_2_SQRTPIf128 (__extension__ 0x1.20dd750429b6d11ae3a914fed7fep0q)171#define M_SQRT2f128 (__extension__ 0x1.6a09e667f3bcc908b2fb1366ea95p0q)172#define M_SQRT3f128 (__extension__ 0x1.bb67ae8584caa73b25742d7078b8p0q)173#define M_SQRT1_2f128 (__extension__ 0x1.6a09e667f3bcc908b2fb1366ea95p-1q)174#define M_SQRT1_3f128 (__extension__ 0x1.279a74590331c4d218f81e4afb25p-1q)175#endif // __SIZEOF_FLOAT128__176 177#endif // LLVM_LIBC_MACROS_MATH_MACROS_H178