4#ifndef TETL_CMATH_ISFINITE_HPP
5#define TETL_CMATH_ISFINITE_HPP
7#include <etl/_cmath/isinf.hpp>
8#include <etl/_cmath/isnan.hpp>
9#include <etl/_type_traits/is_constant_evaluated.hpp>
15inline constexpr struct isfinite {
16 template <
typename Float>
17 [[nodiscard]]
constexpr auto operator()(Float arg)
const noexcept ->
bool
20#if __has_builtin(__builtin_isfinitef)
21 if constexpr (etl::same_as<Float,
float>) {
22 return __builtin_isfinitef(arg);
25#if __has_builtin(__builtin_isfinite)
26 if constexpr (etl::same_as<Float,
double>) {
27 return __builtin_isfinite(arg);
31 return not etl::isnan(arg)
and not etl::isinf(arg);
45 return etl::detail::isfinite(arg);
50 return etl::detail::isfinite(arg);
55 return etl::detail::isfinite(arg);
constexpr auto isfinite(long double arg) -> bool
Definition isfinite.hpp:53
constexpr auto isfinite(double arg) -> bool
Definition isfinite.hpp:48
constexpr auto isfinite(float arg) -> bool
Definition isfinite.hpp:43
Definition adjacent_find.hpp:9
constexpr auto is_constant_evaluated() noexcept -> bool
Detects whether the function call occurs within a constant-evaluated context. Returns true if the eva...
Definition is_constant_evaluated.hpp:17