Blaze 3.9
HasLog1p.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_HASLOG1P_H_
36#define _BLAZE_MATH_TYPETRAITS_HASLOG1P_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
46#include <blaze/util/EnableIf.h>
49
50
51namespace blaze {
52
53//=================================================================================================
54//
55// CLASS DEFINITION
56//
57//=================================================================================================
58
59//*************************************************************************************************
64template< typename T, typename = void >
65struct HasLog1pHelper
66 : public FalseType
67{};
69//*************************************************************************************************
70
71
72//*************************************************************************************************
77template< typename T >
78struct HasLog1pHelper< T, Void_t< decltype( log1p( std::declval<T>() ) ) > >
79 : public TrueType
80{};
82//*************************************************************************************************
83
84
85//*************************************************************************************************
106template< typename T, typename = void >
108 : public HasLog1pHelper<T>
109{};
110//*************************************************************************************************
111
112
113//*************************************************************************************************
118template< typename T >
119struct HasLog1p< T, EnableIf_t< IsVector_v<T> > >
120 : public HasLog1p< typename T::ElementType >
121{};
123//*************************************************************************************************
124
125
126//*************************************************************************************************
131template< typename T >
132struct HasLog1p< T, EnableIf_t< IsMatrix_v<T> > >
133 : public HasLog1p< typename T::ElementType >
134{};
136//*************************************************************************************************
137
138
139//*************************************************************************************************
152template< typename T >
154//*************************************************************************************************
155
156} // namespace blaze
157
158#endif
Header file for the EnableIf class template.
Header file for the IntegralConstant class template.
Header file for the IsMatrix type trait.
Header file for the IsVector type trait.
decltype(auto) log1p(const DenseMatrix< MT, SO > &dm)
Computes the natural logarithm of x+1 for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1983
constexpr bool HasLog1p_v
Auxiliary variable template for the HasLog1p type trait.
Definition: HasLog1p.h:153
constexpr bool IsVector_v
Auxiliary variable template for the IsVector type trait.
Definition: IsVector.h:125
constexpr bool IsMatrix_v
Auxiliary variable template for the IsMatrix type trait.
Definition: IsMatrix.h:124
void Void_t
Compile time type check.
Definition: Void.h:64
BoolConstant< true > TrueType
Type traits base class.
Definition: IntegralConstant.h:132
BoolConstant< false > FalseType
Type/value traits base class.
Definition: IntegralConstant.h:121
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Availability of the log1p() operation for the given data types.
Definition: HasLog1p.h:109
Header file for the Void type trait.