SourceForge Logo Tiny Vector Matrix library using Expression Templates Sourceforge Project Page

include/tvmet/xpr/MatrixBinaryFunctions.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  tvmet

Defines

#define TVMET_DECLARE_MACRO(NAME)
#define TVMET_DECLARE_MACRO(NAME, TP)
#define TVMET_DECLARE_MACRO(NAME)
#define TVMET_IMPLEMENT_MACRO(NAME)
#define TVMET_IMPLEMENT_MACRO(NAME, TP)
#define TVMET_IMPLEMENT_MACRO(NAME)

Functions

template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp
< Fcnl_atan2< typename
E1::value_type, typename
E2::value_type >, XprMatrix
< E1, Rows, Cols >, XprMatrix
< E2, Rows, Cols > >, Rows,
Cols > 
tvmet::atan2 (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function for two XprMatrix.
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_fmod
< typename E1::value_type,
typename E2::value_type >
, XprMatrix< E1, Rows, Cols >
, XprMatrix< E2, Rows, Cols >
>, Rows, Cols > 
tvmet::fmod (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function for two XprMatrix.
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_pow
< typename E1::value_type,
typename E2::value_type >
, XprMatrix< E1, Rows, Cols >
, XprMatrix< E2, Rows, Cols >
>, Rows, Cols > 
tvmet::pow (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 power function for two XprMatrix.
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_drem
< typename E1::value_type,
typename E2::value_type >
, XprMatrix< E1, Rows, Cols >
, XprMatrix< E2, Rows, Cols >
>, Rows, Cols > 
tvmet::drem (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function for two XprMatrix.
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp
< Fcnl_hypot< typename
E1::value_type, typename
E2::value_type >, XprMatrix
< E1, Rows, Cols >, XprMatrix
< E2, Rows, Cols > >, Rows,
Cols > 
tvmet::hypot (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function for two XprMatrix.
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_jn
< typename E1::value_type,
typename E2::value_type >
, XprMatrix< E1, Rows, Cols >
, XprMatrix< E2, Rows, Cols >
>, Rows, Cols > 
tvmet::jn (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function for two XprMatrix.
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_yn
< typename E1::value_type,
typename E2::value_type >
, XprMatrix< E1, Rows, Cols >
, XprMatrix< E2, Rows, Cols >
>, Rows, Cols > 
tvmet::yn (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function for two XprMatrix.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_atan2< typename
E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::atan2 (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_fmod
< typename E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::fmod (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_pow
< typename E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::pow (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 power function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_drem
< typename E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::drem (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_hypot< typename
E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::hypot (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_jn
< typename E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::jn (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_yn
< typename E::value_type, int >
, XprMatrix< E, Rows, Cols >
, XprLiteral< int > >, Rows,
Cols > 
tvmet::yn (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and int.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_atan2< typename
E::value_type, float >
, XprMatrix< E, Rows, Cols >
, XprLiteral< float > >, Rows,
Cols > 
tvmet::atan2 (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_fmod
< typename E::value_type,
float >, XprMatrix< E, Rows,
Cols >, XprLiteral< float >
>, Rows, Cols > 
tvmet::fmod (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_pow
< typename E::value_type,
float >, XprMatrix< E, Rows,
Cols >, XprLiteral< float >
>, Rows, Cols > 
tvmet::pow (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 power function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_drem
< typename E::value_type,
float >, XprMatrix< E, Rows,
Cols >, XprLiteral< float >
>, Rows, Cols > 
tvmet::drem (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_hypot< typename
E::value_type, float >
, XprMatrix< E, Rows, Cols >
, XprLiteral< float > >, Rows,
Cols > 
tvmet::hypot (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_jn
< typename E::value_type,
float >, XprMatrix< E, Rows,
Cols >, XprLiteral< float >
>, Rows, Cols > 
tvmet::jn (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_yn
< typename E::value_type,
float >, XprMatrix< E, Rows,
Cols >, XprLiteral< float >
>, Rows, Cols > 
tvmet::yn (const XprMatrix< E, Rows, Cols > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and float.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_atan2< typename
E::value_type, double >
, XprMatrix< E, Rows, Cols >
, XprLiteral< double > >, Rows,
Cols > 
tvmet::atan2 (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_fmod
< typename E::value_type,
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< double >
>, Rows, Cols > 
tvmet::fmod (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_pow
< typename E::value_type,
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< double >
>, Rows, Cols > 
tvmet::pow (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 power function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_drem
< typename E::value_type,
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< double >
>, Rows, Cols > 
tvmet::drem (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_hypot< typename
E::value_type, double >
, XprMatrix< E, Rows, Cols >
, XprLiteral< double > >, Rows,
Cols > 
tvmet::hypot (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_jn
< typename E::value_type,
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< double >
>, Rows, Cols > 
tvmet::jn (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_yn
< typename E::value_type,
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< double >
>, Rows, Cols > 
tvmet::yn (const XprMatrix< E, Rows, Cols > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_atan2< typename
E::value_type, long double >
, XprMatrix< E, Rows, Cols >
, XprLiteral< long double >
>, Rows, Cols > 
tvmet::atan2 (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_fmod
< typename E::value_type, long
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< long
double > >, Rows, Cols > 
tvmet::fmod (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_pow
< typename E::value_type, long
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< long
double > >, Rows, Cols > 
tvmet::pow (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 power function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_drem
< typename E::value_type, long
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< long
double > >, Rows, Cols > 
tvmet::drem (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp
< Fcnl_hypot< typename
E::value_type, long double >
, XprMatrix< E, Rows, Cols >
, XprLiteral< long double >
>, Rows, Cols > 
tvmet::hypot (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_jn
< typename E::value_type, long
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< long
double > >, Rows, Cols > 
tvmet::jn (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_yn
< typename E::value_type, long
double >, XprMatrix< E, Rows,
Cols >, XprLiteral< long
double > >, Rows, Cols > 
tvmet::yn (const XprMatrix< E, Rows, Cols > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and long double.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp
< Fcnl_atan2< typename
E::value_type, std::complex< T >
>, XprMatrix< E, Rows, Cols >
, XprLiteral< std::complex< T >
> >, Rows, Cols > 
tvmet::atan2 (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function between XprMatrix and std::complex<T>.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp< Fcnl_fmod
< typename E::value_type,
std::complex< T > >, XprMatrix
< E, Rows, Cols >, XprLiteral
< std::complex< T > > >, Rows,
Cols > 
tvmet::fmod (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and std::complex<T>.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp< Fcnl_pow
< typename E::value_type,
std::complex< T > >, XprMatrix
< E, Rows, Cols >, XprLiteral
< std::complex< T > > >, Rows,
Cols > 
tvmet::pow (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 power function between XprMatrix and std::complex<T>.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp< Fcnl_drem
< typename E::value_type,
std::complex< T > >, XprMatrix
< E, Rows, Cols >, XprLiteral
< std::complex< T > > >, Rows,
Cols > 
tvmet::drem (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function between XprMatrix and std::complex<T>.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp
< Fcnl_hypot< typename
E::value_type, std::complex< T >
>, XprMatrix< E, Rows, Cols >
, XprLiteral< std::complex< T >
> >, Rows, Cols > 
tvmet::hypot (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function between XprMatrix and std::complex<T>.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp< Fcnl_jn
< typename E::value_type,
std::complex< T > >, XprMatrix
< E, Rows, Cols >, XprLiteral
< std::complex< T > > >, Rows,
Cols > 
tvmet::jn (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and std::complex<T>.
template<class E, std::size_t Rows, std::size_t Cols, class T>
XprMatrix< XprBinOp< Fcnl_yn
< typename E::value_type,
std::complex< T > >, XprMatrix
< E, Rows, Cols >, XprLiteral
< std::complex< T > > >, Rows,
Cols > 
tvmet::yn (const XprMatrix< E, Rows, Cols > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function between XprMatrix and std::complex<T>.


Define Documentation

#define TVMET_DECLARE_MACRO ( NAME   ) 

Value:

template<class E, std::size_t Rows, std::size_t Cols, class T>  \
XprMatrix<              \
  XprBinOp<             \
    Fcnl_##NAME<typename E::value_type, std::complex<T> >,  \
    XprMatrix<E, Rows, Cols>,         \
    XprLiteral< std::complex<T> >       \
  >,                \
  Rows, Cols              \
>               \
NAME(const XprMatrix<E, Rows, Cols>& lhs,       \
     const std::complex<T>& rhs) TVMET_CXX_ALWAYS_INLINE;

#define TVMET_DECLARE_MACRO ( NAME,
TP   ) 

Value:

template<class E, std::size_t Rows, std::size_t Cols> \
XprMatrix<            \
  XprBinOp<           \
    Fcnl_##NAME<typename E::value_type, TP >,   \
    XprMatrix<E, Rows, Cols>,       \
    XprLiteral< TP >          \
  >,              \
  Rows, Cols            \
>             \
NAME(const XprMatrix<E, Rows, Cols>& lhs,     \
     TP rhs) TVMET_CXX_ALWAYS_INLINE;

#define TVMET_DECLARE_MACRO ( NAME   ) 

Value:

template<class E1, std::size_t Rows, std::size_t Cols, class E2>  \
XprMatrix<                \
  XprBinOp<               \
    Fcnl_##NAME<typename E1::value_type, typename E2::value_type>,  \
    XprMatrix<E1, Rows, Cols>,            \
    XprMatrix<E2, Rows, Cols>           \
  >,                  \
  Rows, Cols                \
>                 \
NAME(const XprMatrix<E1, Rows, Cols>& lhs,        \
     const XprMatrix<E2, Rows, Cols>& rhs) TVMET_CXX_ALWAYS_INLINE;

#define TVMET_IMPLEMENT_MACRO ( NAME   ) 

Value:

template<class E, std::size_t Rows, std::size_t Cols, class T>    \
inline                  \
XprMatrix<                \
  XprBinOp<               \
    Fcnl_##NAME<typename E::value_type, std::complex<T> >,    \
    XprMatrix<E, Rows, Cols>,           \
    XprLiteral< std::complex<T> >         \
  >,                  \
  Rows, Cols                \
>                 \
NAME(const XprMatrix<E, Rows, Cols>& lhs, const std::complex<T>& rhs) { \
  typedef XprBinOp<             \
    Fcnl_##NAME<typename E::value_type, std::complex<T> >,    \
    XprMatrix<E, Rows, Cols>,           \
    XprLiteral< std::complex<T> >         \
  >             expr_type;  \
  return XprMatrix<expr_type, Rows, Cols>(        \
    expr_type(lhs, XprLiteral< std::complex<T> >(rhs)));    \
}

#define TVMET_IMPLEMENT_MACRO ( NAME,
TP   ) 

Value:

template<class E, std::size_t Rows, std::size_t Cols>     \
inline                  \
XprMatrix<                \
  XprBinOp<               \
    Fcnl_##NAME<typename E::value_type, TP >,       \
    XprMatrix<E, Rows, Cols>,           \
    XprLiteral< TP >              \
  >,                  \
  Rows, Cols                \
>                 \
NAME(const XprMatrix<E, Rows, Cols>& lhs, TP rhs) {     \
  typedef XprBinOp<             \
    Fcnl_##NAME<typename E::value_type, TP >,       \
    XprMatrix<E, Rows, Cols>,           \
    XprLiteral< TP >              \
  >             expr_type;  \
  return XprMatrix<expr_type, Rows, Cols>(        \
    expr_type(lhs, XprLiteral< TP >(rhs)));       \
}

#define TVMET_IMPLEMENT_MACRO ( NAME   ) 

Value:

template<class E1, std::size_t Rows, std::size_t Cols, class E2>      \
inline                      \
XprMatrix<                    \
  XprBinOp<                   \
    Fcnl_##NAME<typename E1::value_type, typename E2::value_type>,      \
    XprMatrix<E1, Rows, Cols>,                \
    XprMatrix<E2, Rows, Cols>               \
  >,                      \
  Rows, Cols                    \
>                     \
NAME(const XprMatrix<E1, Rows, Cols>& lhs, const XprMatrix<E2, Rows, Cols>& rhs) {  \
  typedef XprBinOp<                 \
    Fcnl_##NAME<typename E1::value_type, typename E2::value_type>,      \
    XprMatrix<E1, Rows, Cols>,                \
    XprMatrix<E2, Rows, Cols>               \
  >                 expr_type;      \
  return XprMatrix<expr_type, Rows, Cols>(            \
    expr_type(lhs, rhs));               \
}


Author: