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_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_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_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 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 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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>
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, 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_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_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_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_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: