Blaze 3.9
Asinh.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_SIMD_ASINH_H_
36#define _BLAZE_MATH_SIMD_ASINH_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//*************************************************************************************************
68template< typename T > // Type of the operand
69BLAZE_ALWAYS_INLINE const SIMDfloat asinh( const SIMDf32<T>& a ) noexcept
70#if BLAZE_SVML_MODE
71# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
72{
73 return _mm512_asinh_ps( (*a).eval().value );
74}
75# elif BLAZE_AVX_MODE
76{
77 return _mm256_asinh_ps( (*a).eval().value );
78}
79# elif BLAZE_SSE_MODE
80{
81 return _mm_asinh_ps( (*a).eval().value );
82}
83# endif
84#elif BLAZE_SLEEF_MODE
85# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
86{
87 return Sleef_asinhf16_u10( (*a).eval().value );
88}
89# elif BLAZE_AVX_MODE
90{
91 return Sleef_asinhf8_u10( (*a).eval().value );
92}
93# elif BLAZE_SSE_MODE
94{
95 return Sleef_asinhf4_u10( (*a).eval().value );
96}
97# endif
98#elif BLAZE_XSIMD_MODE
99{
100 return SIMDfloat{ xsimd::asinh( xsimd::batch<float>{ (*a).eval().value } ).data };
101}
102#else
103= delete;
104#endif
105//*************************************************************************************************
106
107
108
109
110//=================================================================================================
111//
112// 64-BIT FLOATING POINT SIMD TYPES
113//
114//=================================================================================================
115
116//*************************************************************************************************
125template< typename T > // Type of the operand
126BLAZE_ALWAYS_INLINE const SIMDdouble asinh( const SIMDf64<T>& a ) noexcept
127#if BLAZE_SVML_MODE
128# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
129{
130 return _mm512_asinh_pd( (*a).eval().value );
131}
132# elif BLAZE_AVX_MODE
133{
134 return _mm256_asinh_pd( (*a).eval().value );
135}
136# elif BLAZE_SSE_MODE
137{
138 return _mm_asinh_pd( (*a).eval().value );
139}
140# endif
141#elif BLAZE_SLEEF_MODE
142# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
143{
144 return Sleef_asinhd8_u10( (*a).eval().value );
145}
146# elif BLAZE_AVX_MODE
147{
148 return Sleef_asinhd4_u10( (*a).eval().value );
149}
150# elif BLAZE_SSE_MODE
151{
152 return Sleef_asinhd2_u10( (*a).eval().value );
153}
154# endif
155#elif BLAZE_XSIMD_MODE
156{
157 return SIMDdouble{ xsimd::asinh( xsimd::batch<double>{ (*a).eval().value } ).data };
158}
159#else
160= delete;
161#endif
162//*************************************************************************************************
163
164} // namespace blaze
165
166#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.
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 asinh(const SIMDf64< T > &a) noexcept=delete
Inverse hyperbolic sine 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.