35#ifndef _BLAZE_MATH_SIMD_HYPOT_H_
36#define _BLAZE_MATH_SIMD_HYPOT_H_
75# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
77 return _mm512_hypot_ps( (*a).eval().value, (*b).eval().value );
81 return _mm256_hypot_ps( (*a).eval().value, (*b).eval().value );
85 return _mm_hypot_ps( (*a).eval().value, (*b).eval().value );
89# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
91 return Sleef_hypotf16_u05avx512f( (*a).eval().value, (*b).eval().value );
95 return Sleef_hypotf8_u05avx2( (*a).eval().value, (*b).eval().value );
99 return Sleef_hypotf8_u05avx( (*a).eval().value, (*b).eval().value );
103 return Sleef_hypotf4_u05( (*a).eval().value, (*b).eval().value );
133template<
typename T >
136# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
138 return _mm512_hypot_pd( (*a).eval().value, (*b).eval().value );
142 return _mm256_hypot_pd( (*a).eval().value, (*b).eval().value );
146 return _mm_hypot_pd( (*a).eval().value, (*b).eval().value );
149#elif BLAZE_SLEEF_MODE
150# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
152 return Sleef_hypotd8_u05avx512f( (*a).eval().value, (*b).eval().value );
154# elif BLAZE_AVX2_MODE
156 return Sleef_hypotd4_u05avx2( (*a).eval().value, (*b).eval().value );
160 return Sleef_hypotd4_u05avx( (*a).eval().value, (*b).eval().value );
164 return Sleef_hypotd2_u05( (*a).eval().value, (*b).eval().value );
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.
BLAZE_ALWAYS_INLINE const SIMDdouble hypot(const SIMDf64< T > &a, const SIMDf64< T > &b) noexcept=delete
Computes the length of the hypotenous of a right triangle of a vector of double precision floating po...
#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.