Cos.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_FUNCTORS_COS_H_
36 #define _BLAZE_MATH_FUNCTORS_COS_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
44 #include <blaze/math/shims/Cos.h>
45 #include <blaze/math/simd/Cos.h>
53 #include <blaze/system/Inline.h>
54 
55 
56 namespace blaze {
57 
58 //=================================================================================================
59 //
60 // CLASS DEFINITION
61 //
62 //=================================================================================================
63 
64 //*************************************************************************************************
68 struct Cos
69 {
70  //**********************************************************************************************
73  explicit inline Cos()
74  {}
75  //**********************************************************************************************
76 
77  //**********************************************************************************************
83  template< typename T >
84  BLAZE_ALWAYS_INLINE decltype(auto) operator()( const T& a ) const
85  {
86  return cos( a );
87  }
88  //**********************************************************************************************
89 
90  //**********************************************************************************************
95  template< typename T >
96  static constexpr bool simdEnabled() { return HasSIMDCos_v<T>; }
97  //**********************************************************************************************
98 
99  //**********************************************************************************************
104  static constexpr bool paddingEnabled() { return false; }
105  //**********************************************************************************************
106 
107  //**********************************************************************************************
113  template< typename T >
114  BLAZE_ALWAYS_INLINE decltype(auto) load( const T& a ) const
115  {
117  return cos( a );
118  }
119  //**********************************************************************************************
120 };
121 //*************************************************************************************************
122 
123 
124 
125 
126 //=================================================================================================
127 //
128 // YIELDSUNIFORM SPECIALIZATIONS
129 //
130 //=================================================================================================
131 
132 //*************************************************************************************************
134 template< typename T >
135 struct YieldsUniform<Cos,T>
136  : public IsUniform<T>
137 {};
139 //*************************************************************************************************
140 
141 
142 
143 
144 //=================================================================================================
145 //
146 // YIELDSSYMMETRIC SPECIALIZATIONS
147 //
148 //=================================================================================================
149 
150 //*************************************************************************************************
152 template< typename MT >
153 struct YieldsSymmetric<Cos,MT>
154  : public IsSymmetric<MT>
155 {};
157 //*************************************************************************************************
158 
159 
160 
161 
162 //=================================================================================================
163 //
164 // YIELDSHERMITIAN SPECIALIZATIONS
165 //
166 //=================================================================================================
167 
168 //*************************************************************************************************
170 template< typename MT >
171 struct YieldsHermitian<Cos,MT>
172  : public IsHermitian<MT>
173 {};
175 //*************************************************************************************************
176 
177 } // namespace blaze
178 
179 #endif
Header file for the SIMD cosine functionality.
#define BLAZE_CONSTRAINT_MUST_BE_SIMD_PACK(T)
Constraint on the data type.In case the given data type T is not a SIMD pack, a compilation error is ...
Definition: SIMDPack.h:60
decltype(auto) BLAZE_ALWAYS_INLINE load(const T &a) const
Returns the result of the cos() function for the given SIMD vector.
Definition: Cos.h:114
static constexpr bool paddingEnabled()
Returns whether the operation supports padding, i.e. whether it can deal with zeros.
Definition: Cos.h:104
Header file for the IsUniform type trait.
Header file for the IsSymmetric type trait.
decltype(auto) cos(const DenseMatrix< MT, SO > &dm)
Computes the cosine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1945
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Header file for the cos shim.
static constexpr bool simdEnabled()
Returns whether SIMD is enabled for the specified data type T.
Definition: Cos.h:96
Cos()
Default constructor of the Cos functor.
Definition: Cos.h:73
Constraint on the data type.
Header file for the HasSIMDCos type trait.
Header file for the YieldsUniform type trait.
Header file for the YieldsSymmetric type trait.
Generic wrapper for the cos() function.
Definition: Cos.h:68
Header file for the YieldsHermitian type trait.
Header file for the IsHermitian type trait.
System settings for the inline keywords.