12#include "algebra/impl/vc_soa_concepts.hpp"
16#pragma warning(push, 0)
63template <detray::concepts::vc_simd_vector T>
64constexpr decltype(
auto)
abs(T &&vec) {
65 return Vc::abs(std::forward<T>(vec));
70template <detray::concepts::vc_simd_vector T>
71constexpr decltype(
auto)
fabs(T &&vec) {
72 return Vc::abs(std::forward<T>(vec));
77template <detray::concepts::vc_simd_vector T>
78constexpr decltype(
auto)
sqrt(T &&vec) {
79 return Vc::sqrt(std::forward<T>(vec));
84template <detray::concepts::vc_simd_vector T>
85constexpr decltype(
auto)
exp(T &&vec) {
86 return Vc::exp(std::forward<T>(vec));
91template <detray::concepts::vc_simd_vector T>
92constexpr decltype(
auto)
log(T &&vec) {
93 return Vc::log(std::forward<T>(vec));
98template <detray::concepts::vc_simd_vector T>
99constexpr decltype(
auto)
sin(T &&vec) {
100 return Vc::sin(std::forward<T>(vec));
105template <detray::concepts::vc_simd_vector T>
106constexpr decltype(
auto)
asin(T &&vec) {
107 return Vc::asin(std::forward<T>(vec));
112template <detray::concepts::vc_simd_vector T>
113constexpr decltype(
auto)
cos(T &&vec) {
114 return Vc::cos(std::forward<T>(vec));
119template <detray::concepts::vc_simd_vector T>
120constexpr decltype(
auto)
tan(T &&vec) {
122 return Vc::sin(std::forward<T>(vec)) / Vc::cos(std::forward<T>(vec));
127template <detray::concepts::vc_simd_vector T>
128constexpr decltype(
auto)
atan(T &&vec) {
129 return Vc::atan(std::forward<T>(vec));
137constexpr decltype(
auto)
copysign(T &&mag, S &&sgn) {
138 return Vc::copysign(std::forward<T>(mag), std::forward<S>(sgn));
143template <detray::concepts::vc_simd_vector T>
144constexpr decltype(
auto)
min(T &&vec) {
145 return Vc::min(std::forward<T>(vec));
150template <detray::concepts::vc_simd_vector T>
151constexpr decltype(
auto)
max(T &&vec) {
152 return Vc::max(std::forward<T>(vec));
157template <detray::concepts::vc_simd_vector T>
159 return Vc::isnegative(std::forward<T>(vec));
167template <detray::concepts::vc_simd_vector T>
168constexpr decltype(
auto)
fma(T &&x, T &&y, T &&z) {
169 return Vc::fma(std::forward<T>(x), std::forward<T>(y), std::forward<T>(z));
Vc SIMD types.
Definition vc_aos_concepts.hpp:30
Namespace to pick up common math functions from.
Definition math.hpp:29
constexpr decltype(auto) atan(T &&vec)
Definition vc_soa_math.hpp:128
constexpr decltype(auto) sqrt(T &&vec)
Definition vc_soa_math.hpp:78
constexpr decltype(auto) fabs(T &&vec)
Definition vc_soa_math.hpp:71
constexpr decltype(auto) exp(T &&vec)
Definition vc_soa_math.hpp:85
constexpr decltype(auto) copysign(T &&mag, S &&sgn)
Definition vc_soa_math.hpp:137
constexpr decltype(auto) asin(T &&vec)
Definition vc_soa_math.hpp:106
constexpr decltype(auto) min(T &&vec)
Definition vc_soa_math.hpp:144
constexpr decltype(auto) sin(T &&vec)
Definition vc_soa_math.hpp:99
constexpr decltype(auto) signbit(T &&vec)
Definition vc_soa_math.hpp:158
constexpr decltype(auto) fma(T &&x, T &&y, T &&z)
Evaluate the fused multiply-add x * y + z lane by lane.
Definition vc_soa_math.hpp:168
constexpr decltype(auto) log(T &&vec)
Definition vc_soa_math.hpp:92
constexpr decltype(auto) tan(T &&vec)
Definition vc_soa_math.hpp:120
constexpr decltype(auto) cos(T &&vec)
Definition vc_soa_math.hpp:113
constexpr decltype(auto) max(T &&vec)
Definition vc_soa_math.hpp:151
constexpr decltype(auto) abs(T &&vec)
Vc overloads of common math functions.
Definition vc_soa_math.hpp:64