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

include/tvmet/VectorBinaryFunctions.h File Reference

#include <tvmet/NumericTraits.h>
#include <tvmet/Extremum.h>

Include dependency graph for VectorBinaryFunctions.h:

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_IMPLEMENT_MACRO(NAME)
#define TVMET_IMPLEMENT_MACRO(NAME, TP)

Functions

template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::atan2 (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< typename
E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::atan2 (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< T, typename
E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::atan2 (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function on Vector and XprVector.
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::fmod (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< typename E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::fmod (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< T, typename E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::fmod (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and XprVector.
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::pow (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 power function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< typename E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::pow (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 power function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T, typename E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::pow (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 power function on Vector and XprVector.
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::drem (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< typename E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::drem (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< T, typename E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::drem (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and XprVector.
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::hypot (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< typename
E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::hypot (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< T, typename
E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::hypot (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function on Vector and XprVector.
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::jn (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< typename E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::jn (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< T, typename E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::jn (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and XprVector.
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< T1, T2 >
, VectorConstReference< T1, Sz >
, VectorConstReference< T2, Sz >
>, Sz > 
tvmet::yn (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function for two Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< typename E::value_type, T >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::yn (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on XprVector and Vector.
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< T, typename E::value_type >
, VectorConstReference< T, Sz >
, XprVector< E, Sz > >, Sz > 
tvmet::yn (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and XprVector.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::atan2 (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::fmod (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::pow (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 power function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::drem (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::hypot (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::jn (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< T, int >
, VectorConstReference< T, Sz >
, XprLiteral< int > >, Sz > 
tvmet::yn (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and int.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::atan2 (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::fmod (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::pow (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 power function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::drem (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::hypot (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::jn (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< T, float >
, VectorConstReference< T, Sz >
, XprLiteral< float > >, Sz > 
tvmet::yn (const Vector< T, Sz > &lhs, float rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and float.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::atan2 (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::fmod (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::pow (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 power function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::drem (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::hypot (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::jn (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< T, double >
, VectorConstReference< T, Sz >
, XprLiteral< double > >, Sz > 
tvmet::yn (const Vector< T, Sz > &lhs, double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and double.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_atan2< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::atan2 (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 arcus tangent of two variables function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_fmod
< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::fmod (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::pow (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 power function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_drem
< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::drem (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 floating-point remainder function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_hypot< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::hypot (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 Euclidean distance function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_jn
< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::jn (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_yn
< T, long double >
, VectorConstReference< T, Sz >
, XprLiteral< long double >
>, Sz > 
tvmet::yn (const Vector< T, Sz > &lhs, long double rhs) TVMET_CXX_ALWAYS_INLINE
 Bessel function on Vector and long double.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< T, std::complex< T >
>, VectorConstReference< T,
Sz >, XprLiteral< std::complex
< T > > >, Sz > 
tvmet::pow (const Vector< T, Sz > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
 power function on Vector and std::complex<T>.
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< std::complex< T >
, std::complex< T >
>, VectorConstReference
< std::complex< T >, Sz >
, XprLiteral< std::complex< T >
> >, Sz > 
tvmet::pow (const Vector< std::complex< T >, Sz > &lhs, const std::complex< T > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< std::complex< T >, T >
, VectorConstReference
< std::complex< T >, Sz >
, XprLiteral< T > >, Sz > 
tvmet::pow (const Vector< std::complex< T >, Sz > &lhs, const T &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_pow
< std::complex< T >, int >
, VectorConstReference
< std::complex< T >, Sz >
, XprLiteral< int > >, Sz > 
tvmet::pow (const Vector< std::complex< T >, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp
< Fcnl_polar< T, T >
, VectorConstReference< T, Sz >
, XprLiteral< T > >, Sz > 
tvmet::polar (const Vector< T, Sz > &lhs, const T &rhs) TVMET_CXX_ALWAYS_INLINE


Define Documentation

#define TVMET_DECLARE_MACRO ( NAME,
TP   ) 

Value:

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

#define TVMET_DECLARE_MACRO ( NAME   ) 

#define TVMET_IMPLEMENT_MACRO ( NAME,
TP   ) 

Value:

template<class T, std::size_t Sz>         \
inline                  \
XprVector<                \
  XprBinOp<               \
    Fcnl_##NAME<T, TP >,            \
    VectorConstReference<T, Sz>,          \
    XprLiteral< TP >              \
  >,                  \
  Sz                  \
>                 \
NAME(const Vector<T, Sz>& lhs, TP rhs) {        \
  typedef XprBinOp<             \
    Fcnl_##NAME<T, TP >,            \
    VectorConstReference<T, Sz>,          \
    XprLiteral< TP >              \
  >             expr_type;  \
  return XprVector<expr_type, Sz>(          \
    expr_type(lhs.const_ref(), XprLiteral< TP >(rhs)));     \
}

#define TVMET_IMPLEMENT_MACRO ( NAME   ) 


Author: