BlackCat_Tensors
A GPU-supported autograd and linear algebra library, designed for neural network construction
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Macros | Functions
expression_operations.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define BC_SCALAR_COEFFICIENTWISE_DEF(op, op_functor)
 
#define BC_COEFFICIENTWISE_DEF(op, op_functor)
 
#define BC_SCALAR_COEFFICIENTWISE_DEF(op, op_functor)
 
#define BC_COEFFICIENTWISE_DEF(op, op_functor)
 

Functions

template<class Xpr >
auto operator+ (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator+ (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator+ (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator- (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator- (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator- (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator% (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator% (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator% (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator/ (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator/ (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator/ (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator== (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator== (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator== (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator> (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator> (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator> (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator< (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator< (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator< (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator>= (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator>= (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator>= (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator<= (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator<= (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator<= (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator&& (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator&& (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator&& (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator|| (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator|| (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator|| (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto approx_equal (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto approx_equal (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto approx_equal (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto max_value (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto max_value (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto max_value (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto min_value (const Expression_Base< Xpr > &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto min_value (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto min_value (const ScalarType &param, const Expression_Base &tensor)
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator* (const ScalarType &param) const
 
template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator* (const ScalarType &param, const Expression_Base &tensor)
 
template<class Xpr >
auto operator* (const Expression_Base< Xpr > &param) const
 
const auto transpose () const
 
const auto t () const
 
auto operator- () const
 
template<class functor >
auto un_expr (functor f) const
 
template<class Functor , class Xpr , class = std::enable_if_t< exprs::expression_traits<Xpr>::is_expression_template::value>>
auto bi_expr (Functor func, const Xpr &rv) const
 
template<class Xpr >
void assert_valid (const Expression_Base< Xpr > &tensor) const
 
template<class Xpr >
bool valid_slice (const Expression_Base< Xpr > &tensor) const
 

Macro Definition Documentation

◆ BC_COEFFICIENTWISE_DEF [1/2]

#define BC_COEFFICIENTWISE_DEF (   op,
  op_functor 
)
Value:
template<class Xpr> \
auto op (const Expression_Base<Xpr>& param) const \
{ \
assert_valid(param); \
return bi_expr(oper::op_functor(), param); \
} \
#define BC_SCALAR_COEFFICIENTWISE_DEF(op, op_functor)
auto bi_expr(Functor func, const Xpr &rv) const
Definition: expression_operations.h:115

◆ BC_COEFFICIENTWISE_DEF [2/2]

#define BC_COEFFICIENTWISE_DEF (   op,
  op_functor 
)
Value:
template<class Xpr> \
auto op (const Expression_Base<Xpr>& param) const \
{ \
assert_valid(param); \
return bi_expr(oper::op_functor(), param); \
} \
auto bi_expr(Functor func, const Xpr &rv) const
Definition: expression_operations.h:115
#define BC_SCALAR_COEFFICIENTWISE_DEF(op, op_functor)
Definition: expression_operations.h:1

◆ BC_SCALAR_COEFFICIENTWISE_DEF [1/2]

#define BC_SCALAR_COEFFICIENTWISE_DEF (   op,
  op_functor 
)
Value:
template< \
class ScalarType, \
class=std::enable_if_t< \
std::is_convertible<ScalarType, value_type>::value>> \
auto op (const ScalarType& param) const \
{ \
return bi_expr(oper::op_functor(), \
exprs::make_scalar_constant<system_tag>((value_type)param)); \
} \
\
template< \
class ScalarType, \
class=std::enable_if_t< \
std::is_convertible<ScalarType, value_type>::value>> \
friend auto op (const ScalarType& param, const Expression_Base& tensor) \
{ \
value_type value = param; \
auto scalar = exprs::make_scalar_constant<system_tag>(value); \
return make_expression(scalar).bi_expr(oper:: op_functor (), tensor); \
}
auto make_expression(ExpressionTemplate expression)
Definition: common.h:42
auto bi_expr(Functor func, const Xpr &rv) const
Definition: expression_operations.h:115

◆ BC_SCALAR_COEFFICIENTWISE_DEF [2/2]

#define BC_SCALAR_COEFFICIENTWISE_DEF (   op,
  op_functor 
)
Value:
template< \
class ScalarType, \
class=std::enable_if_t< \
std::is_convertible<ScalarType, value_type>::value>> \
auto op (const ScalarType& param) const \
{ \
return bi_expr(oper::op_functor(), \
exprs::make_scalar_constant<system_tag>((value_type)param)); \
} \
\
template< \
class ScalarType, \
class=std::enable_if_t< \
std::is_convertible<ScalarType, value_type>::value>> \
friend auto op (const ScalarType& param, const Expression_Base& tensor) \
{ \
value_type value = param; \
auto scalar = exprs::make_scalar_constant<system_tag>(value); \
return make_expression(scalar).bi_expr(oper:: op_functor (), tensor); \
}
auto make_expression(ExpressionTemplate expression)
Definition: common.h:42
auto bi_expr(Functor func, const Xpr &rv) const
Definition: expression_operations.h:115

Function Documentation

◆ approx_equal() [1/3]

template<class Xpr >
auto approx_equal ( const Expression_Base< Xpr > &  param) const

◆ approx_equal() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto approx_equal ( const ScalarType &  param) const

◆ approx_equal() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto approx_equal ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ assert_valid()

template<class Xpr >
void assert_valid ( const Expression_Base< Xpr > &  tensor) const

◆ bi_expr()

template<class Functor , class Xpr , class = std::enable_if_t< exprs::expression_traits<Xpr>::is_expression_template::value>>
auto bi_expr ( Functor  func,
const Xpr &  rv 
) const

◆ max_value() [1/3]

template<class Xpr >
auto max_value ( const Expression_Base< Xpr > &  param) const

◆ max_value() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto max_value ( const ScalarType &  param) const

◆ max_value() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto max_value ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ min_value() [1/3]

template<class Xpr >
auto min_value ( const Expression_Base< Xpr > &  param) const

◆ min_value() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto min_value ( const ScalarType &  param) const

◆ min_value() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto min_value ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator%() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator% ( const ScalarType &  param) const

◆ operator%() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator% ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator%() [3/3]

template<class Xpr >
auto operator% ( const Expression_Base< Xpr > &  param) const

◆ operator&&() [1/3]

template<class Xpr >
auto operator && ( const Expression_Base< Xpr > &  param) const

◆ operator&&() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator && ( const ScalarType &  param) const

◆ operator&&() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator && ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator*() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator* ( const ScalarType &  param) const

◆ operator*() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator* ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator*() [3/3]

template<class Xpr >
auto operator* ( const Expression_Base< Xpr > &  param) const

◆ operator+() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator+ ( const ScalarType &  param) const

◆ operator+() [2/3]

template<class Xpr >
auto operator+ ( const Expression_Base< Xpr > &  param) const

◆ operator+() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator+ ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator-() [1/4]

template<class Xpr >
auto operator- ( const Expression_Base< Xpr > &  param) const

◆ operator-() [2/4]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator- ( const ScalarType &  param) const

◆ operator-() [3/4]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator- ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator-() [4/4]

auto operator- ( ) const

◆ operator/() [1/3]

template<class Xpr >
auto operator/ ( const Expression_Base< Xpr > &  param) const

◆ operator/() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator/ ( const ScalarType &  param) const

◆ operator/() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator/ ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator<() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator< ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator<() [2/3]

template<class Xpr >
auto operator< ( const Expression_Base< Xpr > &  param) const

◆ operator<() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator< ( const ScalarType &  param) const

◆ operator<=() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator<= ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator<=() [2/3]

template<class Xpr >
auto operator<= ( const Expression_Base< Xpr > &  param) const

◆ operator<=() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator<= ( const ScalarType &  param) const

◆ operator==() [1/3]

template<class Xpr >
auto operator== ( const Expression_Base< Xpr > &  param) const

◆ operator==() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator== ( const ScalarType &  param) const

◆ operator==() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator== ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator>() [1/3]

template<class Xpr >
auto operator> ( const Expression_Base< Xpr > &  param) const

◆ operator>() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator> ( const ScalarType &  param) const

◆ operator>() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator> ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator>=() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator>= ( const ScalarType &  param) const

◆ operator>=() [2/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator>= ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ operator>=() [3/3]

template<class Xpr >
auto operator>= ( const Expression_Base< Xpr > &  param) const

◆ operator||() [1/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
auto operator|| ( const ScalarType &  param) const

◆ operator||() [2/3]

template<class Xpr >
auto operator|| ( const Expression_Base< Xpr > &  param) const

◆ operator||() [3/3]

template<class ScalarType , class = std::enable_if_t< std::is_convertible<ScalarType, value_type>::value>>
friend auto operator|| ( const ScalarType &  param,
const Expression_Base &  tensor 
)

◆ t()

auto t ( ) const

◆ transpose()

auto transpose ( ) const

◆ un_expr()

template<class functor >
auto un_expr ( functor  f) const

◆ valid_slice()

template<class Xpr >
bool valid_slice ( const Expression_Base< Xpr > &  tensor) const