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

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


Define Documentation

#define TVMET_DECLARE_MACRO ( NAME   ) 

Value:

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

#define TVMET_DECLARE_MACRO ( NAME,
TP   ) 

Value:

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

#define TVMET_DECLARE_MACRO ( NAME   ) 

Value:

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

#define TVMET_IMPLEMENT_MACRO ( NAME   ) 

Value:

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

#define TVMET_IMPLEMENT_MACRO ( NAME,
TP   ) 

Value:

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

#define TVMET_IMPLEMENT_MACRO ( NAME   ) 

Value:

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


Author: