1 #ifndef __DUNE_ACFEM_EXPRESSIONS_SIGN_HH__
2 #define __DUNE_ACFEM_EXPRESSIONS_SIGN_HH__
10 namespace Expressions {
27 template<
bool nonSingular,
bool semiPositive,
bool semiNegative,
28 std::ptrdiff_t offset = 0>
31 static constexpr
bool isNonSingular = nonSingular;
32 static constexpr
bool isSemiPositive = semiPositive;
33 static constexpr
bool isSemiNegative = semiNegative;
34 static constexpr
bool isZero = !isNonSingular && isSemiPositive && isSemiNegative;
35 static constexpr
bool isNonZero = nonSingular;
36 static constexpr
bool isPositive = isNonZero && isSemiPositive;
37 static constexpr
bool isNegative = isNonZero && isSemiNegative;
38 static constexpr std::ptrdiff_t reference = offset;
43 template<
bool nonSingular,
bool semiPositive,
bool semiNegative, s
size_t offset>
48 Sign::isSemiPositive && out <<
"(>=" << Sign::reference <<
")";
49 Sign::isSemiNegative && out <<
"(<=" << Sign::reference <<
")";
50 Sign::isZero && out <<
"(==" << Sign::reference <<
")";
51 Sign::isNonZero && out <<
"(!=" << Sign::reference <<
")";
52 Sign::isNonSingular && out <<
"(!/" << Sign::reference <<
")";
53 Sign::isPositive && out <<
"(>" << Sign::reference <<
")";
54 Sign::isNegative && out <<
"(<" << Sign::reference <<
")";
61 using Expressions::ExpressionSign;
std::ostream & operator<<(std::ostream &out, TypeString< T > &&t)
Output operator for TypePrint tag-structure.
Definition: ostream.hh:39
A class mainting the sign of an expression during operations.
Definition: sign.hh:30