|
template<typename LHS , typename RHS >
requires (algebra::is_vector_space_v<LHS> && algebra::is_vector_space_v<RHS>) |
| BinaryExpr< LHS, RHS, Add > | operator+ (const BaseExpr< LHS > &lhs, const BaseExpr< RHS > &rhs) TESSERACT_CONDITIONAL_NOEXCEPT |
| |
template<typename LHS , typename RHS >
requires (algebra::is_vector_space_v<LHS> && algebra::is_vector_space_v<RHS>) |
| BinaryExpr< LHS, RHS, Sub > | operator- (const BaseExpr< LHS > &lhs, const BaseExpr< RHS > &rhs) TESSERACT_CONDITIONAL_NOEXCEPT |
| |
template<typename LHS , typename RHS >
requires ( // for Hadamard product only it must be tensors, not general algebras algebra::is_tensor_v<LHS> && algebra::is_tensor_v<RHS> && !algebra::is_algebra_v<LHS> && !algebra::is_algebra_v<RHS>) |
| BinaryExpr< LHS, RHS, Mul > | operator* (const BaseExpr< LHS > &lhs, const BaseExpr< RHS > &rhs) TESSERACT_CONDITIONAL_NOEXCEPT |
| |
template<typename LHS , typename RHS >
requires ( // for Hadamard product (element-wise division) only it must be tensors, not general algebras algebra::is_tensor_v<LHS> && algebra::is_tensor_v<RHS> && !algebra::is_algebra_v<LHS> && !algebra::is_algebra_v<RHS>) |
| BinaryExpr< LHS, RHS, Div > | operator/ (const BaseExpr< LHS > &lhs, const BaseExpr< RHS > &rhs) TESSERACT_CONDITIONAL_NOEXCEPT |
| |
template<typename LHS , typename T >
requires (algebra::is_vector_space_v<LHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprRHS< LHS, T, Add > | operator+ (const BaseExpr< LHS > &lhs, T scalar) noexcept |
| |
template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprRHS< RHS, T, Add > | operator+ (T scalar, const BaseExpr< RHS > &rhs) noexcept |
| |
template<typename RHS >
requires (algebra::is_vector_space_v<RHS>) |
| ScalarExprLHS< RHS, typename RHS::value_type, Sub > | operator- (const BaseExpr< RHS > &expr) noexcept |
| |
template<typename LHS , typename T >
requires (algebra::is_vector_space_v<LHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprRHS< LHS, T, Sub > | operator- (const BaseExpr< LHS > &lhs, T scalar) noexcept |
| |
template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprLHS< RHS, T, Sub > | operator- (T scalar, const BaseExpr< RHS > &rhs) noexcept |
| |
template<typename LHS , typename T >
requires (algebra::is_vector_space_v<LHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprRHS< LHS, T, Mul > | operator* (const BaseExpr< LHS > &lhs, T scalar) noexcept |
| |
template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprRHS< RHS, T, Mul > | operator* (T scalar, const BaseExpr< RHS > &rhs) noexcept |
| |
template<typename LHS , typename T >
requires (algebra::is_vector_space_v<LHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprRHS< LHS, T, Div > | operator/ (const BaseExpr< LHS > &lhs, T scalar) noexcept |
| |
template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>) |
| ScalarExprLHS< RHS, T, Div > | operator/ (T scalar, const BaseExpr< RHS > &rhs) noexcept |
| |