35#ifndef _BLAZE_MATH_SIMD_ATAN2_H_
36#define _BLAZE_MATH_SIMD_ATAN2_H_
72# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
74 return _mm512_atan2_ps( (*a).eval().value, (*b).eval().value );
78 return _mm256_atan2_ps( (*a).eval().value, (*b).eval().value );
82 return _mm_atan2_ps( (*a).eval().value, (*b).eval().value );
86# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
88 return Sleef_atan2f16_u10( (*a).eval().value, (*b).eval().value );
92 return Sleef_atan2f8_u10( (*a).eval().value, (*b).eval().value );
96 return Sleef_atan2f4_u10( (*a).eval().value, (*b).eval().value );
102 xsimd::batch<float>{ (*b).eval().value } ).
data };
128template<
typename T >
131# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
133 return _mm512_atan2_pd( (*a).eval().value, (*b).eval().value );
137 return _mm256_atan2_pd( (*a).eval().value, (*b).eval().value );
141 return _mm_atan2_pd( (*a).eval().value, (*b).eval().value );
144#elif BLAZE_SLEEF_MODE
145# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
147 return Sleef_atan2d8_u10( (*a).eval().value, (*b).eval().value );
151 return Sleef_atan2d4_u10( (*a).eval().value, (*b).eval().value );
155 return Sleef_atan2d2_u10( (*a).eval().value, (*b).eval().value );
158#elif BLAZE_XSIMD_MODE
161 xsimd::batch<double>{ (*b).eval().value } ).
data };
Header file for the basic SIMD types.
SIMD type for 64-bit double precision floating point data values.
SIMD type for 32-bit single precision floating point data values.
MT::ElementType * data(DenseMatrix< MT, SO > &dm) noexcept
Low-level data access to the dense matrix elements.
Definition: DenseMatrix.h:182
BLAZE_ALWAYS_INLINE const SIMDdouble atan2(const SIMDf64< T > &a, const SIMDf64< T > &b) noexcept=delete
Multi-valued inverse tangent of a vector of double precision floating point values.
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
System settings for the inline keywords.
System settings for the SSE mode.