Blaze 3.9
LGamma.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_SIMD_LGAMMA_H_
36#define _BLAZE_MATH_SIMD_LGAMMA_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 lgamma( const SIMDf32<T>& a ) noexcept
70#if BLAZE_SLEEF_MODE
71# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
72{
73 return Sleef_lgammaf16_u10( (*a).eval().value );
74}
75# elif BLAZE_AVX_MODE
76{
77 return Sleef_lgammaf8_u10( (*a).eval().value );
78}
79# elif BLAZE_SSE_MODE
80{
81 return Sleef_lgammaf4_u10( (*a).eval().value );
82}
83# endif
84#else
85= delete;
86#endif
87//*************************************************************************************************
88
89
90
91
92//=================================================================================================
93//
94// 64-BIT FLOATING POINT SIMD TYPES
95//
96//=================================================================================================
97
98//*************************************************************************************************
107template< typename T > // Type of the operand
108BLAZE_ALWAYS_INLINE const SIMDdouble lgamma( const SIMDf64<T>& a ) noexcept
109#if BLAZE_SLEEF_MODE
110# if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
111{
112 return Sleef_lgammad8_u10( (*a).eval().value );
113}
114# elif BLAZE_AVX_MODE
115{
116 return Sleef_lgammad4_u10( (*a).eval().value );
117}
118# elif BLAZE_SSE_MODE
119{
120 return Sleef_lgammad2_u10( (*a).eval().value );
121}
122# endif
123#else
124= delete;
125#endif
126//*************************************************************************************************
127
128} // namespace blaze
129
130#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 lgamma(const SIMDf64< T > &a) noexcept=delete
Computes the lgamma 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.