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_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_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_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 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_polar<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
tvmet::polar (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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>
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, 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_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_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_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>.
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>.


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: