blob: 46aa34c05e01b110626102ad75e346b67b744eca [file]
//===-- Common constants for acoshf function --------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_ACOSH_FLOAT_CONSTANTS_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_ACOSH_FLOAT_CONSTANTS_H
#include "src/__support/macros/attributes.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace acoshf_internal {
// Look up table for log range reduction:
// r(0) = 1
// r(63) = 0.5
// > for i from 1 to 62 do {
// r = 2^-7 * ceil(2^7 * (1 - 2^-7) / (1 + i * 2^-6));
// print(r, ",");
// };
LIBC_INLINE_VAR constexpr double R_LOG[64] = {
0x1.0p+0, 0x1.f8p-1, 0x1.fp-1, 0x1.e8p-1, 0x1.ep-1, 0x1.d8p-1, 0x1.d4p-1,
0x1.ccp-1, 0x1.c4p-1, 0x1.cp-1, 0x1.b8p-1, 0x1.b4p-1, 0x1.acp-1, 0x1.a8p-1,
0x1.a4p-1, 0x1.9cp-1, 0x1.98p-1, 0x1.94p-1, 0x1.9p-1, 0x1.88p-1, 0x1.84p-1,
0x1.8p-1, 0x1.7cp-1, 0x1.78p-1, 0x1.74p-1, 0x1.7p-1, 0x1.6cp-1, 0x1.68p-1,
0x1.64p-1, 0x1.6p-1, 0x1.5cp-1, 0x1.58p-1, 0x1.54p-1, 0x1.5p-1, 0x1.4cp-1,
0x1.4cp-1, 0x1.48p-1, 0x1.44p-1, 0x1.4p-1, 0x1.3cp-1, 0x1.3cp-1, 0x1.38p-1,
0x1.34p-1, 0x1.3p-1, 0x1.3p-1, 0x1.2cp-1, 0x1.28p-1, 0x1.28p-1, 0x1.24p-1,
0x1.2p-1, 0x1.2p-1, 0x1.1cp-1, 0x1.1cp-1, 0x1.18p-1, 0x1.14p-1, 0x1.14p-1,
0x1.1p-1, 0x1.1p-1, 0x1.0cp-1, 0x1.0cp-1, 0x1.08p-1, 0x1.08p-1, 0x1.04p-1,
0x1.0p-1};
// Compensated constants for exact logarithm range reduction when FMA is not
// available.
// Generated by Sollya with the formula: CD[i] = RD[i]*(1 + i*2^-6) - 1
// for RD[i] defined on the table above.
LIBC_INLINE_VAR constexpr double C_LOG[64] = {
0.0, -0x1p-12, -0x1p-10, -0x1.2p-9, -0x1p-8, -0x1.9p-8,
-0x1p-12, -0x1.bp-9, -0x1.cp-8, -0x1p-9, -0x1.ap-8, -0x1.1p-9,
-0x1.ep-8, -0x1.ep-9, -0x1p-12, -0x1.b8p-8, -0x1p-8, -0x1.6p-10,
0x1p-10, -0x1.dp-8, -0x1.6p-8, -0x1p-8, -0x1.6p-9, -0x1.cp-10,
-0x1p-10, -0x1p-11, -0x1p-12, -0x1p-12, -0x1p-11, -0x1p-10,
-0x1.cp-10, -0x1.6p-9, -0x1p-8, -0x1.6p-8, -0x1.dp-8, 0x1.9p-9,
0x1p-10, -0x1.6p-10, -0x1p-8, -0x1.b8p-8, 0x1.8p-9, -0x1p-12,
-0x1.ep-9, -0x1.ep-8, 0x1p-9, -0x1.1p-9, -0x1.ap-8, 0x1.6p-9,
-0x1p-9, -0x1.cp-8, 0x1p-9, -0x1.bp-9, 0x1.6p-8, -0x1p-12,
-0x1.9p-8, 0x1.3p-9, -0x1p-8, 0x1.2p-8, -0x1.2p-9, 0x1.88p-8,
-0x1p-10, 0x1.dp-8, -0x1p-12, -0x1.0p-7};
// Lookup table for log(r) = log(1 + n*2^(-7)) where n = 0..127.
LIBC_INLINE_VAR constexpr double LOG_R[64] = {
0x0.0000000000000p+0, 0x1.0205658935847p-6,
0x1.0415d89e74444p-5, 0x1.894aa149fb343p-5,
0x1.08598b59e3a07p-4, 0x1.4d3115d207eacp-4,
0x1.700d30aeac0e1p-4, 0x1.b6ac88dad5b1cp-4,
0x1.fe89139dbd566p-4, 0x1.1178e8227e47cp-3,
0x1.365fcb0159016p-3, 0x1.4913d8333b561p-3,
0x1.6f0128b756abcp-3, 0x1.823c16551a3c2p-3,
0x1.95a5adcf7017fp-3, 0x1.bd087383bd8adp-3,
0x1.d1037f2655e7bp-3, 0x1.e530effe71012p-3,
0x1.f991c6cb3b379p-3, 0x1.1178e8227e47cp-2,
0x1.1bf99635a6b95p-2, 0x1.269621134db92p-2,
0x1.314f1e1d35ce4p-2, 0x1.3c25277333184p-2,
0x1.4718dc271c41bp-2, 0x1.522ae0738a3d8p-2,
0x1.5d5bddf595f3p-2, 0x1.68ac83e9c6a14p-2,
0x1.741d876c67bb1p-2, 0x1.7fafa3bd8151cp-2,
0x1.8b639a88b2df5p-2, 0x1.973a3431356aep-2,
0x1.a33440224fa79p-2, 0x1.af5295248cddp-2,
0x1.bb9611b80e2fbp-2, 0x1.bb9611b80e2fbp-2,
0x1.c7ff9c74554c9p-2, 0x1.d490246defa6bp-2,
0x1.e148a1a2726cep-2, 0x1.ee2a156b413e5p-2,
0x1.ee2a156b413e5p-2, 0x1.fb358af7a4884p-2,
0x1.04360be7603adp-1, 0x1.0ae76e2d054fap-1,
0x1.0ae76e2d054fap-1, 0x1.11af823c75aa8p-1,
0x1.188ee40f23ca6p-1, 0x1.188ee40f23ca6p-1,
0x1.1f8635fc61659p-1, 0x1.269621134db92p-1,
0x1.269621134db92p-1, 0x1.2dbf557b0df43p-1,
0x1.2dbf557b0df43p-1, 0x1.35028ad9d8c86p-1,
0x1.3c6080c36bfb5p-1, 0x1.3c6080c36bfb5p-1,
0x1.43d9ff2f923c5p-1, 0x1.43d9ff2f923c5p-1,
0x1.4b6fd6f970c1fp-1, 0x1.4b6fd6f970c1fp-1,
0x1.5322e26867857p-1, 0x1.5322e26867857p-1,
0x1.5af405c3649ep-1, 0.0};
} // namespace acoshf_internal
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_ACOSH_FLOAT_CONSTANTS_H