tesseract++ 0.0.1
N-dimensional tensor library for embedded systems
Loading...
Searching...
No Matches
Functions
arithmetic.h File Reference
#include "config.h"
#include "fused/BinaryExpr.h"
#include "fused/ScalarExpr.h"
#include "fused/FmaExpr.h"
#include "fused/Operations.h"
#include "fused/operators/operators_common.h"
#include "simple_type_traits.h"
#include "algebra/algebraic_traits.h"
Include dependency graph for arithmetic.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

template<typename LHS , typename RHS >
requires (algebra::is_vector_space_v<LHS> && algebra::is_vector_space_v<RHS>)
BinaryExpr< LHS, RHS, Addoperator+ (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, Suboperator- (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, Muloperator* (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, Divoperator/ (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, Addoperator+ (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, Addoperator+ (T scalar, const BaseExpr< RHS > &rhs) noexcept
 
template<typename RHS >
requires (algebra::is_vector_space_v<RHS>)
ScalarExprLHS< RHS, typename RHS::value_type, Suboperator- (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, Suboperator- (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, Suboperator- (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, Muloperator* (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, Muloperator* (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, Divoperator/ (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, Divoperator/ (T scalar, const BaseExpr< RHS > &rhs) noexcept
 

Function Documentation

◆ operator*() [1/3]

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 
)
Here is the call graph for this function:

◆ operator*() [2/3]

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,
scalar 
)
noexcept
Here is the call graph for this function:

◆ operator*() [3/3]

template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>)
ScalarExprRHS< RHS, T, Mul > operator* ( scalar,
const BaseExpr< RHS > &  rhs 
)
noexcept
Here is the call graph for this function:

◆ operator+() [1/3]

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 
)
Here is the call graph for this function:

◆ operator+() [2/3]

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,
scalar 
)
noexcept
Here is the call graph for this function:

◆ operator+() [3/3]

template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>)
ScalarExprRHS< RHS, T, Add > operator+ ( scalar,
const BaseExpr< RHS > &  rhs 
)
noexcept
Here is the call graph for this function:

◆ operator-() [1/4]

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 
)
Here is the call graph for this function:

◆ operator-() [2/4]

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,
scalar 
)
noexcept
Here is the call graph for this function:

◆ operator-() [3/4]

template<typename RHS >
requires (algebra::is_vector_space_v<RHS>)
ScalarExprLHS< RHS, typename RHS::value_type, Sub > operator- ( const BaseExpr< RHS > &  expr)
noexcept
Here is the call graph for this function:

◆ operator-() [4/4]

template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>)
ScalarExprLHS< RHS, T, Sub > operator- ( scalar,
const BaseExpr< RHS > &  rhs 
)
noexcept
Here is the call graph for this function:

◆ operator/() [1/3]

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 
)
Here is the call graph for this function:

◆ operator/() [2/3]

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,
scalar 
)
noexcept
Here is the call graph for this function:

◆ operator/() [3/3]

template<typename RHS , typename T >
requires (algebra::is_vector_space_v<RHS> && !is_base_of_v<detail::BaseExprTag, T>)
ScalarExprLHS< RHS, T, Div > operator/ ( scalar,
const BaseExpr< RHS > &  rhs 
)
noexcept
Here is the call graph for this function: