InvCbrt.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_SIMD_INVCBRT_H_
36 #define _BLAZE_MATH_SIMD_INVCBRT_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
44 #include <blaze/system/Inline.h>
46 
47 
48 namespace blaze {
49 
50 //=================================================================================================
51 //
52 // 32-BIT FLOATING POINT SIMD TYPES
53 //
54 //=================================================================================================
55 
56 //*************************************************************************************************
65 template< typename T > // Type of the operand
66 BLAZE_ALWAYS_INLINE const SIMDfloat invcbrt( const SIMDf32<T>& a ) noexcept
67 #if BLAZE_SVML_MODE && BLAZE_AVX_MODE
68 {
69  return _mm256_invcbrt_ps( (~a).eval().value );
70 }
71 #elif BLAZE_SVML_MODE && BLAZE_SSE_MODE
72 {
73  return _mm_invcbrt_ps( (~a).eval().value );
74 }
75 #else
76 = delete;
77 #endif
78 //*************************************************************************************************
79 
80 
81 
82 
83 //=================================================================================================
84 //
85 // 64-BIT FLOATING POINT SIMD TYPES
86 //
87 //=================================================================================================
88 
89 //*************************************************************************************************
98 template< typename T > // Type of the operand
99 BLAZE_ALWAYS_INLINE const SIMDdouble invcbrt( const SIMDf64<T>& a ) noexcept
100 #if BLAZE_SVML_MODE && BLAZE_AVX_MODE
101 {
102  return _mm256_invcbrt_pd( (~a).eval().value );
103 }
104 #elif BLAZE_SVML_MODE && BLAZE_SSE_MODE
105 {
106  return _mm_invcbrt_pd( (~a).eval().value );
107 }
108 #else
109 = delete;
110 #endif
111 //*************************************************************************************************
112 
113 } // namespace blaze
114 
115 #endif
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
const DMatForEachExpr< MT, InvCbrt, SO > invcbrt(const DenseMatrix< MT, SO > &dm)
Computes the inverse cubic root of each single element of the dense matrix dm.
Definition: DMatForEachExpr.h:1375
Header file for the basic SIMD types.
const DMatEvalExpr< MT, SO > eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:705
System settings for the SSE mode.
System settings for the inline keywords.