/*************************************************************************** * blitz/../vecbops.cc Vector expression templates (2 operands) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Suggestions: blitz-suggest@cybervision.com * Bugs: blitz-bugs@cybervision.com * * For more information, please see the Blitz++ Home Page: * http://seurat.uwaterloo.ca/blitz/ * *************************************************************************** * */ // Generated source file. Do not edit. // genvecbops.cpp Oct 6 2005 15:58:48 #ifndef BZ_VECBOPS_CC #define BZ_VECBOPS_CC #ifndef BZ_VECEXPR_H #error must be included via #endif BZ_NAMESPACE(blitz) /**************************************************************************** * Addition Operators ****************************************************************************/ // Vector + Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Add > > operator+(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Add > > operator+(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector + VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Add > > operator+(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector + Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Add > > operator+(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector + TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Add > > operator+(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector + int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector + float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector + double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector + long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector + complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Add > > > operator+(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Add > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr + Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Add > > operator+(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Add > > operator+(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr + VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Add > > operator+(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr + Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Add > > operator+(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr + TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Add > > operator+(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr + int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > > operator+(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr + float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > > operator+(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr + double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > > operator+(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr + long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > > operator+(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr + complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Add > > > operator+(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Add > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick + Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Add > > operator+(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Add > > operator+(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick + VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Add > > operator+(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick + Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Add > > operator+(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick + TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Add > > operator+(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick + int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick + float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick + double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick + long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick + complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Add > > > operator+(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Add > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range + Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range + VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range + Range inline _bz_VecExpr<_bz_VecExprOp > > operator+(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range + TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range + float inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range + double inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range + long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Add > > operator+(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range + complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Add > > > operator+(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Add > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector + Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Add > > operator+(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Add > > operator+(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector + VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Add > > operator+(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector + Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Add > > operator+(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector + TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Add > > operator+(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector + int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector + float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector + double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector + long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Add > > operator+(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Add > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector + complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Add > > > operator+(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Add > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int + Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > > operator+(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > > operator+(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int + VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > > operator+(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int + TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > > operator+(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float + Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > > operator+(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > > operator+(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float + VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > > operator+(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float + Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Add > > operator+(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float + TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > > operator+(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double + Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > > operator+(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > > operator+(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double + VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > > operator+(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double + Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Add > > operator+(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double + TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > > operator+(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double + Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > > operator+(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > > operator+(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double + VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > > operator+(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double + Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Add > > operator+(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double + TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > > operator+(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Add > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex + Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Add , P_numtype2 > > > operator+(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Add , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Add , typename P_expr2::T_numtype > > > operator+(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Add , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Add , P_numtype2 > > > operator+(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Add , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Add , int > > > operator+(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Add , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex + TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Add , P_numtype2 > > > operator+(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Add , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Subtraction Operators ****************************************************************************/ // Vector - Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Subtract > > operator-(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Subtract > > operator-(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector - VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Subtract > > operator-(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector - Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Subtract > > operator-(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector - TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Subtract > > operator-(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector - int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector - float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector - double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector - long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector - complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Subtract > > > operator-(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Subtract > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr - Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Subtract > > operator-(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Subtract > > operator-(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr - VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Subtract > > operator-(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr - Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Subtract > > operator-(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr - TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Subtract > > operator-(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr - int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > > operator-(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr - float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > > operator-(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr - double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > > operator-(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr - long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > > operator-(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr - complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Subtract > > > operator-(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Subtract > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick - Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Subtract > > operator-(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Subtract > > operator-(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick - VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Subtract > > operator-(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick - Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Subtract > > operator-(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick - TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Subtract > > operator-(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick - int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick - float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick - double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick - long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick - complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Subtract > > > operator-(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Subtract > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range - Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range - VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range - Range inline _bz_VecExpr<_bz_VecExprOp > > operator-(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range - TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range - float inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range - double inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range - long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Subtract > > operator-(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range - complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Subtract > > > operator-(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Subtract > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector - Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Subtract > > operator-(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Subtract > > operator-(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector - VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Subtract > > operator-(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector - Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Subtract > > operator-(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector - TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Subtract > > operator-(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector - int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector - float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector - double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector - long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > > operator-(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector - complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Subtract > > > operator-(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Subtract > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int - Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > > operator-(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > > operator-(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int - VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > > operator-(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int - TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > > operator-(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float - Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > > operator-(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > > operator-(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float - VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > > operator-(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float - Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Subtract > > operator-(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float - TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > > operator-(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double - Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > > operator-(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > > operator-(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double - VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > > operator-(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double - Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Subtract > > operator-(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double - TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > > operator-(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double - Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > > operator-(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > > operator-(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double - VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > > operator-(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double - Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Subtract > > operator-(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double - TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > > operator-(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Subtract > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex - Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Subtract , P_numtype2 > > > operator-(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Subtract , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Subtract , typename P_expr2::T_numtype > > > operator-(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Subtract , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Subtract , P_numtype2 > > > operator-(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Subtract , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Subtract , int > > > operator-(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Subtract , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex - TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Subtract , P_numtype2 > > > operator-(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Subtract , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Multiplication Operators ****************************************************************************/ // Vector * Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Multiply > > operator*(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Multiply > > operator*(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector * VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Multiply > > operator*(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector * Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Multiply > > operator*(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector * TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Multiply > > operator*(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector * int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector * float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector * double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector * long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector * complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Multiply > > > operator*(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Multiply > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr * Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Multiply > > operator*(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Multiply > > operator*(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr * VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Multiply > > operator*(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr * Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Multiply > > operator*(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr * TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Multiply > > operator*(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr * int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > > operator*(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr * float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > > operator*(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr * double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > > operator*(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr * long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > > operator*(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr * complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Multiply > > > operator*(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Multiply > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick * Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Multiply > > operator*(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Multiply > > operator*(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick * VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Multiply > > operator*(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick * Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Multiply > > operator*(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick * TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Multiply > > operator*(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick * int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick * float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick * double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick * long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick * complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Multiply > > > operator*(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Multiply > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range * Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range * VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range * Range inline _bz_VecExpr<_bz_VecExprOp > > operator*(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range * TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range * float inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range * double inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range * long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Multiply > > operator*(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range * complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Multiply > > > operator*(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Multiply > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector * Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Multiply > > operator*(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Multiply > > operator*(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector * VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Multiply > > operator*(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector * Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Multiply > > operator*(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector * TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Multiply > > operator*(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector * int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector * float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector * double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector * long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > > operator*(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector * complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Multiply > > > operator*(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Multiply > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int * Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > > operator*(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > > operator*(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int * VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > > operator*(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int * TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > > operator*(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float * Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > > operator*(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > > operator*(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float * VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > > operator*(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float * Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Multiply > > operator*(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float * TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > > operator*(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double * Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > > operator*(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > > operator*(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double * VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > > operator*(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double * Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Multiply > > operator*(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double * TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > > operator*(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double * Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > > operator*(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > > operator*(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double * VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > > operator*(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double * Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Multiply > > operator*(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double * TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > > operator*(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Multiply > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex * Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Multiply , P_numtype2 > > > operator*(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Multiply , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Multiply , typename P_expr2::T_numtype > > > operator*(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Multiply , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Multiply , P_numtype2 > > > operator*(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Multiply , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Multiply , int > > > operator*(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Multiply , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex * TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Multiply , P_numtype2 > > > operator*(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Multiply , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Division Operators ****************************************************************************/ // Vector / Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Divide > > operator/(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Divide > > operator/(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector / VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Divide > > operator/(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector / Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Divide > > operator/(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector / TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Divide > > operator/(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector / int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector / float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector / double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector / long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector / complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Divide > > > operator/(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Divide > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr / Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Divide > > operator/(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Divide > > operator/(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr / VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Divide > > operator/(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr / Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Divide > > operator/(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr / TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Divide > > operator/(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr / int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > > operator/(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr / float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > > operator/(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr / double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > > operator/(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr / long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > > operator/(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr / complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Divide > > > operator/(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Divide > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick / Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Divide > > operator/(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Divide > > operator/(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick / VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Divide > > operator/(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick / Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Divide > > operator/(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick / TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Divide > > operator/(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick / int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick / float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick / double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick / long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick / complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Divide > > > operator/(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Divide > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range / Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range / VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range / Range inline _bz_VecExpr<_bz_VecExprOp > > operator/(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range / TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range / float inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range / double inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range / long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Divide > > operator/(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range / complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Divide > > > operator/(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Divide > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector / Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Divide > > operator/(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Divide > > operator/(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector / VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Divide > > operator/(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector / Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Divide > > operator/(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector / TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Divide > > operator/(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector / int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector / float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector / double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector / long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > > operator/(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector / complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Divide > > > operator/(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Divide > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int / Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > > operator/(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > > operator/(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int / VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > > operator/(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int / TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > > operator/(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float / Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > > operator/(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > > operator/(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float / VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > > operator/(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float / Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Divide > > operator/(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float / TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > > operator/(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double / Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > > operator/(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > > operator/(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double / VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > > operator/(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double / Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Divide > > operator/(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double / TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > > operator/(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double / Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > > operator/(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > > operator/(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double / VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > > operator/(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double / Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Divide > > operator/(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double / TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > > operator/(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Divide > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex / Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Divide , P_numtype2 > > > operator/(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Divide , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Divide , typename P_expr2::T_numtype > > > operator/(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Divide , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Divide , P_numtype2 > > > operator/(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Divide , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Divide , int > > > operator/(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Divide , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex / TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Divide , P_numtype2 > > > operator/(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Divide , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Modulus Operators ****************************************************************************/ // Vector % Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Mod > > operator%(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector % _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Mod > > operator%(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector % VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Mod > > operator%(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector % Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Mod > > operator%(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector % TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Mod > > operator%(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector % int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Mod > > operator%(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr % Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Mod > > operator%(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr % _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Mod > > operator%(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr % VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Mod > > operator%(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr % Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Mod > > operator%(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr % TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Mod > > operator%(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr % int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Mod > > operator%(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick % Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Mod > > operator%(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick % _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Mod > > operator%(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick % VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Mod > > operator%(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick % Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Mod > > operator%(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick % TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Mod > > operator%(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick % int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Mod > > operator%(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range % Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Mod > > operator%(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range % _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Mod > > operator%(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range % VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Mod > > operator%(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range % Range inline _bz_VecExpr<_bz_VecExprOp > > operator%(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range % TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Mod > > operator%(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector % Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Mod > > operator%(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector % _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Mod > > operator%(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector % VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Mod > > operator%(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector % Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Mod > > operator%(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector % TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Mod > > operator%(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector % int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Mod > > operator%(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int % Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Mod > > operator%(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int % _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Mod > > operator%(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int % VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Mod > > operator%(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int % TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Mod > > operator%(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Mod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Bitwise XOR Operators ****************************************************************************/ // Vector ^ Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseXOR > > operator^(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector ^ _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseXOR > > operator^(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector ^ VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseXOR > > operator^(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector ^ Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseXOR > > operator^(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector ^ TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseXOR > > operator^(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector ^ int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseXOR > > operator^(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr ^ Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_BitwiseXOR > > operator^(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr ^ _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_BitwiseXOR > > operator^(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr ^ VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_BitwiseXOR > > operator^(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr ^ Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_BitwiseXOR > > operator^(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr ^ TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_BitwiseXOR > > operator^(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr ^ int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_BitwiseXOR > > operator^(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick ^ Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseXOR > > operator^(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick ^ _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseXOR > > operator^(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick ^ VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseXOR > > operator^(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick ^ Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseXOR > > operator^(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick ^ TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseXOR > > operator^(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick ^ int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseXOR > > operator^(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range ^ Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseXOR > > operator^(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range ^ _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseXOR > > operator^(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range ^ VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseXOR > > operator^(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range ^ Range inline _bz_VecExpr<_bz_VecExprOp > > operator^(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range ^ TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseXOR > > operator^(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector ^ Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseXOR > > operator^(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector ^ _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseXOR > > operator^(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector ^ VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseXOR > > operator^(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector ^ Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseXOR > > operator^(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector ^ TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseXOR > > operator^(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector ^ int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseXOR > > operator^(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int ^ Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_BitwiseXOR > > operator^(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int ^ _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_BitwiseXOR > > operator^(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int ^ VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_BitwiseXOR > > operator^(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int ^ TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_BitwiseXOR > > operator^(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_BitwiseXOR > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Bitwise And Operators ****************************************************************************/ // Vector & Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseAnd > > operator&(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector & _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseAnd > > operator&(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector & VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseAnd > > operator&(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector & Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseAnd > > operator&(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector & TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseAnd > > operator&(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector & int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseAnd > > operator&(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr & Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_BitwiseAnd > > operator&(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr & _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_BitwiseAnd > > operator&(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr & VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_BitwiseAnd > > operator&(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr & Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_BitwiseAnd > > operator&(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr & TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_BitwiseAnd > > operator&(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr & int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_BitwiseAnd > > operator&(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick & Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseAnd > > operator&(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick & _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseAnd > > operator&(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick & VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseAnd > > operator&(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick & Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseAnd > > operator&(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick & TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseAnd > > operator&(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick & int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseAnd > > operator&(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range & Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseAnd > > operator&(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range & _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseAnd > > operator&(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range & VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseAnd > > operator&(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range & Range inline _bz_VecExpr<_bz_VecExprOp > > operator&(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range & TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseAnd > > operator&(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector & Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseAnd > > operator&(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector & _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseAnd > > operator&(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector & VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseAnd > > operator&(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector & Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseAnd > > operator&(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector & TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseAnd > > operator&(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector & int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseAnd > > operator&(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int & Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_BitwiseAnd > > operator&(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int & _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_BitwiseAnd > > operator&(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int & VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_BitwiseAnd > > operator&(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int & TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_BitwiseAnd > > operator&(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_BitwiseAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Bitwise Or Operators ****************************************************************************/ // Vector | Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseOr > > operator|(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector | _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseOr > > operator|(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector | VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseOr > > operator|(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector | Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseOr > > operator|(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector | TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseOr > > operator|(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector | int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseOr > > operator|(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr | Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_BitwiseOr > > operator|(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr | _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_BitwiseOr > > operator|(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr | VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_BitwiseOr > > operator|(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr | Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_BitwiseOr > > operator|(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr | TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_BitwiseOr > > operator|(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr | int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_BitwiseOr > > operator|(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick | Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseOr > > operator|(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick | _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseOr > > operator|(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick | VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseOr > > operator|(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick | Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseOr > > operator|(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick | TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseOr > > operator|(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick | int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseOr > > operator|(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range | Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseOr > > operator|(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range | _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseOr > > operator|(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range | VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseOr > > operator|(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range | Range inline _bz_VecExpr<_bz_VecExprOp > > operator|(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range | TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_BitwiseOr > > operator|(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector | Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_BitwiseOr > > operator|(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector | _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_BitwiseOr > > operator|(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector | VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_BitwiseOr > > operator|(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector | Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_BitwiseOr > > operator|(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector | TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseOr > > operator|(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector | int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseOr > > operator|(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int | Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_BitwiseOr > > operator|(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int | _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_BitwiseOr > > operator|(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int | VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_BitwiseOr > > operator|(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int | TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_BitwiseOr > > operator|(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_BitwiseOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Shift right Operators ****************************************************************************/ // Vector >> Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_ShiftRight > > operator>>(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector >> _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_ShiftRight > > operator>>(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector >> VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_ShiftRight > > operator>>(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector >> Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_ShiftRight > > operator>>(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector >> TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_ShiftRight > > operator>>(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector >> int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftRight > > operator>>(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr >> Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_ShiftRight > > operator>>(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr >> _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_ShiftRight > > operator>>(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr >> VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_ShiftRight > > operator>>(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr >> Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_ShiftRight > > operator>>(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr >> TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_ShiftRight > > operator>>(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr >> int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_ShiftRight > > operator>>(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick >> Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_ShiftRight > > operator>>(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick >> _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_ShiftRight > > operator>>(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick >> VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_ShiftRight > > operator>>(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick >> Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_ShiftRight > > operator>>(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick >> TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_ShiftRight > > operator>>(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick >> int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftRight > > operator>>(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range >> Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftRight > > operator>>(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range >> _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftRight > > operator>>(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range >> VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftRight > > operator>>(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range >> Range inline _bz_VecExpr<_bz_VecExprOp > > operator>>(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range >> TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftRight > > operator>>(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector >> Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_ShiftRight > > operator>>(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector >> _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_ShiftRight > > operator>>(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector >> VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_ShiftRight > > operator>>(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector >> Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_ShiftRight > > operator>>(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector >> TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_ShiftRight > > operator>>(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector >> int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftRight > > operator>>(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int >> Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_ShiftRight > > operator>>(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int >> _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_ShiftRight > > operator>>(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int >> VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_ShiftRight > > operator>>(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int >> TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_ShiftRight > > operator>>(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_ShiftRight > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Shift left Operators ****************************************************************************/ // Vector << Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_ShiftLeft > > operator<<(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector << _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_ShiftLeft > > operator<<(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector << VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_ShiftLeft > > operator<<(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector << Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_ShiftLeft > > operator<<(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector << TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_ShiftLeft > > operator<<(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector << int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftLeft > > operator<<(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr << Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_ShiftLeft > > operator<<(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr << _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_ShiftLeft > > operator<<(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr << VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_ShiftLeft > > operator<<(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr << Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_ShiftLeft > > operator<<(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr << TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_ShiftLeft > > operator<<(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr << int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_ShiftLeft > > operator<<(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick << Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_ShiftLeft > > operator<<(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick << _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_ShiftLeft > > operator<<(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick << VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_ShiftLeft > > operator<<(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick << Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_ShiftLeft > > operator<<(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick << TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_ShiftLeft > > operator<<(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick << int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftLeft > > operator<<(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range << Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftLeft > > operator<<(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range << _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftLeft > > operator<<(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range << VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftLeft > > operator<<(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range << Range inline _bz_VecExpr<_bz_VecExprOp > > operator<<(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range << TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_ShiftLeft > > operator<<(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector << Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_ShiftLeft > > operator<<(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector << _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_ShiftLeft > > operator<<(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector << VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_ShiftLeft > > operator<<(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector << Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_ShiftLeft > > operator<<(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector << TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_ShiftLeft > > operator<<(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector << int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftLeft > > operator<<(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int << Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_ShiftLeft > > operator<<(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int << _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_ShiftLeft > > operator<<(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int << VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_ShiftLeft > > operator<<(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int << TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_ShiftLeft > > operator<<(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_ShiftLeft > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Greater-than Operators ****************************************************************************/ // Vector > Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Greater > > operator>(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Greater > > operator>(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector > VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Greater > > operator>(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector > Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Greater > > operator>(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector > TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Greater > > operator>(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector > int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector > float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector > double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector > long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector > complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Greater > > > operator>(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Greater > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr > Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Greater > > operator>(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Greater > > operator>(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr > VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Greater > > operator>(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr > Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Greater > > operator>(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr > TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Greater > > operator>(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr > int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > > operator>(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr > float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > > operator>(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr > double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > > operator>(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr > long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > > operator>(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr > complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Greater > > > operator>(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Greater > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick > Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Greater > > operator>(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Greater > > operator>(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick > VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Greater > > operator>(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick > Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Greater > > operator>(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick > TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Greater > > operator>(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick > int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick > float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick > double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick > long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick > complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Greater > > > operator>(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Greater > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range > Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range > VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range > Range inline _bz_VecExpr<_bz_VecExprOp > > operator>(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range > TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range > float inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range > double inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range > long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Greater > > operator>(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range > complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Greater > > > operator>(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Greater > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector > Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Greater > > operator>(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Greater > > operator>(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector > VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Greater > > operator>(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector > Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Greater > > operator>(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector > TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Greater > > operator>(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector > int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector > float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector > double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector > long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > > operator>(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector > complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Greater > > > operator>(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Greater > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int > Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > > operator>(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > > operator>(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int > VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > > operator>(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int > TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > > operator>(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float > Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > > operator>(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > > operator>(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float > VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > > operator>(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float > Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Greater > > operator>(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float > TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > > operator>(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double > Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > > operator>(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > > operator>(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double > VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > > operator>(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double > Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Greater > > operator>(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double > TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > > operator>(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double > Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > > operator>(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > > operator>(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double > VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > > operator>(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double > Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Greater > > operator>(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double > TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > > operator>(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Greater > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex > Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Greater , P_numtype2 > > > operator>(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Greater , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Greater , typename P_expr2::T_numtype > > > operator>(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Greater , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Greater , P_numtype2 > > > operator>(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Greater , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Greater , int > > > operator>(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Greater , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex > TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Greater , P_numtype2 > > > operator>(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Greater , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Less-than Operators ****************************************************************************/ // Vector < Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Less > > operator<(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Less > > operator<(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector < VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Less > > operator<(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector < Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Less > > operator<(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector < TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Less > > operator<(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector < int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector < float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector < double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector < long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector < complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Less > > > operator<(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Less > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr < Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Less > > operator<(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Less > > operator<(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr < VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Less > > operator<(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr < Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Less > > operator<(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr < TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Less > > operator<(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr < int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > > operator<(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr < float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > > operator<(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr < double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > > operator<(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr < long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > > operator<(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr < complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Less > > > operator<(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Less > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick < Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Less > > operator<(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Less > > operator<(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick < VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Less > > operator<(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick < Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Less > > operator<(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick < TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Less > > operator<(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick < int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick < float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick < double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick < long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick < complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Less > > > operator<(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Less > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range < Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range < VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range < Range inline _bz_VecExpr<_bz_VecExprOp > > operator<(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range < TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range < float inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range < double inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range < long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Less > > operator<(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range < complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Less > > > operator<(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Less > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector < Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Less > > operator<(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Less > > operator<(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector < VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Less > > operator<(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector < Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Less > > operator<(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector < TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Less > > operator<(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector < int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector < float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector < double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector < long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Less > > operator<(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Less > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector < complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Less > > > operator<(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Less > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int < Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > > operator<(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > > operator<(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int < VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > > operator<(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int < TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > > operator<(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float < Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > > operator<(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > > operator<(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float < VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > > operator<(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float < Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Less > > operator<(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float < TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > > operator<(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double < Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > > operator<(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > > operator<(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double < VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > > operator<(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double < Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Less > > operator<(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double < TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > > operator<(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double < Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > > operator<(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > > operator<(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double < VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > > operator<(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double < Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Less > > operator<(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double < TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > > operator<(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Less > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex < Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Less , P_numtype2 > > > operator<(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Less , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Less , typename P_expr2::T_numtype > > > operator<(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Less , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Less , P_numtype2 > > > operator<(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Less , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Less , int > > > operator<(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Less , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex < TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Less , P_numtype2 > > > operator<(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Less , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Greater or equal (>=) operators ****************************************************************************/ // Vector >= Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_GreaterOrEqual > > operator>=(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector >= Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_GreaterOrEqual > > operator>=(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector >= int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector >= float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector >= double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector >= long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector >= complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_GreaterOrEqual > > > operator>=(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_GreaterOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr >= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr >= Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr >= int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr >= float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr >= double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr >= long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr >= complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_GreaterOrEqual > > > operator>=(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_GreaterOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick >= Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick >= Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick >= int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick >= float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick >= double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick >= long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick >= complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_GreaterOrEqual > > > operator>=(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_GreaterOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range >= Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range >= Range inline _bz_VecExpr<_bz_VecExprOp > > operator>=(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range >= float inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, float d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range >= double inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, double d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range >= long double inline _bz_VecExpr<_bz_VecExprOp, _bz_GreaterOrEqual > > operator>=(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range >= complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_GreaterOrEqual > > > operator>=(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_GreaterOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector >= Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector >= Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector >= int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector >= float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector >= double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector >= long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > > operator>=(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector >= complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_GreaterOrEqual > > > operator>=(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_GreaterOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int >= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > > operator>=(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float >= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > > operator>=(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float >= Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_GreaterOrEqual > > operator>=(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double >= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > > operator>=(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double >= Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_GreaterOrEqual > > operator>=(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double >= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > > operator>=(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > > operator>=(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > > operator>=(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double >= Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_GreaterOrEqual > > operator>=(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > > operator>=(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_GreaterOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex >= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_GreaterOrEqual , P_numtype2 > > > operator>=(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_GreaterOrEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_GreaterOrEqual , typename P_expr2::T_numtype > > > operator>=(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_GreaterOrEqual , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_GreaterOrEqual , P_numtype2 > > > operator>=(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_GreaterOrEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_GreaterOrEqual , int > > > operator>=(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_GreaterOrEqual , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex >= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_GreaterOrEqual , P_numtype2 > > > operator>=(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_GreaterOrEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Less or equal (<=) operators ****************************************************************************/ // Vector <= Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LessOrEqual > > operator<=(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LessOrEqual > > operator<=(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LessOrEqual > > operator<=(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector <= Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LessOrEqual > > operator<=(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector <= int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector <= float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector <= double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector <= long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector <= complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_LessOrEqual > > > operator<=(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_LessOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr <= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr <= Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr <= int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr <= float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr <= double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr <= long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr <= complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_LessOrEqual > > > operator<=(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_LessOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick <= Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LessOrEqual > > operator<=(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LessOrEqual > > operator<=(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LessOrEqual > > operator<=(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick <= Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LessOrEqual > > operator<=(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick <= int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick <= float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick <= double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick <= long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick <= complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_LessOrEqual > > > operator<=(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_LessOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range <= Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range <= Range inline _bz_VecExpr<_bz_VecExprOp > > operator<=(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range <= float inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, float d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range <= double inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, double d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range <= long double inline _bz_VecExpr<_bz_VecExprOp, _bz_LessOrEqual > > operator<=(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range <= complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_LessOrEqual > > > operator<=(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_LessOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector <= Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LessOrEqual > > operator<=(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LessOrEqual > > operator<=(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LessOrEqual > > operator<=(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector <= Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LessOrEqual > > operator<=(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector <= int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector <= float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector <= double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector <= long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > > operator<=(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector <= complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_LessOrEqual > > > operator<=(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_LessOrEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int <= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > > operator<=(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > > operator<=(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > > operator<=(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float <= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > > operator<=(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > > operator<=(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > > operator<=(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float <= Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_LessOrEqual > > operator<=(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double <= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > > operator<=(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > > operator<=(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > > operator<=(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double <= Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_LessOrEqual > > operator<=(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double <= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > > operator<=(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > > operator<=(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > > operator<=(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double <= Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_LessOrEqual > > operator<=(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > > operator<=(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LessOrEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex <= Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_LessOrEqual , P_numtype2 > > > operator<=(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_LessOrEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_LessOrEqual , typename P_expr2::T_numtype > > > operator<=(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_LessOrEqual , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_LessOrEqual , P_numtype2 > > > operator<=(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_LessOrEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_LessOrEqual , int > > > operator<=(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_LessOrEqual , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex <= TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_LessOrEqual , P_numtype2 > > > operator<=(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_LessOrEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Equality operators ****************************************************************************/ // Vector == Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Equal > > operator==(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Equal > > operator==(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector == VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Equal > > operator==(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector == Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Equal > > operator==(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector == TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Equal > > operator==(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector == int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector == float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector == double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector == long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector == complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Equal > > > operator==(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Equal > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr == Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Equal > > operator==(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Equal > > operator==(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr == VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Equal > > operator==(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr == Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_Equal > > operator==(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr == TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Equal > > operator==(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr == int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > > operator==(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr == float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > > operator==(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr == double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > > operator==(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr == long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > > operator==(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr == complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Equal > > > operator==(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_Equal > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick == Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Equal > > operator==(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Equal > > operator==(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick == VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Equal > > operator==(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick == Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Equal > > operator==(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick == TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Equal > > operator==(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick == int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick == float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick == double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick == long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick == complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Equal > > > operator==(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Equal > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range == Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range == VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range == Range inline _bz_VecExpr<_bz_VecExprOp > > operator==(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range == TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range == float inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, float d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range == double inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, double d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range == long double inline _bz_VecExpr<_bz_VecExprOp, _bz_Equal > > operator==(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range == complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_Equal > > > operator==(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_Equal > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector == Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_Equal > > operator==(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_Equal > > operator==(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector == VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_Equal > > operator==(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector == Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_Equal > > operator==(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector == TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_Equal > > operator==(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector == int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector == float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector == double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector == long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > > operator==(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector == complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_Equal > > > operator==(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_Equal > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int == Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > > operator==(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > > operator==(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int == VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > > operator==(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int == TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > > operator==(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float == Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > > operator==(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > > operator==(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float == VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > > operator==(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float == Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Equal > > operator==(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float == TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > > operator==(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double == Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > > operator==(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > > operator==(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double == VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > > operator==(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double == Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Equal > > operator==(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double == TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > > operator==(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double == Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > > operator==(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > > operator==(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double == VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > > operator==(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double == Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Equal > > operator==(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double == TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > > operator==(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_Equal > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex == Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Equal , P_numtype2 > > > operator==(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_Equal , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Equal , typename P_expr2::T_numtype > > > operator==(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_Equal , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Equal , P_numtype2 > > > operator==(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_Equal , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Equal , int > > > operator==(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_Equal , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex == TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Equal , P_numtype2 > > > operator==(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_Equal , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Not-equal operators ****************************************************************************/ // Vector != Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_NotEqual > > operator!=(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_NotEqual > > operator!=(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector != VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_NotEqual > > operator!=(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector != Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_NotEqual > > operator!=(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector != TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_NotEqual > > operator!=(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector != int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector != float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector != double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Vector != long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Vector != complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_NotEqual > > > operator!=(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_NotEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // _bz_VecExpr != Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_NotEqual > > operator!=(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_NotEqual > > operator!=(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr != VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_NotEqual > > operator!=(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr != Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_NotEqual > > operator!=(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr != TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_NotEqual > > operator!=(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr != int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > > operator!=(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr != float template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > > operator!=(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr != double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > > operator!=(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // _bz_VecExpr != long double template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > > operator!=(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // _bz_VecExpr != complex template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_NotEqual > > > operator!=(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_NotEqual > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // VectorPick != Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_NotEqual > > operator!=(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_NotEqual > > operator!=(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick != VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_NotEqual > > operator!=(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick != Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_NotEqual > > operator!=(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick != TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_NotEqual > > operator!=(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick != int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick != float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick != double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // VectorPick != long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // VectorPick != complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_NotEqual > > > operator!=(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_NotEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // Range != Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range != VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range != Range inline _bz_VecExpr<_bz_VecExprOp > > operator!=(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range != TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range != float inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, float d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range != double inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, double d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // Range != long double inline _bz_VecExpr<_bz_VecExprOp, _bz_NotEqual > > operator!=(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // Range != complex template inline _bz_VecExpr<_bz_VecExprOp > , _bz_NotEqual > > > operator!=(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_NotEqual > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // TinyVector != Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_NotEqual > > operator!=(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_NotEqual > > operator!=(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector != VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_NotEqual > > operator!=(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector != Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_NotEqual > > operator!=(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector != TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_NotEqual > > operator!=(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector != int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector != float template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector != double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // TinyVector != long double template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > > operator!=(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } #ifdef BZ_HAVE_COMPLEX // TinyVector != complex template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_NotEqual > > > operator!=(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_NotEqual > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } #endif // BZ_HAVE_COMPLEX // int != Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > > operator!=(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > > operator!=(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int != VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > > operator!=(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int != TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > > operator!=(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float != Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > > operator!=(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > > operator!=(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float != VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > > operator!=(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // float != Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_NotEqual > > operator!=(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // float != TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > > operator!=(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double != Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > > operator!=(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > > operator!=(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double != VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > > operator!=(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // double != Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_NotEqual > > operator!=(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // double != TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > > operator!=(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double != Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > > operator!=(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > > operator!=(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double != VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > > operator!=(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // long double != Range inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_NotEqual > > operator!=(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // long double != TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > > operator!=(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_NotEqual > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } #ifdef BZ_HAVE_COMPLEX // complex != Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_NotEqual , P_numtype2 > > > operator!=(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_NotEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_NotEqual , typename P_expr2::T_numtype > > > operator!=(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_NotEqual , typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_NotEqual , P_numtype2 > > > operator!=(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_NotEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_NotEqual , int > > > operator!=(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_NotEqual , int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX // complex != TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_NotEqual , P_numtype2 > > > operator!=(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_NotEqual , P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * Logical AND operators ****************************************************************************/ // Vector && Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LogicalAnd > > operator&&(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector && _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LogicalAnd > > operator&&(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector && VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LogicalAnd > > operator&&(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector && Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LogicalAnd > > operator&&(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector && TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LogicalAnd > > operator&&(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector && int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalAnd > > operator&&(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr && Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_LogicalAnd > > operator&&(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr && _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_LogicalAnd > > operator&&(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr && VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_LogicalAnd > > operator&&(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr && Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_LogicalAnd > > operator&&(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr && TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_LogicalAnd > > operator&&(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr && int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LogicalAnd > > operator&&(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick && Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LogicalAnd > > operator&&(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick && _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LogicalAnd > > operator&&(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick && VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LogicalAnd > > operator&&(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick && Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LogicalAnd > > operator&&(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick && TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LogicalAnd > > operator&&(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick && int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalAnd > > operator&&(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range && Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalAnd > > operator&&(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range && _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalAnd > > operator&&(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range && VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalAnd > > operator&&(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range && Range inline _bz_VecExpr<_bz_VecExprOp > > operator&&(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range && TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalAnd > > operator&&(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector && Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LogicalAnd > > operator&&(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector && _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LogicalAnd > > operator&&(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector && VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LogicalAnd > > operator&&(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector && Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LogicalAnd > > operator&&(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector && TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LogicalAnd > > operator&&(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector && int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalAnd > > operator&&(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int && Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LogicalAnd > > operator&&(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int && _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LogicalAnd > > operator&&(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int && VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LogicalAnd > > operator&&(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int && TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LogicalAnd > > operator&&(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LogicalAnd > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } /**************************************************************************** * Logical OR operators ****************************************************************************/ // Vector || Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LogicalOr > > operator||(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector || _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LogicalOr > > operator||(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector || VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LogicalOr > > operator||(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector || Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LogicalOr > > operator||(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // Vector || TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LogicalOr > > operator||(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // Vector || int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalOr > > operator||(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // _bz_VecExpr || Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_LogicalOr > > operator||(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr || _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_LogicalOr > > operator||(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr || VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_LogicalOr > > operator||(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr || Range template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_LogicalOr > > operator||(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // _bz_VecExpr || TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_LogicalOr > > operator||(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // _bz_VecExpr || int template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LogicalOr > > operator||(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } // VectorPick || Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LogicalOr > > operator||(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick || _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LogicalOr > > operator||(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick || VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LogicalOr > > operator||(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick || Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LogicalOr > > operator||(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // VectorPick || TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LogicalOr > > operator||(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // VectorPick || int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalOr > > operator||(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // Range || Vector template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalOr > > operator||(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range || _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalOr > > operator||(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range || VectorPick template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalOr > > operator||(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // Range || Range inline _bz_VecExpr<_bz_VecExprOp > > operator||(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } // Range || TinyVector template inline _bz_VecExpr<_bz_VecExprOp, _bz_LogicalOr > > operator||(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } // TinyVector || Vector template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_LogicalOr > > operator||(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector || _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_LogicalOr > > operator||(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector || VectorPick template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_LogicalOr > > operator||(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector || Range template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_LogicalOr > > operator||(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } // TinyVector || TinyVector template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_LogicalOr > > operator||(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } // TinyVector || int template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalOr > > operator||(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } // int || Vector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LogicalOr > > operator||(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int || _bz_VecExpr template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LogicalOr > > operator||(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } // int || VectorPick template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LogicalOr > > operator||(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } // int || TinyVector template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LogicalOr > > operator||(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_LogicalOr > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } BZ_NAMESPACE_END #endif