1//===----------------------------------------------------------------------===//
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-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// Implementation header for exp2f.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_EXP2F_H
15#define LLVM_LIBC_SRC___SUPPORT_MATH_EXP2F_H
16
17#include "src/__support/common.h"
18#include "src/__support/macros/config.h"
19#include "src/__support/macros/optimization.h"
20
21#if defined(LIBC_MATH_HAS_SKIP_ACCURATE_PASS) && \
22 (defined(LIBC_MATH_HAS_SMALL_TABLES) || \
23 defined(LIBC_MATH_HAS_INTERMEDIATE_COMP_IN_FLOAT))
24
25#include "src/__support/math/exp2f_float_eval.h"
26#define LIBC_MATH_EXP2F_IMPL float_eval
27
28#else // !LIBC_MATH_HAS_SKIP_ACCURATE_PASS
29#include "src/__support/math/exp2f_double_eval.h"
30#define LIBC_MATH_EXP2F_IMPL double_eval
31
32#endif // LIBC_MATH_HAS_SKIP_ACCURATE_PASS
33
34namespace LIBC_NAMESPACE_DECL {
35namespace math {
36
37using LIBC_MATH_EXP2F_IMPL::exp2f;
38
39} // namespace math
40} // namespace LIBC_NAMESPACE_DECL
41
42#undef LIBC_MATH_EXP2F_IMPL
43
44#endif // LLVM_LIBC_SRC___SUPPORT_MATH_EXP2F_H
45