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 selector for cosf.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_COSF_H
15#define LLVM_LIBC_SRC___SUPPORT_MATH_COSF_H
16
17#include "src/__support/macros/config.h"
18#include "src/__support/macros/properties/cpu_features.h"
19
20#if defined(LIBC_MATH_HAS_SKIP_ACCURATE_PASS) && \
21 (defined(LIBC_MATH_HAS_SMALL_TABLES) || \
22 defined(LIBC_MATH_HAS_INTERMEDIATE_COMP_IN_FLOAT)) && \
23 defined(LIBC_TARGET_CPU_HAS_FMA_FLOAT)
24#include "cosf_float_eval.h"
25#define LIBC_MATH_COSF_IMPL float_eval
26#else
27#include "cosf_double_eval.h"
28#define LIBC_MATH_COSF_IMPL double_eval
29#endif
30
31namespace LIBC_NAMESPACE_DECL {
32namespace math {
33
34using LIBC_MATH_COSF_IMPL::cosf;
35
36} // namespace math
37} // namespace LIBC_NAMESPACE_DECL
38
39#undef LIBC_MATH_COSF_IMPL
40
41#endif // LLVM_LIBC_SRC___SUPPORT_MATH_COSF_H
42