150d848d0SSlava Zakharin /*===-- runtime/Float128Math/complex-math.h -------------------------*- C -*-=== 250d848d0SSlava Zakharin * 350d848d0SSlava Zakharin * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 450d848d0SSlava Zakharin * See https://llvm.org/LICENSE.txt for license information. 550d848d0SSlava Zakharin * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 650d848d0SSlava Zakharin * 750d848d0SSlava Zakharin *===----------------------------------------------------------------------===*/ 850d848d0SSlava Zakharin 950d848d0SSlava Zakharin #ifndef FORTRAN_RUNTIME_FLOAT128MATH_COMPLEX_MATH_H_ 1050d848d0SSlava Zakharin #define FORTRAN_RUNTIME_FLOAT128MATH_COMPLEX_MATH_H_ 1150d848d0SSlava Zakharin 1250d848d0SSlava Zakharin #include "flang/Common/float128.h" 1350d848d0SSlava Zakharin #include "flang/Runtime/entry-names.h" 1450d848d0SSlava Zakharin 1550d848d0SSlava Zakharin #if HAS_QUADMATHLIB 1650d848d0SSlava Zakharin #include "quadmath.h" 1750d848d0SSlava Zakharin #define CAbs(x) cabsq(x) 1850d848d0SSlava Zakharin #define CAcos(x) cacosq(x) 1950d848d0SSlava Zakharin #define CAcosh(x) cacoshq(x) 2050d848d0SSlava Zakharin #define CAsin(x) casinq(x) 2150d848d0SSlava Zakharin #define CAsinh(x) casinhq(x) 2250d848d0SSlava Zakharin #define CAtan(x) catanq(x) 2350d848d0SSlava Zakharin #define CAtanh(x) catanhq(x) 2450d848d0SSlava Zakharin #define CCos(x) ccosq(x) 2550d848d0SSlava Zakharin #define CCosh(x) ccoshq(x) 2650d848d0SSlava Zakharin #define CExp(x) cexpq(x) 2750d848d0SSlava Zakharin #define CLog(x) clogq(x) 2850d848d0SSlava Zakharin #define CPow(x, p) cpowq(x, p) 2950d848d0SSlava Zakharin #define CSin(x) csinq(x) 3050d848d0SSlava Zakharin #define CSinh(x) csinhq(x) 3150d848d0SSlava Zakharin #define CSqrt(x) csqrtq(x) 3250d848d0SSlava Zakharin #define CTan(x) ctanq(x) 3350d848d0SSlava Zakharin #define CTanh(x) ctanhq(x) 34*fc51c7f0SSlava Zakharin #elif HAS_LDBL128 3550d848d0SSlava Zakharin /* Use 'long double' versions of libm functions. */ 3650d848d0SSlava Zakharin #include <complex.h> 3750d848d0SSlava Zakharin 3850d848d0SSlava Zakharin #define CAbs(x) cabsl(x) 3950d848d0SSlava Zakharin #define CAcos(x) cacosl(x) 4050d848d0SSlava Zakharin #define CAcosh(x) cacoshl(x) 4150d848d0SSlava Zakharin #define CAsin(x) casinl(x) 4250d848d0SSlava Zakharin #define CAsinh(x) casinhl(x) 4350d848d0SSlava Zakharin #define CAtan(x) catanl(x) 4450d848d0SSlava Zakharin #define CAtanh(x) catanhl(x) 4550d848d0SSlava Zakharin #define CCos(x) ccosl(x) 4650d848d0SSlava Zakharin #define CCosh(x) ccoshl(x) 4750d848d0SSlava Zakharin #define CExp(x) cexpl(x) 4850d848d0SSlava Zakharin #define CLog(x) clogl(x) 4950d848d0SSlava Zakharin #define CPow(x, p) cpowl(x, p) 5050d848d0SSlava Zakharin #define CSin(x) csinl(x) 5150d848d0SSlava Zakharin #define CSinh(x) csinhl(x) 5250d848d0SSlava Zakharin #define CSqrt(x) csqrtl(x) 5350d848d0SSlava Zakharin #define CTan(x) ctanl(x) 5450d848d0SSlava Zakharin #define CTanh(x) ctanhl(x) 5550d848d0SSlava Zakharin #elif HAS_LIBMF128 5650d848d0SSlava Zakharin /* We can use __float128 versions of libm functions. 5750d848d0SSlava Zakharin * __STDC_WANT_IEC_60559_TYPES_EXT__ needs to be defined 5850d848d0SSlava Zakharin * before including math.h to enable the *f128 prototypes. */ 5950d848d0SSlava Zakharin #error "Float128Math build with glibc>=2.26 is unsupported yet" 6050d848d0SSlava Zakharin #endif 6150d848d0SSlava Zakharin 6250d848d0SSlava Zakharin #endif /* FORTRAN_RUNTIME_FLOAT128MATH_COMPLEX_MATH_H_ */ 63