// Generated source file. Do not edit. // Created by: genmatbops.cpp Dec 10 2003 17:58:20 #ifndef BZ_MATBOPS_H #define BZ_MATBOPS_H BZ_NAMESPACE(blitz) #ifndef BZ_MATEXPR_H #error must be included via #endif /**************************************************************************** * Addition Operators ****************************************************************************/ // Matrix + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Add > > operator+(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Add > > operator+(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix + int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > > operator+(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix + float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > > operator+(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix + double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > > operator+(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix + long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > > operator+(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix + complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Add > > > operator+(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Add > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Add > > operator+(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Add > > operator+(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr + int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > > operator+(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr + float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > > operator+(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr + double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > > operator+(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr + long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > > operator+(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Add > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr + complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Add > > > operator+(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Add > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > > operator+(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > > operator+(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > > operator+(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > > operator+(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > > operator+(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > > operator+(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > > operator+(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > > operator+(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Add > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex + Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Add , P_numtype2 > > > operator+(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Add , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Add , typename P_expr2::T_numtype > > > operator+(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Add , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Subtraction Operators ****************************************************************************/ // Matrix - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Subtract > > operator-(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Subtract > > operator-(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix - int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > > operator-(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix - float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > > operator-(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix - double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > > operator-(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix - long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > > operator-(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix - complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Subtract > > > operator-(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Subtract > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Subtract > > operator-(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Subtract > > operator-(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr - int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > > operator-(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr - float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > > operator-(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr - double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > > operator-(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr - long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > > operator-(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr - complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Subtract > > > operator-(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Subtract > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > > operator-(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > > operator-(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > > operator-(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > > operator-(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > > operator-(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > > operator-(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > > operator-(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > > operator-(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Subtract > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex - Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Subtract , P_numtype2 > > > operator-(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Subtract , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Subtract , typename P_expr2::T_numtype > > > operator-(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Subtract , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Multiplication Operators ****************************************************************************/ // Matrix * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Multiply > > operator*(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Multiply > > operator*(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix * int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > > operator*(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix * float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > > operator*(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix * double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > > operator*(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix * long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > > operator*(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix * complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Multiply > > > operator*(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Multiply > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Multiply > > operator*(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Multiply > > operator*(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr * int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > > operator*(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr * float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > > operator*(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr * double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > > operator*(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr * long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > > operator*(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr * complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Multiply > > > operator*(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Multiply > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > > operator*(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > > operator*(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > > operator*(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > > operator*(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > > operator*(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > > operator*(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > > operator*(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > > operator*(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Multiply > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex * Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Multiply , P_numtype2 > > > operator*(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Multiply , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Multiply , typename P_expr2::T_numtype > > > operator*(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Multiply , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Division Operators ****************************************************************************/ // Matrix / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Divide > > operator/(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Divide > > operator/(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix / int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > > operator/(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix / float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > > operator/(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix / double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > > operator/(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix / long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > > operator/(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix / complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Divide > > > operator/(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Divide > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Divide > > operator/(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Divide > > operator/(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr / int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > > operator/(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr / float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > > operator/(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr / double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > > operator/(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr / long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > > operator/(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr / complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Divide > > > operator/(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Divide > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > > operator/(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > > operator/(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > > operator/(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > > operator/(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > > operator/(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > > operator/(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > > operator/(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > > operator/(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Divide > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex / Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Divide , P_numtype2 > > > operator/(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Divide , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Divide , typename P_expr2::T_numtype > > > operator/(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Divide , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Modulus Operators ****************************************************************************/ // Matrix % Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Mod > > operator%(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix % _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Mod > > operator%(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix % int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Mod > > operator%(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr % Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Mod > > operator%(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr % _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Mod > > operator%(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr % int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Mod > > operator%(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int % Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Mod > > operator%(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int % _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Mod > > operator%(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Mod > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Bitwise XOR Operators ****************************************************************************/ // Matrix ^ Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_BitwiseXOR > > operator^(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix ^ _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_BitwiseXOR > > operator^(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix ^ int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_BitwiseXOR > > operator^(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr ^ Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_BitwiseXOR > > operator^(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr ^ _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_BitwiseXOR > > operator^(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr ^ int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_BitwiseXOR > > operator^(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int ^ Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_BitwiseXOR > > operator^(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int ^ _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_BitwiseXOR > > operator^(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_BitwiseXOR > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Bitwise And Operators ****************************************************************************/ // Matrix & Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_BitwiseAnd > > operator&(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix & _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_BitwiseAnd > > operator&(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix & int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_BitwiseAnd > > operator&(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr & Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_BitwiseAnd > > operator&(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr & _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_BitwiseAnd > > operator&(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr & int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_BitwiseAnd > > operator&(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int & Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_BitwiseAnd > > operator&(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int & _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_BitwiseAnd > > operator&(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_BitwiseAnd > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Bitwise Or Operators ****************************************************************************/ // Matrix | Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_BitwiseOr > > operator|(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix | _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_BitwiseOr > > operator|(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix | int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_BitwiseOr > > operator|(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr | Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_BitwiseOr > > operator|(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr | _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_BitwiseOr > > operator|(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr | int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_BitwiseOr > > operator|(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int | Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_BitwiseOr > > operator|(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int | _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_BitwiseOr > > operator|(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_BitwiseOr > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Shift right Operators ****************************************************************************/ // Matrix >> Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_ShiftRight > > operator>>(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix >> _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_ShiftRight > > operator>>(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix >> int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_ShiftRight > > operator>>(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr >> Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_ShiftRight > > operator>>(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr >> _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_ShiftRight > > operator>>(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr >> int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_ShiftRight > > operator>>(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int >> Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_ShiftRight > > operator>>(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int >> _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_ShiftRight > > operator>>(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_ShiftRight > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Shift left Operators ****************************************************************************/ // Matrix << Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_ShiftLeft > > operator<<(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix << _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_ShiftLeft > > operator<<(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix << int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_ShiftLeft > > operator<<(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr << Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_ShiftLeft > > operator<<(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr << _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_ShiftLeft > > operator<<(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr << int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_ShiftLeft > > operator<<(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int << Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_ShiftLeft > > operator<<(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int << _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_ShiftLeft > > operator<<(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_ShiftLeft > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Greater-than Operators ****************************************************************************/ // Matrix > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Greater > > operator>(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Greater > > operator>(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix > int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > > operator>(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix > float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > > operator>(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix > double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > > operator>(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix > long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > > operator>(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix > complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Greater > > > operator>(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Greater > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Greater > > operator>(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Greater > > operator>(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr > int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > > operator>(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr > float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > > operator>(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr > double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > > operator>(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr > long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > > operator>(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr > complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Greater > > > operator>(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Greater > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > > operator>(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > > operator>(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > > operator>(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > > operator>(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > > operator>(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > > operator>(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > > operator>(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > > operator>(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Greater > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex > Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Greater , P_numtype2 > > > operator>(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Greater , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Greater , typename P_expr2::T_numtype > > > operator>(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Greater , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Less-than Operators ****************************************************************************/ // Matrix < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Less > > operator<(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Less > > operator<(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix < int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > > operator<(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix < float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > > operator<(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix < double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > > operator<(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix < long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > > operator<(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix < complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Less > > > operator<(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Less > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Less > > operator<(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Less > > operator<(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr < int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > > operator<(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr < float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > > operator<(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr < double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > > operator<(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr < long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > > operator<(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Less > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr < complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Less > > > operator<(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Less > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > > operator<(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > > operator<(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > > operator<(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > > operator<(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > > operator<(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > > operator<(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > > operator<(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > > operator<(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Less > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex < Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Less , P_numtype2 > > > operator<(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Less , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Less , typename P_expr2::T_numtype > > > operator<(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Less , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Greater or equal (>=) operators ****************************************************************************/ // Matrix >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_GreaterOrEqual > > operator>=(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_GreaterOrEqual > > operator>=(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix >= int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix >= float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix >= double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix >= long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix >= complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_GreaterOrEqual > > > operator>=(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_GreaterOrEqual > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_GreaterOrEqual > > operator>=(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_GreaterOrEqual > > operator>=(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr >= int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr >= float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr >= double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr >= long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr >= complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_GreaterOrEqual > > > operator>=(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_GreaterOrEqual > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > > operator>=(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > > operator>=(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > > operator>=(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > > operator>=(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > > operator>=(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > > operator>=(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > > operator>=(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > > operator>=(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_GreaterOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex >= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_GreaterOrEqual , P_numtype2 > > > operator>=(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_GreaterOrEqual , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_GreaterOrEqual , typename P_expr2::T_numtype > > > operator>=(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_GreaterOrEqual , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Less or equal (<=) operators ****************************************************************************/ // Matrix <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_LessOrEqual > > operator<=(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_LessOrEqual > > operator<=(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix <= int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix <= float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix <= double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix <= long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix <= complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_LessOrEqual > > > operator<=(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_LessOrEqual > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_LessOrEqual > > operator<=(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_LessOrEqual > > operator<=(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr <= int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr <= float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr <= double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr <= long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > > operator<=(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr <= complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_LessOrEqual > > > operator<=(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_LessOrEqual > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > > operator<=(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > > operator<=(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > > operator<=(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > > operator<=(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > > operator<=(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > > operator<=(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > > operator<=(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > > operator<=(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LessOrEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex <= Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_LessOrEqual , P_numtype2 > > > operator<=(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_LessOrEqual , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_LessOrEqual , typename P_expr2::T_numtype > > > operator<=(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_LessOrEqual , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Equality operators ****************************************************************************/ // Matrix == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Equal > > operator==(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Equal > > operator==(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix == int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > > operator==(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix == float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > > operator==(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix == double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > > operator==(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix == long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > > operator==(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix == complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Equal > > > operator==(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_Equal > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Equal > > operator==(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Equal > > operator==(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr == int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > > operator==(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr == float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > > operator==(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr == double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > > operator==(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr == long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > > operator==(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr == complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Equal > > > operator==(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_Equal > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > > operator==(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > > operator==(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > > operator==(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > > operator==(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > > operator==(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > > operator==(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > > operator==(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > > operator==(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Equal > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex == Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Equal , P_numtype2 > > > operator==(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_Equal , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Equal , typename P_expr2::T_numtype > > > operator==(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_Equal , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Not-equal operators ****************************************************************************/ // Matrix != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_NotEqual > > operator!=(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_NotEqual > > operator!=(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix != int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > > operator!=(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix != float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > > operator!=(const Matrix& d1, float d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix != double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > > operator!=(const Matrix& d1, double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // Matrix != long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > > operator!=(const Matrix& d1, long double d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Matrix != complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_NotEqual > > > operator!=(const Matrix& d1, complex d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant > , _bz_NotEqual > > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_MatExpr != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_NotEqual > > operator!=(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_NotEqual > > operator!=(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr != int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > > operator!=(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr != float template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > > operator!=(_bz_MatExpr d1, float d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr != double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > > operator!=(_bz_MatExpr d1, double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // _bz_MatExpr != long double template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > > operator!=(_bz_MatExpr d1, long double d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_MatExpr != complex template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_NotEqual > > > operator!=(_bz_MatExpr d1, complex d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant > , _bz_NotEqual > > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > > operator!=(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > > operator!=(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // float != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > > operator!=(float d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // float != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > > operator!=(float d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // double != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > > operator!=(double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // double != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > > operator!=(double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } // long double != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > > operator!=(long double d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // long double != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > > operator!=(long double d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_NotEqual > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } #ifdef BZ_HAVE_COMPLEX // complex != Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_NotEqual , P_numtype2 > > > operator!=(complex d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatrixRef, _bz_NotEqual , P_numtype2> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2._bz_getRef())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_NotEqual , typename P_expr2::T_numtype > > > operator!=(complex d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant > , _bz_MatExpr, _bz_NotEqual , typename P_expr2::T_numtype> > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Logical AND operators ****************************************************************************/ // Matrix && Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_LogicalAnd > > operator&&(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix && _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_LogicalAnd > > operator&&(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix && int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LogicalAnd > > operator&&(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr && Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_LogicalAnd > > operator&&(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr && _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_LogicalAnd > > operator&&(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr && int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LogicalAnd > > operator&&(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int && Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LogicalAnd > > operator&&(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int && _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LogicalAnd > > operator&&(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LogicalAnd > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Logical OR operators ****************************************************************************/ // Matrix || Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_LogicalOr > > operator||(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix || _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_LogicalOr > > operator||(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix || int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LogicalOr > > operator||(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr || Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_LogicalOr > > operator||(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr || _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_LogicalOr > > operator||(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr || int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LogicalOr > > operator||(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int || Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LogicalOr > > operator||(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int || _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LogicalOr > > operator||(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_LogicalOr > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Minimum Operators ****************************************************************************/ // Matrix min Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Min > > min(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Min > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix min _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Min > > min(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Min > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix min int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Min > > min(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Min > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr min Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Min > > min(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Min > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr min _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Min > > min(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Min > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr min int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Min > > min(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Min > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int min Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Min > > min(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Min > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int min _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Min > > min(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Min > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } /**************************************************************************** * Maximum Operators ****************************************************************************/ // Matrix max Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Max > > max(const Matrix& d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatrixRef, _bz_Max > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2._bz_getRef())); } // Matrix max _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Max > > max(const Matrix& d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExpr, _bz_Max > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), d2)); } // Matrix max int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Max > > max(const Matrix& d1, int d2) { typedef _bz_MatExprOp<_bz_MatrixRef, _bz_MatExprConstant, _bz_Max > T_expr; return _bz_MatExpr(T_expr(d1._bz_getRef(), _bz_MatExprConstant(d2))); } // _bz_MatExpr max Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Max > > max(_bz_MatExpr d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatrixRef, _bz_Max > T_expr; return _bz_MatExpr(T_expr(d1, d2._bz_getRef())); } // _bz_MatExpr max _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Max > > max(_bz_MatExpr d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExpr, _bz_Max > T_expr; return _bz_MatExpr(T_expr(d1, d2)); } // _bz_MatExpr max int template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Max > > max(_bz_MatExpr d1, int d2) { typedef _bz_MatExprOp<_bz_MatExpr, _bz_MatExprConstant, _bz_Max > T_expr; return _bz_MatExpr(T_expr(d1, _bz_MatExprConstant(d2))); } // int max Matrix template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Max > > max(int d1, const Matrix& d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatrixRef, _bz_Max > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2._bz_getRef())); } // int max _bz_MatExpr template inline _bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Max > > max(int d1, _bz_MatExpr d2) { typedef _bz_MatExprOp<_bz_MatExprConstant, _bz_MatExpr, _bz_Max > T_expr; return _bz_MatExpr(T_expr(_bz_MatExprConstant(d1), d2)); } BZ_NAMESPACE_END #endif // BZ_MATBOPS_H