HasSIMDConj.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDCONJ_H_
36 #define _BLAZE_MATH_TYPETRAITS_HASSIMDCONJ_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
44 #include <blaze/util/Complex.h>
50 
51 
52 namespace blaze {
53 
54 //=================================================================================================
55 //
56 // CLASS DEFINITION
57 //
58 //=================================================================================================
59 
60 //*************************************************************************************************
62 template< typename T // Type of the operand
63  , typename = void > // Restricting condition
64 struct HasSIMDConjHelper
65 {
66  enum : bool { value = IsNumeric<T>::value };
67 };
69 //*************************************************************************************************
70 
71 
72 //*************************************************************************************************
74 template< typename T >
75 struct HasSIMDConjHelper< complex<T> >
76 {
77  enum : bool { value = IsNumeric<T>::value && IsSigned<T>::value && HasSIMDMult<T,T>::value &&
78  ( IsFloatingPoint<T>::value || sizeof(T) <= 4UL ) };
79 };
81 //*************************************************************************************************
82 
83 
84 //*************************************************************************************************
105 template< typename T > // Type of the operand
106 struct HasSIMDConj : public BoolConstant< HasSIMDConjHelper< Decay_<T> >::value >
107 {};
108 //*************************************************************************************************
109 
110 } // namespace blaze
111 
112 #endif
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:71
Header file for the Decay type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the IsFloatingPoint type trait.
Availability of a SIMD conjugate operation for the given data type.Depending on the available instruc...
Definition: HasSIMDConj.h:106
Header file for the IsNumeric type trait.
Header file for the HasSIMDMult type trait.
Header file for the IsSigned type trait.
Header file for the IntegralConstant class template.
Header file for the complex data type.