MatrixExpression.hpp File Reference
#include <Core/Utils/Functors.hpp>
#include <functional>
#include <Core/Matrix/MatrixExpression-Impl.hpp>

Go to the source code of this file.

Classes

struct  CubbyFlow::TraitIsMatrixSizeDynamic< Rows, Cols >
 
struct  CubbyFlow::TraitIsMatrixSizeStatic< Rows, Cols >
 
struct  CubbyFlow::TraitIsMatrixSizeSquare< Rows, Cols >
 
class  CubbyFlow::Matrix< T, Rows, Cols >
 
class  CubbyFlow::MatrixDiagonal< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixOffDiagonal< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixTri< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixTranspose< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixUnaryOp< T, Rows, Cols, M1, UnaryOperation >
 
class  CubbyFlow::MatrixScalarElemWiseBinaryOp< T, Rows, Cols, M1, BinaryOperation >
 
class  CubbyFlow::MatrixExpression< T, Rows, Cols, Derived >
 Base class for matrix expression. More...
 
class  CubbyFlow::MatrixConstant< T, Rows, Cols >
 
class  CubbyFlow::MatrixDiagonal< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixOffDiagonal< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixTri< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixTranspose< T, Rows, Cols, M1 >
 
class  CubbyFlow::MatrixUnaryOp< T, Rows, Cols, M1, UnaryOperation >
 
class  CubbyFlow::MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, BinaryOperation >
 Matrix expression for element-wise binary operation. More...
 
class  CubbyFlow::MatrixScalarElemWiseBinaryOp< T, Rows, Cols, M1, BinaryOperation >
 
class  CubbyFlow::ScalarMatrixElemWiseBinaryOp< T, Rows, Cols, M2, BinaryOperation >
 
class  CubbyFlow::MatrixTernaryOp< T, Rows, Cols, M1, M2, M3, TernaryOperation >
 
class  CubbyFlow::MatrixMul< T, Rows, Cols, M1, M2 >
 

Namespaces

 CubbyFlow
 

Typedefs

template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixNegate = MatrixUnaryOp< T, Rows, Cols, M1, std::negate< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixCeil = MatrixUnaryOp< T, Rows, Cols, M1, DoCeil< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixFloor = MatrixUnaryOp< T, Rows, Cols, M1, DoFloor< T > >
 
template<typename T , size_t Rows, size_t Cols, typename U , typename M1 >
using CubbyFlow::MatrixTypeCast = MatrixUnaryOp< U, Rows, Cols, M1, TypeCast< T, U > >
 
template<typename T , size_t Rows, size_t Cols, typename E1 , typename E2 >
using CubbyFlow::MatrixElemWiseAdd = MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, std::plus< T > >
 Matrix expression for element-wise matrix-matrix addition. More...
 
template<typename T , size_t Rows, size_t Cols, typename E1 , typename E2 >
using CubbyFlow::MatrixElemWiseSub = MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, std::minus< T > >
 Matrix expression for element-wise matrix-matrix subtraction. More...
 
template<typename T , size_t Rows, size_t Cols, typename E1 , typename E2 >
using CubbyFlow::MatrixElemWiseMul = MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, std::multiplies< T > >
 Matrix expression for element-wise matrix-matrix multiplication. More...
 
template<typename T , size_t Rows, size_t Cols, typename E1 , typename E2 >
using CubbyFlow::MatrixElemWiseDiv = MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, std::divides< T > >
 Matrix expression for element-wise matrix-matrix division. More...
 
template<typename T , size_t Rows, size_t Cols, typename E1 , typename E2 >
using CubbyFlow::MatrixElemWiseMin = MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, DoMin< T > >
 Matrix expression for element-wise matrix-matrix min operation. More...
 
template<typename T , size_t Rows, size_t Cols, typename E1 , typename E2 >
using CubbyFlow::MatrixElemWiseMax = MatrixElemWiseBinaryOp< T, Rows, Cols, E1, E2, DoMax< T > >
 Matrix expression for element-wise matrix-matrix max operation. More...
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixScalarElemWiseAdd = MatrixScalarElemWiseBinaryOp< T, Rows, Cols, M1, std::plus< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixScalarElemWiseSub = MatrixScalarElemWiseBinaryOp< T, Rows, Cols, M1, std::minus< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixScalarElemWiseMul = MatrixScalarElemWiseBinaryOp< T, Rows, Cols, M1, std::multiplies< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
using CubbyFlow::MatrixScalarElemWiseDiv = MatrixScalarElemWiseBinaryOp< T, Rows, Cols, M1, std::divides< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
using CubbyFlow::ScalarMatrixElemWiseAdd = ScalarMatrixElemWiseBinaryOp< T, Rows, Cols, M2, std::plus< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
using CubbyFlow::ScalarMatrixElemWiseSub = ScalarMatrixElemWiseBinaryOp< T, Rows, Cols, M2, std::minus< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
using CubbyFlow::ScalarMatrixElemWiseMul = ScalarMatrixElemWiseBinaryOp< T, Rows, Cols, M2, std::multiplies< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
using CubbyFlow::ScalarMatrixElemWiseDiv = ScalarMatrixElemWiseBinaryOp< T, Rows, Cols, M2, std::divides< T > >
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 , typename M3 >
using CubbyFlow::MatrixClamp = MatrixTernaryOp< T, Rows, Cols, M1, M2, M3, DoClamp< T > >
 

Functions

template<size_t Rows, size_t Cols>
constexpr bool CubbyFlow::IsMatrixSizeDynamic ()
 
template<size_t Rows, size_t Cols>
constexpr bool CubbyFlow::IsMatrixSizeStatic ()
 
template<size_t Rows, size_t Cols>
constexpr bool CubbyFlow::IsMatrixStaticSquare ()
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::Ceil (const MatrixExpression< T, Rows, Cols, M1 > &a)
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::Floor (const MatrixExpression< T, Rows, Cols, M1 > &a)
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::operator- (const MatrixExpression< T, Rows, Cols, M1 > &m)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 >
constexpr auto CubbyFlow::operator+ (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 >
constexpr auto CubbyFlow::operator- (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 >
constexpr auto CubbyFlow::ElemMul (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 >
constexpr auto CubbyFlow::ElemDiv (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 >
constexpr auto CubbyFlow::Min (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 >
constexpr auto CubbyFlow::Max (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::operator+ (const MatrixExpression< T, Rows, Cols, M1 > &a, const T &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::operator- (const MatrixExpression< T, Rows, Cols, M1 > &a, const T &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::operator* (const MatrixExpression< T, Rows, Cols, M1 > &a, const T &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 >
constexpr auto CubbyFlow::operator/ (const MatrixExpression< T, Rows, Cols, M1 > &a, const T &b)
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
constexpr auto CubbyFlow::operator+ (const T &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
constexpr auto CubbyFlow::operator- (const T &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
constexpr auto CubbyFlow::operator* (const T &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M2 >
constexpr auto CubbyFlow::operator/ (const T &a, const MatrixExpression< T, Rows, Cols, M2 > &b)
 
template<typename T , size_t Rows, size_t Cols, typename M1 , typename M2 , typename M3 >
auto CubbyFlow::Clamp (const MatrixExpression< T, Rows, Cols, M1 > &a, const MatrixExpression< T, Rows, Cols, M2 > &low, const MatrixExpression< T, Rows, Cols, M3 > &high)
 
template<typename T , size_t R1, size_t C1, size_t R2, size_t C2, typename M1 , typename M2 >
auto CubbyFlow::operator* (const MatrixExpression< T, R1, C1, M1 > &a, const MatrixExpression< T, R2, C2, M2 > &b)