native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
exp_body.h File Reference

Range-reduced exponential over scalar, SIMD, and register-pack inputs. More...

Go to the source code of this file.

Namespaces

namespace  native
 Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its architecture tag and instruction-set preconditions. Common utilities do not select or admit a runtime CPU profile.

Functions

template<bool Flush = false, std::size_t L, ::native::isa<> Arch>
requires (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr simd< float, L, Arch > native::exp2 (simd< float, L, Arch > input) noexcept
template<bool Flush = false, std::size_t L, std::size_t N, ::native::isa<> Arch>
requires (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr std::array< simd< float, L, Arch >, N > native::exp2 (std::array< simd< float, L, Arch >, N > const &input) noexcept
template<bool Flush, std::size_t L, ::native::isa<> Arch>
requires (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr simd< float, L, Arch > native::exp2 (simd< float, L, Arch > input, std::bool_constant< Flush >) noexcept
template<bool Flush, std::size_t L, std::size_t N, ::native::isa<> Arch>
requires (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr std::array< simd< float, L, Arch >, N > native::exp2 (std::array< simd< float, L, Arch >, N > const &input, std::bool_constant< Flush >) noexcept
template<std::size_t L, ::native::isa<> Arch>
requires (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr simd< float, L, Arch > native::atan2 (simd< float, L, Arch > y, simd< float, L, Arch > x) noexcept
template<std::size_t L, std::size_t N, ::native::isa<> Arch>
requires (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr std::array< simd< float, L, Arch >, N > native::atan2 (std::array< simd< float, L, Arch >, N > const &y, std::array< simd< float, L, Arch >, N > const &x) noexcept
template<bool Flush = false, unsigned Degree = 6, std::size_t L, ::native::isa<> Arch>
requires (Degree >= 1 && Degree <= 7) && (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr simd< float, L, Arch > native::exp (simd< float, L, Arch > input) noexcept
 Evaluate the binary32 range-reduced exponential approximation. Degree selects a polynomial from one through seven, defaulting to six. Every degree shares range reduction and exponent scaling; none promises correctly rounded exp for every input. Flush selects the early underflow cutoff at compile time; it does not change CPU controls or turn a raw vector into a policy-bearing FTZ type.
template<bool Flush = false, unsigned Degree = 6, std::size_t L, std::size_t N, ::native::isa<> Arch>
requires (Degree >= 1 && Degree <= 7) && (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr std::array< simd< float, L, Arch >, N > native::exp (std::array< simd< float, L, Arch >, N > const &input) noexcept
template<bool Flush, unsigned Degree = 6, std::size_t L, std::size_t N, ::native::isa<> Arch>
requires (Degree >= 1 && Degree <= 7) && (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr std::array< simd< float, L, Arch >, N > native::exp (std::array< simd< float, L, Arch >, N > const &input, std::bool_constant< Flush >, std::integral_constant< unsigned, Degree >={}) noexcept
template<bool Flush, unsigned Degree = 6, std::size_t L, ::native::isa<> Arch>
requires (Degree >= 1 && Degree <= 7) && (::native::avx512 <= Arch ) && ::native::detail::avx512_backend::float_shape<L>
constexpr simd< float, L, Arch > native::exp (simd< float, L, Arch > input, std::bool_constant< Flush >, std::integral_constant< unsigned, Degree >={}) noexcept

Detailed Description

Range-reduced exponential over scalar, SIMD, and register-pack inputs.

SPDX-FileType: SOURCE
SPDX-FileCopyrightText: 2026 Edward Kmett <ekmett@gmail.com>
SPDX-License-Identifier: BSD-2-Clause OR Apache-2.0
Author
Edward Kmett ekmett@gmail.com

Definition in file exp_body.h.