Blaze 3.9
Sqrt.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_SIMD_SQRT_H_
36#define _BLAZE_MATH_SIMD_SQRT_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
44#include <blaze/system/Inline.h>
46
47
48namespace blaze {
49
50//=================================================================================================
51//
52// 32-BIT FLOATING POINT SIMD TYPES
53//
54//=================================================================================================
55
56//*************************************************************************************************
65template< typename T > // Type of the operand
66BLAZE_ALWAYS_INLINE const SIMDfloat sqrt( const SIMDf32<T>& a ) noexcept
67#if ( BLAZE_AVX512F_MODE || BLAZE_MIC_MODE )
68{
69 return _mm512_sqrt_ps( (*a).eval().value );
70}
71#elif BLAZE_AVX_MODE
72{
73 return _mm256_sqrt_ps( (*a).eval().value );
74}
75#elif BLAZE_SSE_MODE
76{
77 return _mm_sqrt_ps( (*a).eval().value );
78}
79#else
80= delete;
81#endif
82//*************************************************************************************************
83
84
85
86
87//=================================================================================================
88//
89// 64-BIT FLOATING POINT SIMD TYPES
90//
91//=================================================================================================
92
93//*************************************************************************************************
102template< typename T > // Type of the operand
103BLAZE_ALWAYS_INLINE const SIMDdouble sqrt( const SIMDf64<T>& a ) noexcept
104#if ( BLAZE_AVX512F_MODE || BLAZE_MIC_MODE )
105{
106 return _mm512_sqrt_pd( (*a).eval().value );
107}
108#elif BLAZE_AVX_MODE
109{
110 return _mm256_sqrt_pd( (*a).eval().value );
111}
112#elif BLAZE_SSE2_MODE
113{
114 return _mm_sqrt_pd( (*a).eval().value );
115}
116#else
117= delete;
118#endif
119//*************************************************************************************************
120
121} // namespace blaze
122
123#endif
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 sqrt(const SIMDf64< T > &a) noexcept=delete
Computes the square root for 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.