19#ifdef TESSERACT_USE_FMAD
21template <
typename L,
typename R,
typename C>
28#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
31 const auto &mul = lhs.derived();
36template <
typename C,
typename L,
typename R>
43#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
46 const auto &mul = rhs.
derived();
51template <
typename L,
typename T,
typename C>
58#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
61 const auto &mul = lhs.
derived();
66template <
typename C,
typename L,
typename T>
73#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
76 const auto &mul = rhs.
derived();
81template <
typename L,
typename R,
typename T,
typename C>
88#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
91 const auto &neg = lhs.
derived();
92 const auto &mul = neg.expr();
97template <
typename L,
typename T1,
typename T2,
typename C>
104#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
107 const auto &neg = lhs.
derived();
108 const auto &mul = neg.expr();
117template <
typename L,
typename R,
typename C>
124#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
127 const auto &mul = lhs.
derived();
132template <
typename C,
typename L,
typename R>
139#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
142 const auto &mul = rhs.
derived();
147template <
typename L,
typename R,
typename T,
typename C>
154#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
157 const auto &neg = lhs.
derived();
158 const auto &mul = neg.expr();
163template <
typename L,
typename T1,
typename T2,
typename C>
170#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
173 const auto &neg = lhs.
derived();
174 const auto &mul = neg.expr();
179template <
typename L,
typename T,
typename C>
186#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
189 const auto &mul = lhs.
derived();
194template <
typename C,
typename L,
typename T>
201#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
204 const auto &mul = rhs.
derived();
213template <
typename LHS,
typename RHS>
218#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
224template <
typename LHS,
typename RHS>
229#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
235template <
typename LHS,
typename RHS>
244#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
250template <
typename LHS,
typename RHS>
259#if defined(RUNTIME_CHECK_DIMENSIONS_COUNT_MISMATCH) || defined(RUNTIME_CHECK_DIMENSIONS_SIZE_MISMATCH)
266template <
typename LHS,
typename T>
268 !is_base_of_v<detail::BaseExprTag, T>)
276template <
typename RHS,
typename T>
278 !is_base_of_v<detail::BaseExprTag, T>)
286template <
typename RHS>
291 using T =
typename RHS::value_type;
296template <
typename LHS,
typename T>
298 !is_base_of_v<detail::BaseExprTag, T>)
306template <
typename RHS,
typename T>
308 !is_base_of_v<detail::BaseExprTag, T>)
316template <
typename LHS,
typename T>
318 !is_base_of_v<detail::BaseExprTag, T>)
326template <
typename RHS,
typename T>
328 !is_base_of_v<detail::BaseExprTag, T>)
336template <
typename LHS,
typename T>
338 !is_base_of_v<detail::BaseExprTag, T>)
346template <
typename RHS,
typename T>
348 !is_base_of_v<detail::BaseExprTag, T>)
const Derived & derived() const
Definition BaseExpr.h:17
Definition BinaryExpr.h:15
Definition ScalarExpr.h:95
Definition ScalarExpr.h:14
Global configuration for the tesseract tensor library.
#define TESSERACT_CONDITIONAL_NOEXCEPT
Definition config.h:56
constexpr bool is_vector_space_v
Definition basic_algebraic_traits.h:123
void checkDimsMatch(const Expr1 &lhs, const Expr2 &rhs, const char *opName) TESSERACT_CONDITIONAL_NOEXCEPT
Definition operators_common.h:5
Definition Operations.h:109