/*************************************************************************** * blitz/vecwhere.cc where(X,Y,Z) function for vectors * * $Id: vecwhere.cc,v 1.1.1.1 1999-04-09 17:59:00 ansari Exp $ * * Copyright (C) 1997 Todd Veldhuizen * All rights reserved. Please see for terms and * conditions of use. * * Suggestions: blitz-suggest@cybervision.com * Bugs: blitz-bugs@cybervision.com * Licensing inquiries: blitz-licenses@cybervision.com * * For more information, please see the Blitz++ Home Page: * http://seurat.uwaterloo.ca/blitz/ * *************************************************************************** * $Log: not supported by cvs2svn $ * Revision 1.1 1997/07/16 14:51:20 tveldhui * Update: Alpha release 0.2 (Arrays) * */ // Generated source file. Do not edit. // genvecwhere.cpp Feb 5 1997 09:52:29 #ifndef BZ_VECWHERE_CC #define BZ_VECWHERE_CC BZ_NAMESPACE(blitz) // where(Vector, Vector, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, VectorIterConst > > where(const Vector& d1, const Vector& d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, Vector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExpr > > where(const Vector& d1, const Vector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(Vector, Vector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, VectorPickIterConst > > where(const Vector& d1, const Vector& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, Vector, Range) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, Range > > where(const Vector& d1, const Vector& d2, Range d3) { typedef _bz_VecWhere, VectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(Vector, Vector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, TinyVectorIterConst > > where(const Vector& d1, const Vector& d2, const TinyVector& d3) { typedef _bz_VecWhere, VectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, Vector, int) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const Vector& d2, int d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, Vector, float) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const Vector& d2, float d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, Vector, double) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const Vector& d2, double d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, Vector, long double) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const Vector& d2, long double d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, Vector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > > where(const Vector& d1, const Vector& d2, complex d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Vector, _bz_VecExpr, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, VectorIterConst > > where(const Vector& d1, _bz_VecExpr d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExpr, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(Vector, _bz_VecExpr, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExpr > > where(const Vector& d1, _bz_VecExpr d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(Vector, _bz_VecExpr, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, VectorPickIterConst > > where(const Vector& d1, _bz_VecExpr d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExpr, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(Vector, _bz_VecExpr, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, Range > > where(const Vector& d1, _bz_VecExpr d2, Range d3) { typedef _bz_VecWhere, _bz_VecExpr, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(Vector, _bz_VecExpr, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, TinyVectorIterConst > > where(const Vector& d1, _bz_VecExpr d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExpr, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(Vector, _bz_VecExpr, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const Vector& d1, _bz_VecExpr d2, int d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, _bz_VecExpr, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const Vector& d1, _bz_VecExpr d2, float d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, _bz_VecExpr, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const Vector& d1, _bz_VecExpr d2, double d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, _bz_VecExpr, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const Vector& d1, _bz_VecExpr d2, long double d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, _bz_VecExpr, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > > where(const Vector& d1, _bz_VecExpr d2, complex d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Vector, VectorPick, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, VectorIterConst > > where(const Vector& d1, const VectorPick& d2, const Vector& d3) { typedef _bz_VecWhere, VectorPickIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, VectorPick, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExpr > > where(const Vector& d1, const VectorPick& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(Vector, VectorPick, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, VectorPickIterConst > > where(const Vector& d1, const VectorPick& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, VectorPick, Range) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, Range > > where(const Vector& d1, const VectorPick& d2, Range d3) { typedef _bz_VecWhere, VectorPickIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(Vector, VectorPick, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, TinyVectorIterConst > > where(const Vector& d1, const VectorPick& d2, const TinyVector& d3) { typedef _bz_VecWhere, VectorPickIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, VectorPick, int) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const Vector& d1, const VectorPick& d2, int d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, VectorPick, float) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const Vector& d1, const VectorPick& d2, float d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, VectorPick, double) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const Vector& d1, const VectorPick& d2, double d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, VectorPick, long double) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const Vector& d1, const VectorPick& d2, long double d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, VectorPick, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > > where(const Vector& d1, const VectorPick& d2, complex d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Vector, Range, Vector) template inline _bz_VecExpr<_bz_VecWhere, Range, VectorIterConst > > where(const Vector& d1, Range d2, const Vector& d3) { typedef _bz_VecWhere, Range, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(Vector, Range, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExpr > > where(const Vector& d1, Range d2, _bz_VecExpr d3) { typedef _bz_VecWhere, Range, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(Vector, Range, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, Range, VectorPickIterConst > > where(const Vector& d1, Range d2, const VectorPick& d3) { typedef _bz_VecWhere, Range, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(Vector, Range, Range) template inline _bz_VecExpr<_bz_VecWhere, Range, Range > > where(const Vector& d1, Range d2, Range d3) { typedef _bz_VecWhere, Range, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(Vector, Range, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, Range, TinyVectorIterConst > > where(const Vector& d1, Range d2, const TinyVector& d3) { typedef _bz_VecWhere, Range, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(Vector, Range, int) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const Vector& d1, Range d2, int d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, Range, float) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const Vector& d1, Range d2, float d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, Range, double) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const Vector& d1, Range d2, double d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, Range, long double) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const Vector& d1, Range d2, long double d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(Vector, Range, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > > where(const Vector& d1, Range d2, complex d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Vector, TinyVector, Vector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, VectorIterConst > > where(const Vector& d1, const TinyVector& d2, const Vector& d3) { typedef _bz_VecWhere, TinyVectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, TinyVector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExpr > > where(const Vector& d1, const TinyVector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(Vector, TinyVector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, VectorPickIterConst > > where(const Vector& d1, const TinyVector& d2, const VectorPick& d3) { typedef _bz_VecWhere, TinyVectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, TinyVector, Range) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, Range > > where(const Vector& d1, const TinyVector& d2, Range d3) { typedef _bz_VecWhere, TinyVectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(Vector, TinyVector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, TinyVectorIterConst > > where(const Vector& d1, const TinyVector& d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(Vector, TinyVector, int) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const TinyVector& d2, int d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, TinyVector, float) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const TinyVector& d2, float d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, TinyVector, double) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const TinyVector& d2, double d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, TinyVector, long double) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const Vector& d1, const TinyVector& d2, long double d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(Vector, TinyVector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > > where(const Vector& d1, const TinyVector& d2, complex d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Vector, int, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const Vector& d1, int d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, int, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const Vector& d1, int d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, int, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const Vector& d1, int d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, int, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const Vector& d1, int d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, int, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const Vector& d1, int d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, int, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const Vector& d1, int d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Vector, float, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const Vector& d1, float d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, float, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const Vector& d1, float d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, float, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const Vector& d1, float d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, float, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const Vector& d1, float d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, float, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const Vector& d1, float d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, float, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const Vector& d1, float d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Vector, double, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const Vector& d1, double d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const Vector& d1, double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const Vector& d1, double d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, double, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const Vector& d1, double d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const Vector& d1, double d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, double, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const Vector& d1, double d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Vector, long double, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const Vector& d1, long double d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, long double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const Vector& d1, long double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, long double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const Vector& d1, long double d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, long double, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const Vector& d1, long double d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(Vector, long double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const Vector& d1, long double d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(Vector, long double, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const Vector& d1, long double d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Vector, complex, Vector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , VectorIterConst > > where(const Vector& d1, complex d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(Vector, complex, _bz_VecExpr) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , _bz_VecExpr > > where(const Vector& d1, complex d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(Vector, complex, VectorPick) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , VectorPickIterConst > > where(const Vector& d1, complex d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(Vector, complex, Range) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , Range > > where(const Vector& d1, complex d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(Vector, complex, TinyVector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , TinyVectorIterConst > > where(const Vector& d1, complex d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(Vector, complex, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , _bz_VecExprConstant > > > where(const Vector& d1, complex d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, Vector, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, VectorIterConst > > where(_bz_VecExpr d1, const Vector& d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, Vector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExpr > > where(_bz_VecExpr d1, const Vector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(_bz_VecExpr, Vector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, VectorPickIterConst > > where(_bz_VecExpr d1, const Vector& d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, Vector, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, Range > > where(_bz_VecExpr d1, const Vector& d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(_bz_VecExpr, Vector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, TinyVectorIterConst > > where(_bz_VecExpr d1, const Vector& d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, Vector, int) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const Vector& d2, int d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Vector, float) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const Vector& d2, float d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Vector, double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const Vector& d2, double d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Vector, long double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const Vector& d2, long double d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Vector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > > > where(_bz_VecExpr d1, const Vector& d2, complex d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, _bz_VecExpr, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, VectorIterConst > > where(_bz_VecExpr d1, _bz_VecExpr d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(_bz_VecExpr, _bz_VecExpr, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExpr > > where(_bz_VecExpr d1, _bz_VecExpr d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(_bz_VecExpr, _bz_VecExpr, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, VectorPickIterConst > > where(_bz_VecExpr d1, _bz_VecExpr d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(_bz_VecExpr, _bz_VecExpr, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, Range > > where(_bz_VecExpr d1, _bz_VecExpr d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(_bz_VecExpr, _bz_VecExpr, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, TinyVectorIterConst > > where(_bz_VecExpr d1, _bz_VecExpr d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(_bz_VecExpr, _bz_VecExpr, int) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > > where(_bz_VecExpr d1, _bz_VecExpr d2, int d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, _bz_VecExpr, float) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > > where(_bz_VecExpr d1, _bz_VecExpr d2, float d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, _bz_VecExpr, double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > > where(_bz_VecExpr d1, _bz_VecExpr d2, double d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, _bz_VecExpr, long double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > > where(_bz_VecExpr d1, _bz_VecExpr d2, long double d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, _bz_VecExpr, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > > > where(_bz_VecExpr d1, _bz_VecExpr d2, complex d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExpr, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, VectorPick, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, VectorIterConst > > where(_bz_VecExpr d1, const VectorPick& d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, VectorPick, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExpr > > where(_bz_VecExpr d1, const VectorPick& d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(_bz_VecExpr, VectorPick, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, VectorPickIterConst > > where(_bz_VecExpr d1, const VectorPick& d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, VectorPick, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, Range > > where(_bz_VecExpr d1, const VectorPick& d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(_bz_VecExpr, VectorPick, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, TinyVectorIterConst > > where(_bz_VecExpr d1, const VectorPick& d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, VectorPick, int) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const VectorPick& d2, int d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, VectorPick, float) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const VectorPick& d2, float d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, VectorPick, double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const VectorPick& d2, double d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, VectorPick, long double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const VectorPick& d2, long double d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, VectorPick, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > > > where(_bz_VecExpr d1, const VectorPick& d2, complex d3) { typedef _bz_VecWhere<_bz_VecExpr, VectorPickIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, Range, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, VectorIterConst > > where(_bz_VecExpr d1, Range d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(_bz_VecExpr, Range, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, _bz_VecExpr > > where(_bz_VecExpr d1, Range d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(_bz_VecExpr, Range, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, VectorPickIterConst > > where(_bz_VecExpr d1, Range d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(_bz_VecExpr, Range, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, Range > > where(_bz_VecExpr d1, Range d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(_bz_VecExpr, Range, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, TinyVectorIterConst > > where(_bz_VecExpr d1, Range d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(_bz_VecExpr, Range, int) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > > where(_bz_VecExpr d1, Range d2, int d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Range, float) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > > where(_bz_VecExpr d1, Range d2, float d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Range, double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > > where(_bz_VecExpr d1, Range d2, double d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Range, long double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > > where(_bz_VecExpr d1, Range d2, long double d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, Range, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > > > where(_bz_VecExpr d1, Range d2, complex d3) { typedef _bz_VecWhere<_bz_VecExpr, Range, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, TinyVector, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, VectorIterConst > > where(_bz_VecExpr d1, const TinyVector& d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, TinyVector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExpr > > where(_bz_VecExpr d1, const TinyVector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(_bz_VecExpr, TinyVector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, VectorPickIterConst > > where(_bz_VecExpr d1, const TinyVector& d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, TinyVector, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, Range > > where(_bz_VecExpr d1, const TinyVector& d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(_bz_VecExpr, TinyVector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, TinyVectorIterConst > > where(_bz_VecExpr d1, const TinyVector& d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(_bz_VecExpr, TinyVector, int) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const TinyVector& d2, int d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, TinyVector, float) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const TinyVector& d2, float d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, TinyVector, double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const TinyVector& d2, double d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, TinyVector, long double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > > where(_bz_VecExpr d1, const TinyVector& d2, long double d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, TinyVector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > > > where(_bz_VecExpr d1, const TinyVector& d2, complex d3) { typedef _bz_VecWhere<_bz_VecExpr, TinyVectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, int, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > > where(_bz_VecExpr d1, int d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, int, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > > where(_bz_VecExpr d1, int d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, int, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > > where(_bz_VecExpr d1, int d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, int, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > > where(_bz_VecExpr d1, int d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, int, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > > where(_bz_VecExpr d1, int d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, int, int) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > > where(_bz_VecExpr d1, int d2, int d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, float, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > > where(_bz_VecExpr d1, float d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, float, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > > where(_bz_VecExpr d1, float d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, float, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > > where(_bz_VecExpr d1, float d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, float, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > > where(_bz_VecExpr d1, float d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, float, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > > where(_bz_VecExpr d1, float d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, float, float) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > > where(_bz_VecExpr d1, float d2, float d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, double, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > > where(_bz_VecExpr d1, double d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > > where(_bz_VecExpr d1, double d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > > where(_bz_VecExpr d1, double d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, double, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > > where(_bz_VecExpr d1, double d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > > where(_bz_VecExpr d1, double d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, double, double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > > where(_bz_VecExpr d1, double d2, double d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, long double, Vector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > > where(_bz_VecExpr d1, long double d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, long double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > > where(_bz_VecExpr d1, long double d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, long double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > > where(_bz_VecExpr d1, long double d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, long double, Range) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > > where(_bz_VecExpr d1, long double d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(_bz_VecExpr, long double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > > where(_bz_VecExpr d1, long double d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(_bz_VecExpr, long double, long double) template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > > where(_bz_VecExpr d1, long double d2, long double d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(_bz_VecExpr, complex, Vector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , VectorIterConst > > where(_bz_VecExpr d1, complex d2, const Vector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, complex, _bz_VecExpr) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , _bz_VecExpr > > where(_bz_VecExpr d1, complex d2, _bz_VecExpr d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, complex, VectorPick) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , VectorPickIterConst > > where(_bz_VecExpr d1, complex d2, const VectorPick& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, complex, Range) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , Range > > where(_bz_VecExpr d1, complex d2, Range d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, complex, TinyVector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , TinyVectorIterConst > > where(_bz_VecExpr d1, complex d2, const TinyVector& d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(_bz_VecExpr, complex, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , _bz_VecExprConstant > > > where(_bz_VecExpr d1, complex d2, complex d3) { typedef _bz_VecWhere<_bz_VecExpr, _bz_VecExprConstant > , _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, Vector, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, VectorIterConst > > where(const VectorPick& d1, const Vector& d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, Vector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExpr > > where(const VectorPick& d1, const Vector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(VectorPick, Vector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, VectorPickIterConst > > where(const VectorPick& d1, const Vector& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, Vector, Range) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, Range > > where(const VectorPick& d1, const Vector& d2, Range d3) { typedef _bz_VecWhere, VectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(VectorPick, Vector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, TinyVectorIterConst > > where(const VectorPick& d1, const Vector& d2, const TinyVector& d3) { typedef _bz_VecWhere, VectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, Vector, int) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const Vector& d2, int d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, Vector, float) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const Vector& d2, float d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, Vector, double) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const Vector& d2, double d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, Vector, long double) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const Vector& d2, long double d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, Vector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > > where(const VectorPick& d1, const Vector& d2, complex d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, _bz_VecExpr, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, VectorIterConst > > where(const VectorPick& d1, _bz_VecExpr d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExpr, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(VectorPick, _bz_VecExpr, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExpr > > where(const VectorPick& d1, _bz_VecExpr d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(VectorPick, _bz_VecExpr, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, VectorPickIterConst > > where(const VectorPick& d1, _bz_VecExpr d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExpr, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(VectorPick, _bz_VecExpr, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, Range > > where(const VectorPick& d1, _bz_VecExpr d2, Range d3) { typedef _bz_VecWhere, _bz_VecExpr, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(VectorPick, _bz_VecExpr, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, TinyVectorIterConst > > where(const VectorPick& d1, _bz_VecExpr d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExpr, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(VectorPick, _bz_VecExpr, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const VectorPick& d1, _bz_VecExpr d2, int d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, _bz_VecExpr, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const VectorPick& d1, _bz_VecExpr d2, float d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, _bz_VecExpr, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const VectorPick& d1, _bz_VecExpr d2, double d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, _bz_VecExpr, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const VectorPick& d1, _bz_VecExpr d2, long double d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, _bz_VecExpr, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > > where(const VectorPick& d1, _bz_VecExpr d2, complex d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, VectorPick, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, VectorIterConst > > where(const VectorPick& d1, const VectorPick& d2, const Vector& d3) { typedef _bz_VecWhere, VectorPickIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, VectorPick, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExpr > > where(const VectorPick& d1, const VectorPick& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(VectorPick, VectorPick, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, VectorPickIterConst > > where(const VectorPick& d1, const VectorPick& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, VectorPick, Range) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, Range > > where(const VectorPick& d1, const VectorPick& d2, Range d3) { typedef _bz_VecWhere, VectorPickIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(VectorPick, VectorPick, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, TinyVectorIterConst > > where(const VectorPick& d1, const VectorPick& d2, const TinyVector& d3) { typedef _bz_VecWhere, VectorPickIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, VectorPick, int) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const VectorPick& d2, int d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, VectorPick, float) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const VectorPick& d2, float d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, VectorPick, double) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const VectorPick& d2, double d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, VectorPick, long double) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const VectorPick& d2, long double d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, VectorPick, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > > where(const VectorPick& d1, const VectorPick& d2, complex d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, Range, Vector) template inline _bz_VecExpr<_bz_VecWhere, Range, VectorIterConst > > where(const VectorPick& d1, Range d2, const Vector& d3) { typedef _bz_VecWhere, Range, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(VectorPick, Range, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExpr > > where(const VectorPick& d1, Range d2, _bz_VecExpr d3) { typedef _bz_VecWhere, Range, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(VectorPick, Range, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, Range, VectorPickIterConst > > where(const VectorPick& d1, Range d2, const VectorPick& d3) { typedef _bz_VecWhere, Range, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(VectorPick, Range, Range) template inline _bz_VecExpr<_bz_VecWhere, Range, Range > > where(const VectorPick& d1, Range d2, Range d3) { typedef _bz_VecWhere, Range, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(VectorPick, Range, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, Range, TinyVectorIterConst > > where(const VectorPick& d1, Range d2, const TinyVector& d3) { typedef _bz_VecWhere, Range, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(VectorPick, Range, int) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const VectorPick& d1, Range d2, int d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, Range, float) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const VectorPick& d1, Range d2, float d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, Range, double) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const VectorPick& d1, Range d2, double d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, Range, long double) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const VectorPick& d1, Range d2, long double d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(VectorPick, Range, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > > where(const VectorPick& d1, Range d2, complex d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, TinyVector, Vector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, VectorIterConst > > where(const VectorPick& d1, const TinyVector& d2, const Vector& d3) { typedef _bz_VecWhere, TinyVectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, TinyVector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExpr > > where(const VectorPick& d1, const TinyVector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(VectorPick, TinyVector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, VectorPickIterConst > > where(const VectorPick& d1, const TinyVector& d2, const VectorPick& d3) { typedef _bz_VecWhere, TinyVectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, TinyVector, Range) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, Range > > where(const VectorPick& d1, const TinyVector& d2, Range d3) { typedef _bz_VecWhere, TinyVectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(VectorPick, TinyVector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, TinyVectorIterConst > > where(const VectorPick& d1, const TinyVector& d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(VectorPick, TinyVector, int) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const TinyVector& d2, int d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, TinyVector, float) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const TinyVector& d2, float d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, TinyVector, double) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const TinyVector& d2, double d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, TinyVector, long double) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const VectorPick& d1, const TinyVector& d2, long double d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(VectorPick, TinyVector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > > where(const VectorPick& d1, const TinyVector& d2, complex d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, int, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const VectorPick& d1, int d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, int, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const VectorPick& d1, int d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, int, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const VectorPick& d1, int d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, int, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const VectorPick& d1, int d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, int, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const VectorPick& d1, int d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, int, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const VectorPick& d1, int d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(VectorPick, float, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const VectorPick& d1, float d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, float, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const VectorPick& d1, float d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, float, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const VectorPick& d1, float d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, float, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const VectorPick& d1, float d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, float, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const VectorPick& d1, float d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, float, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const VectorPick& d1, float d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(VectorPick, double, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const VectorPick& d1, double d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const VectorPick& d1, double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const VectorPick& d1, double d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, double, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const VectorPick& d1, double d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const VectorPick& d1, double d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, double, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const VectorPick& d1, double d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(VectorPick, long double, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const VectorPick& d1, long double d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, long double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const VectorPick& d1, long double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, long double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const VectorPick& d1, long double d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, long double, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const VectorPick& d1, long double d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(VectorPick, long double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const VectorPick& d1, long double d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(VectorPick, long double, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const VectorPick& d1, long double d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(VectorPick, complex, Vector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , VectorIterConst > > where(const VectorPick& d1, complex d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, complex, _bz_VecExpr) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , _bz_VecExpr > > where(const VectorPick& d1, complex d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, complex, VectorPick) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , VectorPickIterConst > > where(const VectorPick& d1, complex d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, complex, Range) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , Range > > where(const VectorPick& d1, complex d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, complex, TinyVector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , TinyVectorIterConst > > where(const VectorPick& d1, complex d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(VectorPick, complex, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , _bz_VecExprConstant > > > where(const VectorPick& d1, complex d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Range, Vector, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, const Vector& d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, Vector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, const Vector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(Range, Vector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, const Vector& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, Vector, Range) template inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, const Vector& d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(Range, Vector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, const Vector& d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, Vector, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const Vector& d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, Vector, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const Vector& d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, Vector, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const Vector& d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, Vector, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const Vector& d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, Vector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > > where(Range d1, const Vector& d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Range, _bz_VecExpr, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, _bz_VecExpr d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(Range, _bz_VecExpr, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, _bz_VecExpr d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(Range, _bz_VecExpr, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, _bz_VecExpr d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(Range, _bz_VecExpr, Range) template inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, _bz_VecExpr d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(Range, _bz_VecExpr, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, _bz_VecExpr d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(Range, _bz_VecExpr, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, _bz_VecExpr d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, _bz_VecExpr, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, _bz_VecExpr d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, _bz_VecExpr, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, _bz_VecExpr d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, _bz_VecExpr, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, _bz_VecExpr d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, _bz_VecExpr, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > > where(Range d1, _bz_VecExpr d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Range, VectorPick, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, const VectorPick& d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, VectorPick, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, const VectorPick& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(Range, VectorPick, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, const VectorPick& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, VectorPick, Range) template inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, const VectorPick& d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(Range, VectorPick, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, const VectorPick& d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, VectorPick, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const VectorPick& d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, VectorPick, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const VectorPick& d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, VectorPick, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const VectorPick& d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, VectorPick, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const VectorPick& d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, VectorPick, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > > where(Range d1, const VectorPick& d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Range, Range, Vector) template inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, const Vector& d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(Range, Range, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, _bz_VecExpr d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(Range, Range, VectorPick) template inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, const VectorPick& d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(Range, Range, Range) inline _bz_VecExpr<_bz_VecWhere > where(Range d1, Range d2, Range d3) { typedef _bz_VecWhere T_expr; return _bz_VecExpr(T_expr(d1, d2, d3)); } // where(Range, Range, TinyVector) template inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, const TinyVector& d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, d3.begin())); } // where(Range, Range, int) inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, int d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, Range, float) inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, float d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, Range, double) inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, double d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, Range, long double) inline _bz_VecExpr<_bz_VecWhere > > where(Range d1, Range d2, long double d3) { typedef _bz_VecWhere > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant(d3))); } // where(Range, Range, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > > > where(Range d1, Range d2, complex d3) { typedef _bz_VecWhere > > T_expr; return _bz_VecExpr(T_expr(d1, d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Range, TinyVector, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, const TinyVector& d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, TinyVector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, const TinyVector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(Range, TinyVector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, const TinyVector& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, TinyVector, Range) template inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, const TinyVector& d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3)); } // where(Range, TinyVector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, const TinyVector& d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), d3.begin())); } // where(Range, TinyVector, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const TinyVector& d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, TinyVector, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const TinyVector& d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, TinyVector, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const TinyVector& d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, TinyVector, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, const TinyVector& d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant(d3))); } // where(Range, TinyVector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > > where(Range d1, const TinyVector& d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(Range, int, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, int d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, int, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, int d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, int, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, int d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, int, Range) inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, int d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, int, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, int d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, int, int) inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, int d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Range, float, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, float d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, float, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, float d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, float, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, float d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, float, Range) inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, float d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, float, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, float d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, float, float) inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, float d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Range, double, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, double d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, double d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, double, Range) inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, double d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, double d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, double, double) inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, double d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Range, long double, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst > > where(Range d1, long double d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, long double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr > > where(Range d1, long double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, long double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst > > where(Range d1, long double d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, long double, Range) inline _bz_VecExpr<_bz_VecWhere, Range > > where(Range d1, long double d2, Range d3) { typedef _bz_VecWhere, Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3)); } // where(Range, long double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst > > where(Range d1, long double d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), d3.begin())); } // where(Range, long double, long double) inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > > where(Range d1, long double d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(Range, complex, Vector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > , VectorIterConst > > where(Range d1, complex d2, const Vector& d3) { typedef _bz_VecWhere > , VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(Range, complex, _bz_VecExpr) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > , _bz_VecExpr > > where(Range d1, complex d2, _bz_VecExpr d3) { typedef _bz_VecWhere > , _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(Range, complex, VectorPick) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > , VectorPickIterConst > > where(Range d1, complex d2, const VectorPick& d3) { typedef _bz_VecWhere > , VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(Range, complex, Range) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > , Range > > where(Range d1, complex d2, Range d3) { typedef _bz_VecWhere > , Range > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(Range, complex, TinyVector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > , TinyVectorIterConst > > where(Range d1, complex d2, const TinyVector& d3) { typedef _bz_VecWhere > , TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(Range, complex, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere > , _bz_VecExprConstant > > > where(Range d1, complex d2, complex d3) { typedef _bz_VecWhere > , _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, Vector, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, VectorIterConst > > where(const TinyVector& d1, const Vector& d2, const Vector& d3) { typedef _bz_VecWhere, VectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, Vector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExpr > > where(const TinyVector& d1, const Vector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(TinyVector, Vector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, VectorPickIterConst > > where(const TinyVector& d1, const Vector& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, Vector, Range) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, Range > > where(const TinyVector& d1, const Vector& d2, Range d3) { typedef _bz_VecWhere, VectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(TinyVector, Vector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, TinyVectorIterConst > > where(const TinyVector& d1, const Vector& d2, const TinyVector& d3) { typedef _bz_VecWhere, VectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, Vector, int) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const Vector& d2, int d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, Vector, float) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const Vector& d2, float d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, Vector, double) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const Vector& d2, double d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, Vector, long double) template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const Vector& d2, long double d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, Vector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > > where(const TinyVector& d1, const Vector& d2, complex d3) { typedef _bz_VecWhere, VectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, _bz_VecExpr, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, VectorIterConst > > where(const TinyVector& d1, _bz_VecExpr d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExpr, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(TinyVector, _bz_VecExpr, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExpr > > where(const TinyVector& d1, _bz_VecExpr d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(TinyVector, _bz_VecExpr, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, VectorPickIterConst > > where(const TinyVector& d1, _bz_VecExpr d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExpr, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(TinyVector, _bz_VecExpr, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, Range > > where(const TinyVector& d1, _bz_VecExpr d2, Range d3) { typedef _bz_VecWhere, _bz_VecExpr, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(TinyVector, _bz_VecExpr, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, TinyVectorIterConst > > where(const TinyVector& d1, _bz_VecExpr d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExpr, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(TinyVector, _bz_VecExpr, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const TinyVector& d1, _bz_VecExpr d2, int d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, _bz_VecExpr, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const TinyVector& d1, _bz_VecExpr d2, float d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, _bz_VecExpr, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const TinyVector& d1, _bz_VecExpr d2, double d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, _bz_VecExpr, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > where(const TinyVector& d1, _bz_VecExpr d2, long double d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, _bz_VecExpr, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > > where(const TinyVector& d1, _bz_VecExpr d2, complex d3) { typedef _bz_VecWhere, _bz_VecExpr, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, VectorPick, Vector) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, VectorIterConst > > where(const TinyVector& d1, const VectorPick& d2, const Vector& d3) { typedef _bz_VecWhere, VectorPickIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, VectorPick, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExpr > > where(const TinyVector& d1, const VectorPick& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(TinyVector, VectorPick, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, VectorPickIterConst > > where(const TinyVector& d1, const VectorPick& d2, const VectorPick& d3) { typedef _bz_VecWhere, VectorPickIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, VectorPick, Range) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, Range > > where(const TinyVector& d1, const VectorPick& d2, Range d3) { typedef _bz_VecWhere, VectorPickIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(TinyVector, VectorPick, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, TinyVectorIterConst > > where(const TinyVector& d1, const VectorPick& d2, const TinyVector& d3) { typedef _bz_VecWhere, VectorPickIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, VectorPick, int) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const VectorPick& d2, int d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, VectorPick, float) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const VectorPick& d2, float d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, VectorPick, double) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const VectorPick& d2, double d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, VectorPick, long double) template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const VectorPick& d2, long double d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, VectorPick, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > > where(const TinyVector& d1, const VectorPick& d2, complex d3) { typedef _bz_VecWhere, VectorPickIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, Range, Vector) template inline _bz_VecExpr<_bz_VecWhere, Range, VectorIterConst > > where(const TinyVector& d1, Range d2, const Vector& d3) { typedef _bz_VecWhere, Range, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(TinyVector, Range, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExpr > > where(const TinyVector& d1, Range d2, _bz_VecExpr d3) { typedef _bz_VecWhere, Range, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(TinyVector, Range, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, Range, VectorPickIterConst > > where(const TinyVector& d1, Range d2, const VectorPick& d3) { typedef _bz_VecWhere, Range, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(TinyVector, Range, Range) template inline _bz_VecExpr<_bz_VecWhere, Range, Range > > where(const TinyVector& d1, Range d2, Range d3) { typedef _bz_VecWhere, Range, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3)); } // where(TinyVector, Range, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, Range, TinyVectorIterConst > > where(const TinyVector& d1, Range d2, const TinyVector& d3) { typedef _bz_VecWhere, Range, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, d3.begin())); } // where(TinyVector, Range, int) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const TinyVector& d1, Range d2, int d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, Range, float) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const TinyVector& d1, Range d2, float d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, Range, double) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const TinyVector& d1, Range d2, double d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, Range, long double) template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > where(const TinyVector& d1, Range d2, long double d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant(d3))); } // where(TinyVector, Range, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, Range, _bz_VecExprConstant > > > where(const TinyVector& d1, Range d2, complex d3) { typedef _bz_VecWhere, Range, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2, _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, TinyVector, Vector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, VectorIterConst > > where(const TinyVector& d1, const TinyVector& d2, const Vector& d3) { typedef _bz_VecWhere, TinyVectorIterConst, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, TinyVector, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExpr > > where(const TinyVector& d1, const TinyVector& d2, _bz_VecExpr d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(TinyVector, TinyVector, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, VectorPickIterConst > > where(const TinyVector& d1, const TinyVector& d2, const VectorPick& d3) { typedef _bz_VecWhere, TinyVectorIterConst, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, TinyVector, Range) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, Range > > where(const TinyVector& d1, const TinyVector& d2, Range d3) { typedef _bz_VecWhere, TinyVectorIterConst, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3)); } // where(TinyVector, TinyVector, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, TinyVectorIterConst > > where(const TinyVector& d1, const TinyVector& d2, const TinyVector& d3) { typedef _bz_VecWhere, TinyVectorIterConst, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), d3.begin())); } // where(TinyVector, TinyVector, int) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const TinyVector& d2, int d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, TinyVector, float) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const TinyVector& d2, float d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, TinyVector, double) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const TinyVector& d2, double d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, TinyVector, long double) template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > where(const TinyVector& d1, const TinyVector& d2, long double d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant(d3))); } // where(TinyVector, TinyVector, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > > where(const TinyVector& d1, const TinyVector& d2, complex d3) { typedef _bz_VecWhere, TinyVectorIterConst, _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), d2.begin(), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, int, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const TinyVector& d1, int d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, int, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const TinyVector& d1, int d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, int, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const TinyVector& d1, int d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, int, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const TinyVector& d1, int d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, int, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const TinyVector& d1, int d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, int, int) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const TinyVector& d1, int d2, int d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(TinyVector, float, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const TinyVector& d1, float d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, float, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const TinyVector& d1, float d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, float, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const TinyVector& d1, float d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, float, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const TinyVector& d1, float d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, float, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const TinyVector& d1, float d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, float, float) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const TinyVector& d1, float d2, float d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(TinyVector, double, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const TinyVector& d1, double d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const TinyVector& d1, double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const TinyVector& d1, double d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, double, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const TinyVector& d1, double d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const TinyVector& d1, double d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, double, double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const TinyVector& d1, double d2, double d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(TinyVector, long double, Vector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorIterConst > > where(const TinyVector& d1, long double d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, long double, _bz_VecExpr) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > > where(const TinyVector& d1, long double d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, long double, VectorPick) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > > where(const TinyVector& d1, long double d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, long double, Range) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, Range > > where(const TinyVector& d1, long double d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant, Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3)); } // where(TinyVector, long double, TinyVector) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > > where(const TinyVector& d1, long double d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant, TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), d3.begin())); } // where(TinyVector, long double, long double) template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > > where(const TinyVector& d1, long double d2, long double d3) { typedef _bz_VecWhere, _bz_VecExprConstant, _bz_VecExprConstant > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant(d2), _bz_VecExprConstant(d3))); } // where(TinyVector, complex, Vector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , VectorIterConst > > where(const TinyVector& d1, complex d2, const Vector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , VectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, complex, _bz_VecExpr) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , _bz_VecExpr > > where(const TinyVector& d1, complex d2, _bz_VecExpr d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , _bz_VecExpr > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, complex, VectorPick) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , VectorPickIterConst > > where(const TinyVector& d1, complex d2, const VectorPick& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , VectorPickIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, complex, Range) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , Range > > where(const TinyVector& d1, complex d2, Range d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , Range > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3)); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, complex, TinyVector) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , TinyVectorIterConst > > where(const TinyVector& d1, complex d2, const TinyVector& d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , TinyVectorIterConst > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), d3.begin())); } #endif // BZ_HAVE_COMPLEX // where(TinyVector, complex, complex) #ifdef BZ_HAVE_COMPLEX template inline _bz_VecExpr<_bz_VecWhere, _bz_VecExprConstant > , _bz_VecExprConstant > > > where(const TinyVector& d1, complex d2, complex d3) { typedef _bz_VecWhere, _bz_VecExprConstant > , _bz_VecExprConstant > > T_expr; return _bz_VecExpr(T_expr(d1.begin(), _bz_VecExprConstant > (d2), _bz_VecExprConstant > (d3))); } #endif // BZ_HAVE_COMPLEX BZ_NAMESPACE_END #endif