/*************************************************************************** * blitz/arraybops.cc Array expression templates (2 operands) * * $Id: bops.cc,v 1.1.1.1 1999-04-09 17:59:04 ansari Exp $ * * Copyright (C) 1997 Todd Veldhuizen * All rights reserved. Please see for terms and * conditions of use. * * Suggestions: blitz-suggest@cybervision.com * Bugs: blitz-bugs@cybervision.com * * For more information, please see the Blitz++ Home Page: * http://seurat.uwaterloo.ca/blitz/ * *************************************************************************** * $Log: not supported by cvs2svn $ * Revision 1.2 1998/03/14 00:04:47 tveldhui * 0.2-alpha-05 * */ // Generated source file. Do not edit. // genarrbops.cpp Aug 7 1997 15:04:14 #ifndef BZ_ARRAYBOPS_CC #define BZ_ARRAYBOPS_CC #ifndef BZ_ARRAYEXPR_H #error must be included after #endif BZ_NAMESPACE(blitz) /**************************************************************************** * Addition Operators ****************************************************************************/ // Array + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Add > > operator+(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Add > (d1.begin(), d2.begin()); } // Array + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Add > > operator+(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Add > (d1.begin(), d2); } // Array + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Add > > operator+(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Add > (d1.begin(), d2); } // Array + int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array + float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array + double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array + long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array + complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Add > > > operator+(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Add > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Add<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator+(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Add<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Add<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator+(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Add<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Add<_bz_typename P_expr1::T_numtype, int > > > operator+(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Add<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr + int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, int > > > operator+(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr + float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, float > > > operator+(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr + double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, double > > > operator+(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr + long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, long double > > > operator+(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Add<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr + complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Add<_bz_typename P_expr1::T_numtype, complex > > > operator+(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Add<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Add > > operator+(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Add > (d1, d2.begin()); } // IndexPlaceholder + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Add > > operator+(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Add > (d1, d2); } // IndexPlaceholder + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Add > > operator+(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Add > (d1, d2); } // IndexPlaceholder + int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder + float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder + double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder + long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Add > > operator+(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Add > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder + complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Add > > > operator+(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Add > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > > operator+(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > (_bz_ArrayExprConstant(d1), d2.begin()); } // int + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > > operator+(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > (_bz_ArrayExprConstant(d1), d2); } // int + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > > operator+(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > (_bz_ArrayExprConstant(d1), d2); } // float + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > > operator+(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > (_bz_ArrayExprConstant(d1), d2.begin()); } // float + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > > operator+(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > (_bz_ArrayExprConstant(d1), d2); } // float + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > > operator+(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > (_bz_ArrayExprConstant(d1), d2); } // double + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > > operator+(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > (_bz_ArrayExprConstant(d1), d2.begin()); } // double + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > > operator+(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > (_bz_ArrayExprConstant(d1), d2); } // double + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > > operator+(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > (_bz_ArrayExprConstant(d1), d2); } // long double + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > > operator+(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Add > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > > operator+(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Add > (_bz_ArrayExprConstant(d1), d2); } // long double + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > > operator+(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Add > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex + Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Add , T_numtype2 > > > operator+(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Add , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Add , _bz_typename P_expr2::T_numtype > > > operator+(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Add , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Add , int > > > operator+(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Add , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Subtraction Operators ****************************************************************************/ // Array - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Subtract > > operator-(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Subtract > (d1.begin(), d2.begin()); } // Array - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Subtract > > operator-(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Subtract > (d1.begin(), d2); } // Array - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Subtract > > operator-(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Subtract > (d1.begin(), d2); } // Array - int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array - float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array - double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array - long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array - complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Subtract > > > operator-(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Subtract > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Subtract<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator-(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Subtract<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Subtract<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator-(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Subtract<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Subtract<_bz_typename P_expr1::T_numtype, int > > > operator-(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Subtract<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr - int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, int > > > operator-(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr - float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, float > > > operator-(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr - double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, double > > > operator-(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr - long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, long double > > > operator-(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Subtract<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr - complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Subtract<_bz_typename P_expr1::T_numtype, complex > > > operator-(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Subtract<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Subtract > > operator-(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Subtract > (d1, d2.begin()); } // IndexPlaceholder - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Subtract > > operator-(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Subtract > (d1, d2); } // IndexPlaceholder - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Subtract > > operator-(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Subtract > (d1, d2); } // IndexPlaceholder - int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder - float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder - double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder - long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > > operator-(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Subtract > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder - complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Subtract > > > operator-(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Subtract > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > > operator-(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > (_bz_ArrayExprConstant(d1), d2.begin()); } // int - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > > operator-(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > (_bz_ArrayExprConstant(d1), d2); } // int - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > > operator-(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > (_bz_ArrayExprConstant(d1), d2); } // float - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > > operator-(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > (_bz_ArrayExprConstant(d1), d2.begin()); } // float - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > > operator-(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > (_bz_ArrayExprConstant(d1), d2); } // float - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > > operator-(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > (_bz_ArrayExprConstant(d1), d2); } // double - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > > operator-(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > (_bz_ArrayExprConstant(d1), d2.begin()); } // double - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > > operator-(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > (_bz_ArrayExprConstant(d1), d2); } // double - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > > operator-(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > (_bz_ArrayExprConstant(d1), d2); } // long double - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > > operator-(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Subtract > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > > operator-(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Subtract > (_bz_ArrayExprConstant(d1), d2); } // long double - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > > operator-(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Subtract > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex - Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Subtract , T_numtype2 > > > operator-(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Subtract , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Subtract , _bz_typename P_expr2::T_numtype > > > operator-(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Subtract , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Subtract , int > > > operator-(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Subtract , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Multiplication Operators ****************************************************************************/ // Array * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Multiply > > operator*(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Multiply > (d1.begin(), d2.begin()); } // Array * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Multiply > > operator*(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Multiply > (d1.begin(), d2); } // Array * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Multiply > > operator*(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Multiply > (d1.begin(), d2); } // Array * int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array * float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array * double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array * long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array * complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Multiply > > > operator*(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Multiply > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Multiply<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator*(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Multiply<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Multiply<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator*(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Multiply<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Multiply<_bz_typename P_expr1::T_numtype, int > > > operator*(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Multiply<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr * int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, int > > > operator*(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr * float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, float > > > operator*(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr * double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, double > > > operator*(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr * long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, long double > > > operator*(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Multiply<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr * complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Multiply<_bz_typename P_expr1::T_numtype, complex > > > operator*(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Multiply<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Multiply > > operator*(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Multiply > (d1, d2.begin()); } // IndexPlaceholder * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Multiply > > operator*(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Multiply > (d1, d2); } // IndexPlaceholder * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Multiply > > operator*(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Multiply > (d1, d2); } // IndexPlaceholder * int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder * float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder * double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder * long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > > operator*(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Multiply > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder * complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Multiply > > > operator*(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Multiply > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > > operator*(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > (_bz_ArrayExprConstant(d1), d2.begin()); } // int * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > > operator*(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > (_bz_ArrayExprConstant(d1), d2); } // int * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > > operator*(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > (_bz_ArrayExprConstant(d1), d2); } // float * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > > operator*(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > (_bz_ArrayExprConstant(d1), d2.begin()); } // float * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > > operator*(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > (_bz_ArrayExprConstant(d1), d2); } // float * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > > operator*(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > (_bz_ArrayExprConstant(d1), d2); } // double * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > > operator*(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > (_bz_ArrayExprConstant(d1), d2.begin()); } // double * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > > operator*(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > (_bz_ArrayExprConstant(d1), d2); } // double * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > > operator*(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > (_bz_ArrayExprConstant(d1), d2); } // long double * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > > operator*(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Multiply > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > > operator*(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Multiply > (_bz_ArrayExprConstant(d1), d2); } // long double * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > > operator*(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Multiply > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex * Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Multiply , T_numtype2 > > > operator*(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Multiply , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Multiply , _bz_typename P_expr2::T_numtype > > > operator*(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Multiply , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Multiply , int > > > operator*(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Multiply , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Division Operators ****************************************************************************/ // Array / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Divide > > operator/(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Divide > (d1.begin(), d2.begin()); } // Array / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Divide > > operator/(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Divide > (d1.begin(), d2); } // Array / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Divide > > operator/(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Divide > (d1.begin(), d2); } // Array / int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array / float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array / double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array / long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array / complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Divide > > > operator/(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Divide > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Divide<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator/(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Divide<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Divide<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator/(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Divide<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Divide<_bz_typename P_expr1::T_numtype, int > > > operator/(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Divide<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr / int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, int > > > operator/(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr / float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, float > > > operator/(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr / double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, double > > > operator/(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr / long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, long double > > > operator/(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Divide<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr / complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Divide<_bz_typename P_expr1::T_numtype, complex > > > operator/(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Divide<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Divide > > operator/(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Divide > (d1, d2.begin()); } // IndexPlaceholder / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Divide > > operator/(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Divide > (d1, d2); } // IndexPlaceholder / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Divide > > operator/(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Divide > (d1, d2); } // IndexPlaceholder / int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder / float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder / double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder / long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > > operator/(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Divide > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder / complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Divide > > > operator/(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Divide > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > > operator/(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > (_bz_ArrayExprConstant(d1), d2.begin()); } // int / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > > operator/(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > (_bz_ArrayExprConstant(d1), d2); } // int / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > > operator/(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > (_bz_ArrayExprConstant(d1), d2); } // float / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > > operator/(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > (_bz_ArrayExprConstant(d1), d2.begin()); } // float / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > > operator/(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > (_bz_ArrayExprConstant(d1), d2); } // float / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > > operator/(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > (_bz_ArrayExprConstant(d1), d2); } // double / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > > operator/(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > (_bz_ArrayExprConstant(d1), d2.begin()); } // double / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > > operator/(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > (_bz_ArrayExprConstant(d1), d2); } // double / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > > operator/(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > (_bz_ArrayExprConstant(d1), d2); } // long double / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > > operator/(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Divide > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > > operator/(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Divide > (_bz_ArrayExprConstant(d1), d2); } // long double / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > > operator/(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Divide > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex / Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Divide , T_numtype2 > > > operator/(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Divide , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Divide , _bz_typename P_expr2::T_numtype > > > operator/(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Divide , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Divide , int > > > operator/(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Divide , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Modulus Operators ****************************************************************************/ // Array % Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Modulo > > operator%(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Modulo > (d1.begin(), d2.begin()); } // Array % _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Modulo > > operator%(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Modulo > (d1.begin(), d2); } // Array % IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Modulo > > operator%(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Modulo > (d1.begin(), d2); } // Array % int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Modulo > > operator%(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Modulo > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr % Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Modulo<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator%(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Modulo<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr % _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Modulo<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator%(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Modulo<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr % IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Modulo<_bz_typename P_expr1::T_numtype, int > > > operator%(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Modulo<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr % int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Modulo<_bz_typename P_expr1::T_numtype, int > > > operator%(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Modulo<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder % Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Modulo > > operator%(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Modulo > (d1, d2.begin()); } // IndexPlaceholder % _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Modulo > > operator%(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Modulo > (d1, d2); } // IndexPlaceholder % IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Modulo > > operator%(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Modulo > (d1, d2); } // IndexPlaceholder % int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Modulo > > operator%(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Modulo > (d1, _bz_ArrayExprConstant(d2)); } // int % Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Modulo > > operator%(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Modulo > (_bz_ArrayExprConstant(d1), d2.begin()); } // int % _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Modulo > > operator%(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Modulo > (_bz_ArrayExprConstant(d1), d2); } // int % IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Modulo > > operator%(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Modulo > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Greater-than Operators ****************************************************************************/ // Array > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Greater > > operator>(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Greater > (d1.begin(), d2.begin()); } // Array > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Greater > > operator>(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Greater > (d1.begin(), d2); } // Array > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Greater > > operator>(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Greater > (d1.begin(), d2); } // Array > int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array > float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array > double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array > long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array > complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Greater > > > operator>(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Greater > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Greater<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator>(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Greater<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Greater<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator>(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Greater<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Greater<_bz_typename P_expr1::T_numtype, int > > > operator>(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Greater<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr > int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, int > > > operator>(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr > float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, float > > > operator>(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr > double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, double > > > operator>(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr > long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, long double > > > operator>(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Greater<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr > complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Greater<_bz_typename P_expr1::T_numtype, complex > > > operator>(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Greater<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Greater > > operator>(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Greater > (d1, d2.begin()); } // IndexPlaceholder > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Greater > > operator>(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Greater > (d1, d2); } // IndexPlaceholder > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Greater > > operator>(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Greater > (d1, d2); } // IndexPlaceholder > int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder > float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder > double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder > long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > > operator>(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Greater > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder > complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Greater > > > operator>(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Greater > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > > operator>(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > (_bz_ArrayExprConstant(d1), d2.begin()); } // int > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > > operator>(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > (_bz_ArrayExprConstant(d1), d2); } // int > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > > operator>(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > (_bz_ArrayExprConstant(d1), d2); } // float > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > > operator>(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > (_bz_ArrayExprConstant(d1), d2.begin()); } // float > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > > operator>(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > (_bz_ArrayExprConstant(d1), d2); } // float > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > > operator>(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > (_bz_ArrayExprConstant(d1), d2); } // double > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > > operator>(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > (_bz_ArrayExprConstant(d1), d2.begin()); } // double > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > > operator>(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > (_bz_ArrayExprConstant(d1), d2); } // double > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > > operator>(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > (_bz_ArrayExprConstant(d1), d2); } // long double > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > > operator>(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Greater > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > > operator>(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Greater > (_bz_ArrayExprConstant(d1), d2); } // long double > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > > operator>(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Greater > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex > Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Greater , T_numtype2 > > > operator>(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Greater , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Greater , _bz_typename P_expr2::T_numtype > > > operator>(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Greater , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Greater , int > > > operator>(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Greater , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Less-than Operators ****************************************************************************/ // Array < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Less > > operator<(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Less > (d1.begin(), d2.begin()); } // Array < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Less > > operator<(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Less > (d1.begin(), d2); } // Array < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Less > > operator<(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Less > (d1.begin(), d2); } // Array < int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array < float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array < double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array < long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array < complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Less > > > operator<(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Less > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Less<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator<(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Less<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Less<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator<(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Less<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Less<_bz_typename P_expr1::T_numtype, int > > > operator<(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Less<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr < int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, int > > > operator<(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr < float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, float > > > operator<(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr < double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, double > > > operator<(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr < long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, long double > > > operator<(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Less<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr < complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Less<_bz_typename P_expr1::T_numtype, complex > > > operator<(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Less<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Less > > operator<(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Less > (d1, d2.begin()); } // IndexPlaceholder < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Less > > operator<(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Less > (d1, d2); } // IndexPlaceholder < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Less > > operator<(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Less > (d1, d2); } // IndexPlaceholder < int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder < float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder < double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder < long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Less > > operator<(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Less > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder < complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Less > > > operator<(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Less > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > > operator<(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > (_bz_ArrayExprConstant(d1), d2.begin()); } // int < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > > operator<(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > (_bz_ArrayExprConstant(d1), d2); } // int < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > > operator<(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > (_bz_ArrayExprConstant(d1), d2); } // float < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > > operator<(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > (_bz_ArrayExprConstant(d1), d2.begin()); } // float < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > > operator<(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > (_bz_ArrayExprConstant(d1), d2); } // float < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > > operator<(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > (_bz_ArrayExprConstant(d1), d2); } // double < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > > operator<(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > (_bz_ArrayExprConstant(d1), d2.begin()); } // double < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > > operator<(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > (_bz_ArrayExprConstant(d1), d2); } // double < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > > operator<(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > (_bz_ArrayExprConstant(d1), d2); } // long double < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > > operator<(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Less > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > > operator<(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Less > (_bz_ArrayExprConstant(d1), d2); } // long double < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > > operator<(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Less > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex < Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Less , T_numtype2 > > > operator<(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Less , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Less , _bz_typename P_expr2::T_numtype > > > operator<(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Less , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Less , int > > > operator<(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Less , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Greater or equal (>=) operators ****************************************************************************/ // Array >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, GreaterOrEqual > > operator>=(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, GreaterOrEqual > (d1.begin(), d2.begin()); } // Array >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, GreaterOrEqual > > operator>=(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, GreaterOrEqual > (d1.begin(), d2); } // Array >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, GreaterOrEqual > > operator>=(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, GreaterOrEqual > (d1.begin(), d2); } // Array >= int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array >= float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array >= double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array >= long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array >= complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , GreaterOrEqual > > > operator>=(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , GreaterOrEqual > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, GreaterOrEqual<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator>=(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, GreaterOrEqual<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, GreaterOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator>=(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, GreaterOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, GreaterOrEqual<_bz_typename P_expr1::T_numtype, int > > > operator>=(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, GreaterOrEqual<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr >= int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, int > > > operator>=(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr >= float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, float > > > operator>=(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr >= double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, double > > > operator>=(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr >= long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, long double > > > operator>=(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, GreaterOrEqual<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr >= complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex > > > operator>=(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, GreaterOrEqual > > operator>=(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, GreaterOrEqual > (d1, d2.begin()); } // IndexPlaceholder >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, GreaterOrEqual > > operator>=(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, GreaterOrEqual > (d1, d2); } // IndexPlaceholder >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, GreaterOrEqual > > operator>=(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, GreaterOrEqual > (d1, d2); } // IndexPlaceholder >= int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder >= float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder >= double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder >= long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > > operator>=(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, GreaterOrEqual > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder >= complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , GreaterOrEqual > > > operator>=(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , GreaterOrEqual > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > > operator>=(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // int >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > > operator>=(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // int >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > > operator>=(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // float >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > > operator>=(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // float >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > > operator>=(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // float >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > > operator>=(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // double >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > > operator>=(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // double >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > > operator>=(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // double >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > > operator>=(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // long double >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > > operator>=(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > > operator>=(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } // long double >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > > operator>=(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, GreaterOrEqual > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex >= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, GreaterOrEqual , T_numtype2 > > > operator>=(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, GreaterOrEqual , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, GreaterOrEqual , _bz_typename P_expr2::T_numtype > > > operator>=(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, GreaterOrEqual , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, GreaterOrEqual , int > > > operator>=(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, GreaterOrEqual , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Less or equal (<=) operators ****************************************************************************/ // Array <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, LessOrEqual > > operator<=(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, LessOrEqual > (d1.begin(), d2.begin()); } // Array <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, LessOrEqual > > operator<=(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, LessOrEqual > (d1.begin(), d2); } // Array <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, LessOrEqual > > operator<=(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, LessOrEqual > (d1.begin(), d2); } // Array <= int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array <= float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array <= double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array <= long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array <= complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , LessOrEqual > > > operator<=(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , LessOrEqual > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, LessOrEqual<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator<=(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, LessOrEqual<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, LessOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator<=(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, LessOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, LessOrEqual<_bz_typename P_expr1::T_numtype, int > > > operator<=(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, LessOrEqual<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr <= int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, int > > > operator<=(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr <= float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, float > > > operator<=(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr <= double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, double > > > operator<=(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr <= long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, long double > > > operator<=(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LessOrEqual<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr <= complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , LessOrEqual<_bz_typename P_expr1::T_numtype, complex > > > operator<=(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , LessOrEqual<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, LessOrEqual > > operator<=(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, LessOrEqual > (d1, d2.begin()); } // IndexPlaceholder <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, LessOrEqual > > operator<=(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, LessOrEqual > (d1, d2); } // IndexPlaceholder <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, LessOrEqual > > operator<=(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, LessOrEqual > (d1, d2); } // IndexPlaceholder <= int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder <= float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder <= double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder <= long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > > operator<=(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LessOrEqual > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder <= complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , LessOrEqual > > > operator<=(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , LessOrEqual > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > > operator<=(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // int <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > > operator<=(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // int <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > > operator<=(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // float <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > > operator<=(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // float <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > > operator<=(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // float <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > > operator<=(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // double <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > > operator<=(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // double <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > > operator<=(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // double <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > > operator<=(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // long double <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > > operator<=(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LessOrEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > > operator<=(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } // long double <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > > operator<=(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LessOrEqual > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex <= Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, LessOrEqual , T_numtype2 > > > operator<=(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, LessOrEqual , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, LessOrEqual , _bz_typename P_expr2::T_numtype > > > operator<=(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, LessOrEqual , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, LessOrEqual , int > > > operator<=(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, LessOrEqual , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Equality operators ****************************************************************************/ // Array == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Equal > > operator==(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Equal > (d1.begin(), d2.begin()); } // Array == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Equal > > operator==(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Equal > (d1.begin(), d2); } // Array == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Equal > > operator==(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Equal > (d1.begin(), d2); } // Array == int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array == float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array == double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array == long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array == complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Equal > > > operator==(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Equal > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Equal<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator==(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, Equal<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Equal<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator==(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, Equal<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Equal<_bz_typename P_expr1::T_numtype, int > > > operator==(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, Equal<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr == int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, int > > > operator==(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr == float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, float > > > operator==(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr == double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, double > > > operator==(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr == long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, long double > > > operator==(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, Equal<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr == complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Equal<_bz_typename P_expr1::T_numtype, complex > > > operator==(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , Equal<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, Equal > > operator==(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, Equal > (d1, d2.begin()); } // IndexPlaceholder == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, Equal > > operator==(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, Equal > (d1, d2); } // IndexPlaceholder == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, Equal > > operator==(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, Equal > (d1, d2); } // IndexPlaceholder == int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder == float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder == double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder == long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > > operator==(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, Equal > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder == complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , Equal > > > operator==(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , Equal > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > > operator==(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > (_bz_ArrayExprConstant(d1), d2.begin()); } // int == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > > operator==(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > (_bz_ArrayExprConstant(d1), d2); } // int == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > > operator==(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > (_bz_ArrayExprConstant(d1), d2); } // float == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > > operator==(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > (_bz_ArrayExprConstant(d1), d2.begin()); } // float == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > > operator==(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > (_bz_ArrayExprConstant(d1), d2); } // float == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > > operator==(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > (_bz_ArrayExprConstant(d1), d2); } // double == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > > operator==(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > (_bz_ArrayExprConstant(d1), d2.begin()); } // double == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > > operator==(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > (_bz_ArrayExprConstant(d1), d2); } // double == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > > operator==(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > (_bz_ArrayExprConstant(d1), d2); } // long double == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > > operator==(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, Equal > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > > operator==(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, Equal > (_bz_ArrayExprConstant(d1), d2); } // long double == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > > operator==(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, Equal > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex == Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Equal , T_numtype2 > > > operator==(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, Equal , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Equal , _bz_typename P_expr2::T_numtype > > > operator==(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, Equal , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Equal , int > > > operator==(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, Equal , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Not-equal operators ****************************************************************************/ // Array != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, NotEqual > > operator!=(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, NotEqual > (d1.begin(), d2.begin()); } // Array != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, NotEqual > > operator!=(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, NotEqual > (d1.begin(), d2); } // Array != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, NotEqual > > operator!=(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, NotEqual > (d1.begin(), d2); } // Array != int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array != float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(const Array& d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array != double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(const Array& d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } // Array != long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(const Array& d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // Array != complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , NotEqual > > > operator!=(const Array& d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , NotEqual > > (d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // _bz_ArrayExpr != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, NotEqual<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator!=(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, NotEqual<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, NotEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator!=(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, NotEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, NotEqual<_bz_typename P_expr1::T_numtype, int > > > operator!=(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, NotEqual<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr != int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, int > > > operator!=(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr != float template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, float > > > operator!=(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, float> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr != double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, double > > > operator!=(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, double> > (d1, _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr != long double template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, long double > > > operator!=(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, NotEqual<_bz_typename P_expr1::T_numtype, long double> > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // _bz_ArrayExpr != complex template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , NotEqual<_bz_typename P_expr1::T_numtype, complex > > > operator!=(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , NotEqual<_bz_typename P_expr1::T_numtype, complex > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // IndexPlaceholder != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, NotEqual > > operator!=(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, NotEqual > (d1, d2.begin()); } // IndexPlaceholder != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, NotEqual > > operator!=(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, NotEqual > (d1, d2); } // IndexPlaceholder != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, NotEqual > > operator!=(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, NotEqual > (d1, d2); } // IndexPlaceholder != int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder != float template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(IndexPlaceholder d1, float d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder != double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(IndexPlaceholder d1, double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder != long double template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > > operator!=(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, NotEqual > (d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX // IndexPlaceholder != complex template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant > , NotEqual > > > operator!=(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant > , NotEqual > > (d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX // int != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > > operator!=(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // int != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > > operator!=(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // int != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > > operator!=(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // float != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > > operator!=(float d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // float != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > > operator!=(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // float != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > > operator!=(float d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // double != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > > operator!=(double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // double != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > > operator!=(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // double != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > > operator!=(double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // long double != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > > operator!=(long double d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, NotEqual > (_bz_ArrayExprConstant(d1), d2.begin()); } // long double != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > > operator!=(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, NotEqual > (_bz_ArrayExprConstant(d1), d2); } // long double != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > > operator!=(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, NotEqual > (_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX // complex != Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, NotEqual , T_numtype2 > > > operator!=(complex d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , ArrayIterator, NotEqual , T_numtype2> > (_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, NotEqual , _bz_typename P_expr2::T_numtype > > > operator!=(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, NotEqual , _bz_typename P_expr2::T_numtype> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, NotEqual , int > > > operator!=(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant > , IndexPlaceholder, NotEqual , int> > (_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Logical AND operators ****************************************************************************/ // Array && Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, LogicalAnd > > operator&&(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, LogicalAnd > (d1.begin(), d2.begin()); } // Array && _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, LogicalAnd > > operator&&(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, LogicalAnd > (d1.begin(), d2); } // Array && IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, LogicalAnd > > operator&&(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, LogicalAnd > (d1.begin(), d2); } // Array && int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalAnd > > operator&&(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalAnd > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr && Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, LogicalAnd<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator&&(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, LogicalAnd<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr && _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, LogicalAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator&&(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, LogicalAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr && IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, LogicalAnd<_bz_typename P_expr1::T_numtype, int > > > operator&&(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, LogicalAnd<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr && int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LogicalAnd<_bz_typename P_expr1::T_numtype, int > > > operator&&(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LogicalAnd<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder && Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, LogicalAnd > > operator&&(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, LogicalAnd > (d1, d2.begin()); } // IndexPlaceholder && _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, LogicalAnd > > operator&&(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, LogicalAnd > (d1, d2); } // IndexPlaceholder && IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, LogicalAnd > > operator&&(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, LogicalAnd > (d1, d2); } // IndexPlaceholder && int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalAnd > > operator&&(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalAnd > (d1, _bz_ArrayExprConstant(d2)); } // int && Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LogicalAnd > > operator&&(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LogicalAnd > (_bz_ArrayExprConstant(d1), d2.begin()); } // int && _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LogicalAnd > > operator&&(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LogicalAnd > (_bz_ArrayExprConstant(d1), d2); } // int && IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LogicalAnd > > operator&&(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LogicalAnd > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Logical OR operators ****************************************************************************/ // Array || Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, LogicalOr > > operator||(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, LogicalOr > (d1.begin(), d2.begin()); } // Array || _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, LogicalOr > > operator||(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, LogicalOr > (d1.begin(), d2); } // Array || IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, LogicalOr > > operator||(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, LogicalOr > (d1.begin(), d2); } // Array || int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalOr > > operator||(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalOr > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr || Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, LogicalOr<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator||(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, LogicalOr<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr || _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, LogicalOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator||(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, LogicalOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr || IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, LogicalOr<_bz_typename P_expr1::T_numtype, int > > > operator||(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, LogicalOr<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr || int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LogicalOr<_bz_typename P_expr1::T_numtype, int > > > operator||(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, LogicalOr<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder || Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, LogicalOr > > operator||(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, LogicalOr > (d1, d2.begin()); } // IndexPlaceholder || _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, LogicalOr > > operator||(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, LogicalOr > (d1, d2); } // IndexPlaceholder || IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, LogicalOr > > operator||(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, LogicalOr > (d1, d2); } // IndexPlaceholder || int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalOr > > operator||(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, LogicalOr > (d1, _bz_ArrayExprConstant(d2)); } // int || Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LogicalOr > > operator||(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, LogicalOr > (_bz_ArrayExprConstant(d1), d2.begin()); } // int || _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LogicalOr > > operator||(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, LogicalOr > (_bz_ArrayExprConstant(d1), d2); } // int || IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LogicalOr > > operator||(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, LogicalOr > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Bitwise XOR Operators ****************************************************************************/ // Array ^ Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, BitwiseXor > > operator^(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, BitwiseXor > (d1.begin(), d2.begin()); } // Array ^ _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, BitwiseXor > > operator^(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, BitwiseXor > (d1.begin(), d2); } // Array ^ IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, BitwiseXor > > operator^(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, BitwiseXor > (d1.begin(), d2); } // Array ^ int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseXor > > operator^(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseXor > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr ^ Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, BitwiseXor<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator^(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, BitwiseXor<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr ^ _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, BitwiseXor<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator^(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, BitwiseXor<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr ^ IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, BitwiseXor<_bz_typename P_expr1::T_numtype, int > > > operator^(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, BitwiseXor<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr ^ int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, BitwiseXor<_bz_typename P_expr1::T_numtype, int > > > operator^(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, BitwiseXor<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder ^ Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, BitwiseXor > > operator^(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, BitwiseXor > (d1, d2.begin()); } // IndexPlaceholder ^ _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, BitwiseXor > > operator^(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, BitwiseXor > (d1, d2); } // IndexPlaceholder ^ IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, BitwiseXor > > operator^(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, BitwiseXor > (d1, d2); } // IndexPlaceholder ^ int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseXor > > operator^(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseXor > (d1, _bz_ArrayExprConstant(d2)); } // int ^ Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, BitwiseXor > > operator^(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, BitwiseXor > (_bz_ArrayExprConstant(d1), d2.begin()); } // int ^ _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, BitwiseXor > > operator^(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, BitwiseXor > (_bz_ArrayExprConstant(d1), d2); } // int ^ IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, BitwiseXor > > operator^(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, BitwiseXor > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Bitwise And Operators ****************************************************************************/ // Array & Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, BitwiseAnd > > operator&(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, BitwiseAnd > (d1.begin(), d2.begin()); } // Array & _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, BitwiseAnd > > operator&(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, BitwiseAnd > (d1.begin(), d2); } // Array & IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, BitwiseAnd > > operator&(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, BitwiseAnd > (d1.begin(), d2); } // Array & int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseAnd > > operator&(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseAnd > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr & Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, BitwiseAnd<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator&(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, BitwiseAnd<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr & _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, BitwiseAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator&(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, BitwiseAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr & IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, BitwiseAnd<_bz_typename P_expr1::T_numtype, int > > > operator&(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, BitwiseAnd<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr & int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, BitwiseAnd<_bz_typename P_expr1::T_numtype, int > > > operator&(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, BitwiseAnd<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder & Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, BitwiseAnd > > operator&(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, BitwiseAnd > (d1, d2.begin()); } // IndexPlaceholder & _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, BitwiseAnd > > operator&(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, BitwiseAnd > (d1, d2); } // IndexPlaceholder & IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, BitwiseAnd > > operator&(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, BitwiseAnd > (d1, d2); } // IndexPlaceholder & int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseAnd > > operator&(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseAnd > (d1, _bz_ArrayExprConstant(d2)); } // int & Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, BitwiseAnd > > operator&(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, BitwiseAnd > (_bz_ArrayExprConstant(d1), d2.begin()); } // int & _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, BitwiseAnd > > operator&(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, BitwiseAnd > (_bz_ArrayExprConstant(d1), d2); } // int & IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, BitwiseAnd > > operator&(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, BitwiseAnd > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Bitwise Or Operators ****************************************************************************/ // Array | Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, BitwiseOr > > operator|(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, BitwiseOr > (d1.begin(), d2.begin()); } // Array | _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, BitwiseOr > > operator|(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, BitwiseOr > (d1.begin(), d2); } // Array | IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, BitwiseOr > > operator|(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, BitwiseOr > (d1.begin(), d2); } // Array | int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseOr > > operator|(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseOr > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr | Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, BitwiseOr<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator|(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, BitwiseOr<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr | _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, BitwiseOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator|(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, BitwiseOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr | IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, BitwiseOr<_bz_typename P_expr1::T_numtype, int > > > operator|(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, BitwiseOr<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr | int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, BitwiseOr<_bz_typename P_expr1::T_numtype, int > > > operator|(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, BitwiseOr<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder | Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, BitwiseOr > > operator|(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, BitwiseOr > (d1, d2.begin()); } // IndexPlaceholder | _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, BitwiseOr > > operator|(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, BitwiseOr > (d1, d2); } // IndexPlaceholder | IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, BitwiseOr > > operator|(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, BitwiseOr > (d1, d2); } // IndexPlaceholder | int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseOr > > operator|(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, BitwiseOr > (d1, _bz_ArrayExprConstant(d2)); } // int | Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, BitwiseOr > > operator|(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, BitwiseOr > (_bz_ArrayExprConstant(d1), d2.begin()); } // int | _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, BitwiseOr > > operator|(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, BitwiseOr > (_bz_ArrayExprConstant(d1), d2); } // int | IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, BitwiseOr > > operator|(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, BitwiseOr > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Shift right Operators ****************************************************************************/ // Array >> Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, ShiftRight > > operator>>(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, ShiftRight > (d1.begin(), d2.begin()); } // Array >> _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, ShiftRight > > operator>>(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, ShiftRight > (d1.begin(), d2); } // Array >> IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, ShiftRight > > operator>>(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, ShiftRight > (d1.begin(), d2); } // Array >> int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftRight > > operator>>(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftRight > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr >> Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, ShiftRight<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator>>(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, ShiftRight<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr >> _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, ShiftRight<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator>>(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, ShiftRight<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr >> IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, ShiftRight<_bz_typename P_expr1::T_numtype, int > > > operator>>(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, ShiftRight<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr >> int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, ShiftRight<_bz_typename P_expr1::T_numtype, int > > > operator>>(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, ShiftRight<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder >> Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, ShiftRight > > operator>>(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, ShiftRight > (d1, d2.begin()); } // IndexPlaceholder >> _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, ShiftRight > > operator>>(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, ShiftRight > (d1, d2); } // IndexPlaceholder >> IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, ShiftRight > > operator>>(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, ShiftRight > (d1, d2); } // IndexPlaceholder >> int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftRight > > operator>>(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftRight > (d1, _bz_ArrayExprConstant(d2)); } // int >> Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, ShiftRight > > operator>>(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, ShiftRight > (_bz_ArrayExprConstant(d1), d2.begin()); } // int >> _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, ShiftRight > > operator>>(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, ShiftRight > (_bz_ArrayExprConstant(d1), d2); } // int >> IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, ShiftRight > > operator>>(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, ShiftRight > (_bz_ArrayExprConstant(d1), d2); } /**************************************************************************** * Shift left Operators ****************************************************************************/ // Array << Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, ShiftLeft > > operator<<(const Array& d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, ShiftLeft > (d1.begin(), d2.begin()); } // Array << _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, ShiftLeft > > operator<<(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, ShiftLeft > (d1.begin(), d2); } // Array << IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, ShiftLeft > > operator<<(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, ShiftLeft > (d1.begin(), d2); } // Array << int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftLeft > > operator<<(const Array& d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftLeft > (d1.begin(), _bz_ArrayExprConstant(d2)); } // _bz_ArrayExpr << Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, ShiftLeft<_bz_typename P_expr1::T_numtype, T_numtype2 > > > operator<<(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, ArrayIterator, ShiftLeft<_bz_typename P_expr1::T_numtype, T_numtype2> > (d1, d2.begin()); } // _bz_ArrayExpr << _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, ShiftLeft<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > > operator<<(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExpr, ShiftLeft<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > (d1, d2); } // _bz_ArrayExpr << IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, ShiftLeft<_bz_typename P_expr1::T_numtype, int > > > operator<<(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, IndexPlaceholder, ShiftLeft<_bz_typename P_expr1::T_numtype, int> > (d1, d2); } // _bz_ArrayExpr << int template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, ShiftLeft<_bz_typename P_expr1::T_numtype, int > > > operator<<(_bz_ArrayExpr d1, int d2) { return _bz_ArrayExprOp<_bz_ArrayExpr, _bz_ArrayExprConstant, ShiftLeft<_bz_typename P_expr1::T_numtype, int> > (d1, _bz_ArrayExprConstant(d2)); } // IndexPlaceholder << Array template inline _bz_ArrayExpr<_bz_ArrayExprOp, ArrayIterator, ShiftLeft > > operator<<(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprOp, ArrayIterator, ShiftLeft > (d1, d2.begin()); } // IndexPlaceholder << _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExpr, ShiftLeft > > operator<<(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp, _bz_ArrayExpr, ShiftLeft > (d1, d2); } // IndexPlaceholder << IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp, IndexPlaceholder, ShiftLeft > > operator<<(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprOp, IndexPlaceholder, ShiftLeft > (d1, d2); } // IndexPlaceholder << int template inline _bz_ArrayExpr<_bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftLeft > > operator<<(IndexPlaceholder d1, int d2) { return _bz_ArrayExprOp, _bz_ArrayExprConstant, ShiftLeft > (d1, _bz_ArrayExprConstant(d2)); } // int << Array template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, ShiftLeft > > operator<<(int d1, const Array& d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, ArrayIterator, ShiftLeft > (_bz_ArrayExprConstant(d1), d2.begin()); } // int << _bz_ArrayExpr template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, ShiftLeft > > operator<<(int d1, _bz_ArrayExpr d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, _bz_ArrayExpr, ShiftLeft > (_bz_ArrayExprConstant(d1), d2); } // int << IndexPlaceholder template inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, ShiftLeft > > operator<<(int d1, IndexPlaceholder d2) { return _bz_ArrayExprOp<_bz_ArrayExprConstant, IndexPlaceholder, ShiftLeft > (_bz_ArrayExprConstant(d1), d2); } BZ_NAMESPACE_END #endif