// @(#)root/smatrix:$Name: $:$Id: BinaryOperators.h,v 1.2 2006/02/08 14:45:35 moneta Exp $ // Authors: T. Glebe, L. Moneta 2005 #ifndef ROOT_Math_BinaryOperators #define ROOT_Math_BinaryOperators //====================================================== // // ATTENTION: This file was automatically generated, // do not edit! // // author: Thorsten Glebe // HERA-B Collaboration // Max-Planck-Institut fuer Kernphysik // Saupfercheckweg 1 // 69117 Heidelberg // Germany // E-mail: T.Glebe@mpi-hd.mpg.de // //====================================================== #include "Math/BinaryOpPolicy.h" namespace ROOT { namespace Math { template class SVector; template class SMatrix; //============================================================================== // AddOp //============================================================================== template class AddOp { public: static inline T apply(const T& lhs, const T& rhs) { return lhs + rhs; } }; //============================================================================== // operator+ (SVector, binary) //============================================================================== template < class T, unsigned int D> inline VecExpr, SVector, SVector, T>, T, D> operator+(const SVector& lhs, const SVector& rhs) { typedef BinaryOp, SVector, SVector, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SVector, binary) //============================================================================== template inline VecExpr, VecExpr, SVector, T>, T, D> operator+(const VecExpr& lhs, const SVector& rhs) { typedef BinaryOp, VecExpr, SVector, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SVector, binary) //============================================================================== template < class A, class T, unsigned int D> inline VecExpr, SVector, VecExpr, T>, T, D> operator+(const SVector& lhs, const VecExpr& rhs) { typedef BinaryOp, SVector, VecExpr, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SVector, binary) //============================================================================== template inline VecExpr, VecExpr, VecExpr, T>, T, D> operator+(const VecExpr& lhs, const VecExpr& rhs) { typedef BinaryOp, VecExpr, VecExpr, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SVector, binary, Constant) //============================================================================== template inline VecExpr, SVector, Constant, T>, T, D> operator+(const SVector& lhs, const A& rhs) { typedef BinaryOp, SVector, Constant, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),lhs,Constant(rhs))); } //============================================================================== // operator+ (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, SVector, T>, T, D> operator+(const A& lhs, const SVector& rhs) { typedef BinaryOp, Constant, SVector, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),Constant(lhs),rhs)); } //============================================================================== // operator+ (SVector, binary, Constant) //============================================================================== template inline VecExpr, VecExpr, Constant, T>, T, D> operator+(const VecExpr& lhs, const A& rhs) { typedef BinaryOp, VecExpr, Constant, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),lhs,Constant(rhs))); } //============================================================================== // operator+ (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, VecExpr, T>, T, D> operator+(const A& lhs, const VecExpr& rhs) { typedef BinaryOp, Constant, VecExpr, T> AddOpBinOp; return VecExpr(AddOpBinOp(AddOp(),Constant(lhs),rhs)); } //============================================================================== // operator+ (SMatrix, binary) //============================================================================== template < class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType > operator+(const SMatrix& lhs, const SMatrix& rhs) { typedef BinaryOp, SMatrix, SMatrix, T> AddOpBinOp; return Expr::RepType>(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SMatrix, binary) //============================================================================== template inline Expr, Expr, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> operator+(const Expr& lhs, const SMatrix& rhs) { typedef BinaryOp, Expr, SMatrix, T> AddOpBinOp; return Expr::RepType>(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SMatrix, binary) //============================================================================== template < class A, class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, Expr, T>, T, D, D2,typename AddPolicy::RepType> operator+(const SMatrix& lhs, const Expr& rhs) { typedef BinaryOp, SMatrix, Expr, T> AddOpBinOp; return Expr::RepType>(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================== // operator+ (SMatrix, binary) //============================================================================== template inline Expr, Expr, Expr, T>, T, D, D2, typename AddPolicy::RepType > operator+(const Expr& lhs, const Expr& rhs) { typedef BinaryOp, Expr, Expr, T> AddOpBinOp; return Expr::RepType>(AddOpBinOp(AddOp(),lhs,rhs)); } //============================================================================= // operator+ (SMatrix, binary, Constant) //============================================================================= template inline Expr, SMatrix, Constant, T>, T, D, D2, R> operator+(const SMatrix& lhs, const A& rhs) { typedef BinaryOp, SMatrix, Constant, T> AddOpBinOp; return Expr(AddOpBinOp(AddOp(),lhs,Constant(rhs))); } //============================================================================== // operator+ (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, SMatrix, T>, T, D, D2, R> operator+(const A& lhs, const SMatrix& rhs) { typedef BinaryOp, Constant, SMatrix, T> AddOpBinOp; return Expr(AddOpBinOp(AddOp(), Constant(lhs),rhs)); } //============================================================================== // operator+ (SMatrix, binary, Constant) //============================================================================== template inline Expr, Expr, Constant, T>, T, D, D2, R> operator+(const Expr& lhs, const A& rhs) { typedef BinaryOp, Expr, Constant, T> AddOpBinOp; return Expr(AddOpBinOp(AddOp(), lhs,Constant(rhs))); } //============================================================================== // operator+ (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, Expr, T>, T, D, D2> operator+(const A& lhs, const Expr& rhs) { typedef BinaryOp, Constant, Expr, T> AddOpBinOp; return Expr(AddOpBinOp(AddOp(), Constant(lhs),rhs)); } //============================================================================== // MinOp //============================================================================== template class MinOp { public: static inline T apply(const T& lhs, const T& rhs) { return lhs - rhs; } }; //============================================================================== // operator- (SVector, binary) //============================================================================== template < class T, unsigned int D> inline VecExpr, SVector, SVector, T>, T, D> operator-(const SVector& lhs, const SVector& rhs) { typedef BinaryOp, SVector, SVector, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SVector, binary) //============================================================================== template inline VecExpr, VecExpr, SVector, T>, T, D> operator-(const VecExpr& lhs, const SVector& rhs) { typedef BinaryOp, VecExpr, SVector, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SVector, binary) //============================================================================== template < class A, class T, unsigned int D> inline VecExpr, SVector, VecExpr, T>, T, D> operator-(const SVector& lhs, const VecExpr& rhs) { typedef BinaryOp, SVector, VecExpr, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SVector, binary) //============================================================================== template inline VecExpr, VecExpr, VecExpr, T>, T, D> operator-(const VecExpr& lhs, const VecExpr& rhs) { typedef BinaryOp, VecExpr, VecExpr, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SVector, binary, Constant) //============================================================================== template inline VecExpr, SVector, Constant, T>, T, D> operator-(const SVector& lhs, const A& rhs) { typedef BinaryOp, SVector, Constant, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),lhs,Constant(rhs))); } //============================================================================== // operator- (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, SVector, T>, T, D> operator-(const A& lhs, const SVector& rhs) { typedef BinaryOp, Constant, SVector, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),Constant(lhs),rhs)); } //============================================================================== // operator- (SVector, binary, Constant) //============================================================================== template inline VecExpr, VecExpr, Constant, T>, T, D> operator-(const VecExpr& lhs, const A& rhs) { typedef BinaryOp, VecExpr, Constant, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),lhs,Constant(rhs))); } //============================================================================== // operator- (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, VecExpr, T>, T, D> operator-(const A& lhs, const VecExpr& rhs) { typedef BinaryOp, Constant, VecExpr, T> MinOpBinOp; return VecExpr(MinOpBinOp(MinOp(),Constant(lhs),rhs)); } //============================================================================== // operator- (SMatrix, binary) //============================================================================== template < class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> operator-(const SMatrix& lhs, const SMatrix& rhs) { typedef BinaryOp, SMatrix, SMatrix, T> MinOpBinOp; return Expr::RepType>(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SMatrix, binary) //============================================================================== template inline Expr, Expr, SMatrix, T>, T, D, D2,typename AddPolicy::RepType> operator-(const Expr& lhs, const SMatrix& rhs) { typedef BinaryOp, Expr, SMatrix, T> MinOpBinOp; return Expr::RepType>(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SMatrix, binary) //============================================================================== template < class A, class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, Expr, T>, T, D, D2, typename AddPolicy::RepType> operator-(const SMatrix& lhs, const Expr& rhs) { typedef BinaryOp, SMatrix, Expr, T> MinOpBinOp; return Expr::RepType>(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SMatrix, binary) //============================================================================== template inline Expr, Expr, Expr, T>, T, D, D2,typename AddPolicy::RepType> operator-(const Expr& lhs, const Expr& rhs) { typedef BinaryOp, Expr, Expr, T> MinOpBinOp; return Expr::RepType>(MinOpBinOp(MinOp(),lhs,rhs)); } //============================================================================== // operator- (SMatrix, binary, Constant) //============================================================================== template inline Expr, SMatrix, Constant, T>, T, D, D2, R> operator-(const SMatrix& lhs, const A& rhs) { typedef BinaryOp, SMatrix, Constant, T> MinOpBinOp; return Expr(MinOpBinOp(MinOp(), lhs,Constant(rhs))); } //============================================================================== // operator- (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, SMatrix, T>, T, D, D2, R> operator-(const A& lhs, const SMatrix& rhs) { typedef BinaryOp, Constant, SMatrix, T> MinOpBinOp; return Expr(MinOpBinOp(MinOp(),Constant(lhs),rhs)); } //============================================================================== // operator- (SMatrix, binary, Constant) //============================================================================== template inline Expr, Expr, Constant, T>, T, D, D2, R> operator-(const Expr& lhs, const A& rhs) { typedef BinaryOp, Expr, Constant, T> MinOpBinOp; return Expr(MinOpBinOp(MinOp(),lhs,Constant(rhs))); } //============================================================================== // operator- (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, Expr, T>, T, D, D2, R> operator-(const A& lhs, const Expr& rhs) { typedef BinaryOp, Constant, Expr, T> MinOpBinOp; return Expr(MinOpBinOp(MinOp(), Constant(lhs),rhs)); } //============================================================================== // MulOp //============================================================================== template class MulOp { public: static inline T apply(const T& lhs, const T& rhs) { return lhs * rhs; } }; //============================================================================== // operator* (SVector, binary) //============================================================================== template < class T, unsigned int D> inline VecExpr, SVector, SVector, T>, T, D> operator*(const SVector& lhs, const SVector& rhs) { typedef BinaryOp, SVector, SVector, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // operator* (SVector, binary) //============================================================================== // template // inline VecExpr, VecExpr, SVector, T>, T, D> // operator*(const VecExpr& lhs, const SVector& rhs) { // typedef BinaryOp, VecExpr, SVector, T> MulOpBinOp; // return VecExpr(MulOpBinOp(MulOp(),lhs,rhs)); // } template inline VecExpr, Expr, SVector, T>, T, D> operator*(const VecExpr& lhs, const SVector& rhs) { typedef BinaryOp, VecExpr, SVector, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // operator* (SVector, binary) //============================================================================== template < class A, class T, unsigned int D> inline VecExpr, SVector, VecExpr, T>, T, D> operator*(const SVector& lhs, const VecExpr& rhs) { typedef BinaryOp, SVector, VecExpr, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // operator* (SVector, binary) //============================================================================== template inline VecExpr, VecExpr, VecExpr, T>, T, D> operator*(const VecExpr& lhs, const VecExpr& rhs) { typedef BinaryOp, VecExpr, VecExpr, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // operator* (SVector, binary, Constant) //============================================================================== template inline VecExpr, SVector, Constant, T>, T, D> operator*(const SVector& lhs, const A& rhs) { typedef BinaryOp, SVector, Constant, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),lhs,Constant(rhs))); } //============================================================================== // operator* (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, SVector, T>, T, D> operator*(const A& lhs, const SVector& rhs) { typedef BinaryOp, Constant, SVector, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),Constant(lhs),rhs)); } //============================================================================== // operator* (SVector, binary, Constant) //============================================================================== template inline VecExpr, VecExpr, Constant, T>, T, D> operator*(const VecExpr& lhs, const A& rhs) { typedef BinaryOp, VecExpr, Constant, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),lhs,Constant(rhs))); } //============================================================================== // operator* (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, VecExpr, T>, T, D> operator*(const A& lhs, const VecExpr& rhs) { typedef BinaryOp, Constant, VecExpr, T> MulOpBinOp; return VecExpr(MulOpBinOp(MulOp(),Constant(lhs),rhs)); } //============================================================================== // times (SMatrix, binary) //============================================================================== template < class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> times(const SMatrix& lhs, const SMatrix& rhs) { typedef BinaryOp, SMatrix, SMatrix, T> MulOpBinOp; return Expr::RepType>(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // times (SMatrix, binary) //============================================================================== template inline Expr, Expr, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> times(const Expr& lhs, const SMatrix& rhs) { typedef BinaryOp, Expr, SMatrix, T> MulOpBinOp; return Expr::RepType>(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // times (SMatrix, binary) //============================================================================== template < class A, class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, Expr, T>, T, D, D2, typename AddPolicy::RepType> times(const SMatrix& lhs, const Expr& rhs) { typedef BinaryOp, SMatrix, Expr, T> MulOpBinOp; return Expr::RepType>(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================== // times (SMatrix, binary) //============================================================================== template inline Expr, Expr, Expr, T>, T, D, D2, typename AddPolicy::RepType> times(const Expr& lhs, const Expr& rhs) { typedef BinaryOp, Expr, Expr, T> MulOpBinOp; return Expr::RepType>(MulOpBinOp(MulOp(),lhs,rhs)); } //============================================================================= // operator* (SMatrix, binary, Constant) //============================================================================= template inline Expr, SMatrix, Constant, T>, T, D, D2, R> operator*(const SMatrix& lhs, const A& rhs) { typedef BinaryOp, SMatrix, Constant, T> MulOpBinOp; return Expr(MulOpBinOp(MulOp(), lhs,Constant(rhs))); } //============================================================================= // operator* (SMatrix, binary, Constant) //============================================================================= template inline Expr, Constant, SMatrix, T>, T, D, D2, R> operator*(const A& lhs, const SMatrix& rhs) { typedef BinaryOp, Constant, SMatrix, T> MulOpBinOp; return Expr(MulOpBinOp(MulOp(), Constant(lhs),rhs)); } //============================================================================== // operator* (SMatrix, binary, Constant) //============================================================================== template inline Expr, Expr, Constant, T>, T, D, D2, R> operator*(const Expr& lhs, const A& rhs) { typedef BinaryOp, Expr, Constant, T> MulOpBinOp; return Expr(MulOpBinOp(MulOp(), lhs,Constant(rhs))); } //============================================================================== // operator* (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, Expr, T>, T, D, D2, R> operator*(const A& lhs, const Expr& rhs) { typedef BinaryOp, Constant, Expr, T> MulOpBinOp; return Expr(MulOpBinOp(MulOp(), Constant(lhs),rhs)); } //============================================================================= // DivOp //============================================================================= template class DivOp { public: static inline T apply(const T& lhs, const T& rhs) { return lhs / rhs; } }; //============================================================================== // operator/ (SVector, binary) //============================================================================== template < class T, unsigned int D> inline VecExpr, SVector, SVector, T>, T, D> operator/(const SVector& lhs, const SVector& rhs) { typedef BinaryOp, SVector, SVector, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================== // operator/ (SVector, binary) //============================================================================== template inline VecExpr, VecExpr, SVector, T>, T, D> operator/(const VecExpr& lhs, const SVector& rhs) { typedef BinaryOp, VecExpr, SVector, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================== // operator/ (SVector, binary) //============================================================================== template < class A, class T, unsigned int D> inline VecExpr, SVector, VecExpr, T>, T, D> operator/(const SVector& lhs, const VecExpr& rhs) { typedef BinaryOp, SVector, VecExpr, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================= // operator/ (SVector, binary) //============================================================================= template inline VecExpr, VecExpr, VecExpr, T>, T, D> operator/(const VecExpr& lhs, const VecExpr& rhs) { typedef BinaryOp, VecExpr, VecExpr, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================== // operator/ (SVector, binary, Constant) //============================================================================== template inline VecExpr, SVector, Constant, T>, T, D> operator/(const SVector& lhs, const A& rhs) { typedef BinaryOp, SVector, Constant, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),lhs,Constant(rhs))); } //============================================================================== // operator/ (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, SVector, T>, T, D> operator/(const A& lhs, const SVector& rhs) { typedef BinaryOp, Constant, SVector, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),Constant(lhs),rhs)); } //============================================================================== // operator/ (SVector, binary, Constant) //============================================================================== template inline VecExpr, VecExpr, Constant, T>, T, D> operator/(const VecExpr& lhs, const A& rhs) { typedef BinaryOp, VecExpr, Constant, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),lhs,Constant(rhs))); } //============================================================================== // operator/ (SVector, binary, Constant) //============================================================================== template inline VecExpr, Constant, VecExpr, T>, T, D> operator/(const A& lhs, const VecExpr& rhs) { typedef BinaryOp, Constant, VecExpr, T> DivOpBinOp; return VecExpr(DivOpBinOp(DivOp(),Constant(lhs),rhs)); } //============================================================================== // operator/ (SMatrix, binary) //============================================================================== template < class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> operator/(const SMatrix& lhs, const SMatrix& rhs) { typedef BinaryOp, SMatrix, SMatrix, T> DivOpBinOp; return Expr::RepType>(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================== // operator/ (SMatrix, binary) //============================================================================== template inline Expr, Expr, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> operator/(const Expr& lhs, const SMatrix& rhs) { typedef BinaryOp, Expr, SMatrix, T> DivOpBinOp; return Expr::RepType>(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================== // operator/ (SMatrix, binary) //============================================================================== template < class A, class T, unsigned int D, unsigned int D2, class R1, class R2> inline Expr, SMatrix, Expr, T>, T, D, D2, typename AddPolicy::RepType> operator/(const SMatrix& lhs, const Expr& rhs) { typedef BinaryOp, SMatrix, Expr, T> DivOpBinOp; return Expr::RepType>(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================== // operator/ (SMatrix, binary) //============================================================================== template inline Expr, Expr, Expr, T>, T, D, D2,typename AddPolicy::RepType> operator/(const Expr& lhs, const Expr& rhs) { typedef BinaryOp, Expr, Expr, T> DivOpBinOp; return Expr::RepType>(DivOpBinOp(DivOp(),lhs,rhs)); } //============================================================================= // operator/ (SMatrix, binary, Constant) //============================================================================= template inline Expr, SMatrix, Constant, T>, T, D, D2, R> operator/(const SMatrix& lhs, const A& rhs) { typedef BinaryOp, SMatrix, Constant, T> DivOpBinOp; return Expr(DivOpBinOp(DivOp(), lhs,Constant(rhs))); } //============================================================================== // operator/ (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, SMatrix, T>, T, D, D2, R> operator/(const A& lhs, const SMatrix& rhs) { typedef BinaryOp, Constant, SMatrix, T> DivOpBinOp; return Expr(DivOpBinOp(DivOp(), Constant(lhs),rhs)); } //============================================================================== // operator/ (SMatrix, binary, Constant) //============================================================================== template inline Expr, Expr, Constant, T>, T, D, D2, R> operator/(const Expr& lhs, const A& rhs) { typedef BinaryOp, Expr, Constant, T> DivOpBinOp; return Expr(DivOpBinOp(DivOp(), lhs,Constant(rhs))); } //============================================================================== // operator/ (SMatrix, binary, Constant) //============================================================================== template inline Expr, Constant, Expr, T>, T, D, D2,R> operator/(const A& lhs, const Expr& rhs) { typedef BinaryOp, Constant, Expr, T> DivOpBinOp; return Expr(DivOpBinOp(DivOp(),Constant(lhs),rhs)); } } // namespace Math } // namespace ROOT #endif /*ROOT_Math_BinaryOperators */