Blaze 3.9
Erfc.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_SIMD_ERFC_H_
36#define _BLAZE_MATH_SIMD_ERFC_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#if BLAZE_SLEEF_MODE
44# include <sleef.h>
45#endif
47#include <blaze/system/Inline.h>
49
50
51namespace blaze {
52
53//=================================================================================================
54//
55// 32-BIT FLOATING POINT SIMD TYPES
56//
57//=================================================================================================
58
59//*************************************************************************************************
69template< typename T > // Type of the operand
70BLAZE_ALWAYS_INLINE const SIMDfloat erfc( const SIMDf32<T>& a ) noexcept
71#if BLAZE_SVML_MODE
72# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
73{
74 return _mm512_erfc_ps( (*a).eval().value );
75}
76# elif BLAZE_AVX_MODE
77{
78 return _mm256_erfc_ps( (*a).eval().value );
79}
80# elif BLAZE_SSE_MODE
81{
82 return _mm_erfc_ps( (*a).eval().value );
83}
84# endif
85#elif BLAZE_SLEEF_MODE
86# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
87{
88 return Sleef_erfcf16_u15( (*a).eval().value );
89}
90# elif BLAZE_AVX_MODE
91{
92 return Sleef_erfcf8_u15( (*a).eval().value );
93}
94# elif BLAZE_SSE_MODE
95{
96 return Sleef_erfcf4_u15( (*a).eval().value );
97}
98# endif
99#else
100= delete;
101#endif
102//*************************************************************************************************
103
104
105
106
107//=================================================================================================
108//
109// 64-BIT FLOATING POINT SIMD TYPES
110//
111//=================================================================================================
112
113//*************************************************************************************************
123template< typename T > // Type of the operand
124BLAZE_ALWAYS_INLINE const SIMDdouble erfc( const SIMDf64<T>& a ) noexcept
125#if BLAZE_SVML_MODE
126# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
127{
128 return _mm512_erfc_pd( (*a).eval().value );
129}
130# elif BLAZE_AVX_MODE
131{
132 return _mm256_erfc_pd( (*a).eval().value );
133}
134# elif BLAZE_SSE_MODE
135{
136 return _mm_erfc_pd( (*a).eval().value );
137}
138# endif
139#elif BLAZE_SLEEF_MODE
140# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
141{
142 return Sleef_erfcd8_u15( (*a).eval().value );
143}
144# elif BLAZE_AVX_MODE
145{
146 return Sleef_erfcd4_u15( (*a).eval().value );
147}
148# elif BLAZE_SSE_MODE
149{
150 return Sleef_erfcd2_u15( (*a).eval().value );
151}
152# endif
153#else
154= delete;
155#endif
156//*************************************************************************************************
157
158} // namespace blaze
159
160#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 erfc(const SIMDf64< T > &a) noexcept=delete
Computes the complementary error function 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.