/*************************************************************************** * blitz/../vecuops.cc Expression templates for vectors, unary functions * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Suggestions: blitz-suggest@cybervision.com * Bugs: blitz-bugs@cybervision.com * * For more information, please see the Blitz++ Home Page: * http://seurat.uwaterloo.ca/blitz/ * *************************************************************************** * */ // Generated source file. Do not edit. // genvecuops.cpp Oct 6 2005 15:58:48 #ifndef BZ_VECUOPS_CC #define BZ_VECUOPS_CC #ifndef BZ_VECEXPR_H #error must be included via #endif // BZ_VECEXPR_H BZ_NAMESPACE(blitz) /**************************************************************************** * abs ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > abs(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs > > abs(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > abs(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > abs(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > abs(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * acos ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acos > > acos(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_acos > > acos(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acos > > acos(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > acos(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acos > > acos(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * acosh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acosh > > acosh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_acosh > > acosh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acosh > > acosh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > acosh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acosh > > acosh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * asin ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asin > > asin(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_asin > > asin(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asin > > asin(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > asin(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asin > > asin(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * asinh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asinh > > asinh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_asinh > > asinh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asinh > > asinh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > asinh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asinh > > asinh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * atan ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atan > > atan(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_atan > > atan(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atan > > atan(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > atan(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atan > > atan(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * atan2 ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_atan2 > > atan2(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_atan2 > > atan2(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_atan2 > > atan2(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_atan2 > > atan2(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_atan2 > > atan2(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_atan2 > > > atan2(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_atan2 > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_atan2 > > atan2(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_atan2 > > atan2(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_atan2 > > atan2(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_atan2 > > atan2(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_atan2 > > atan2(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > > atan2(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > > atan2(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > > atan2(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > > atan2(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_atan2 > > > atan2(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_atan2 > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_atan2 > > atan2(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_atan2 > > atan2(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_atan2 > > atan2(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_atan2 > > atan2(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_atan2 > > atan2(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_atan2 > > > atan2(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_atan2 > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > atan2(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, int d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, float d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, double d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_atan2 > > atan2(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_atan2 > > > atan2(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_atan2 > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_atan2 > > atan2(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_atan2 > > atan2(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_atan2 > > atan2(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_atan2 > > atan2(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_atan2 > > atan2(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > > atan2(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_atan2 > > > atan2(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_atan2 > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > > atan2(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > > atan2(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > > atan2(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > > atan2(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > > atan2(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > > atan2(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > > atan2(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > > atan2(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > > atan2(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > > atan2(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > > atan2(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > > atan2(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > > atan2(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > > atan2(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > > atan2(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > > atan2(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > > atan2(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > > atan2(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > > atan2(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > > atan2(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_atan2 > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_atan2 ,P_numtype2> > > atan2(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_atan2 ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_atan2 ,typename P_expr2::T_numtype> > > atan2(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_atan2 ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_atan2 ,P_numtype2> > > atan2(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_atan2 ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_atan2 ,int> > > atan2(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_atan2 ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_atan2 ,P_numtype2> > > atan2(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_atan2 ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } /**************************************************************************** * atanh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atanh > > atanh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_atanh > > atanh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atanh > > atanh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > atanh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atanh > > atanh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * _class ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz__class > > _class(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz__class > > _class(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz__class > > _class(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > _class(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz__class > > _class(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * cbrt ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cbrt > > cbrt(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_cbrt > > cbrt(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cbrt > > cbrt(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > cbrt(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cbrt > > cbrt(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * ceil ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ceil > > ceil(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_ceil > > ceil(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ceil > > ceil(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > ceil(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ceil > > ceil(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * conj ****************************************************************************/ #ifdef BZ_HAVE_COMPLEX_FCNS template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_conj > > conj(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_conj > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_conj > > conj(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_conj > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_conj > > conj(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_conj > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > conj(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_conj > > conj(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_conj > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * copysign ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_copysign > > copysign(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_copysign > > copysign(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_copysign > > copysign(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_copysign > > copysign(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_copysign > > copysign(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_copysign > > > copysign(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_copysign > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_copysign > > copysign(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_copysign > > copysign(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_copysign > > copysign(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_copysign > > copysign(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_copysign > > copysign(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > > copysign(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > > copysign(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > > copysign(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > > copysign(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_copysign > > > copysign(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_copysign > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_copysign > > copysign(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_copysign > > copysign(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_copysign > > copysign(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_copysign > > copysign(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_copysign > > copysign(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_copysign > > > copysign(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_copysign > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > copysign(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, int d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, float d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, double d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_copysign > > copysign(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_copysign > > > copysign(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_copysign > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_copysign > > copysign(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_copysign > > copysign(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_copysign > > copysign(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_copysign > > copysign(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_copysign > > copysign(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > > copysign(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_copysign > > > copysign(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_copysign > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > > copysign(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > > copysign(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > > copysign(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > > copysign(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > > copysign(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > > copysign(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > > copysign(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > > copysign(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > > copysign(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > > copysign(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > > copysign(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > > copysign(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > > copysign(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > > copysign(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > > copysign(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > > copysign(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > > copysign(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > > copysign(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > > copysign(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > > copysign(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_copysign > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_copysign ,P_numtype2> > > copysign(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_copysign ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_copysign ,typename P_expr2::T_numtype> > > copysign(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_copysign ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_copysign ,P_numtype2> > > copysign(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_copysign ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_copysign ,int> > > copysign(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_copysign ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_copysign ,P_numtype2> > > copysign(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_copysign ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * cos ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cos > > cos(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_cos > > cos(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cos > > cos(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > cos(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cos > > cos(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * cosh ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cosh > > cosh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_cosh > > cosh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cosh > > cosh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > cosh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cosh > > cosh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * drem ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_drem > > drem(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_drem > > drem(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_drem > > drem(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_drem > > drem(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_drem > > drem(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_drem > > > drem(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_drem > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_drem > > drem(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_drem > > drem(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_drem > > drem(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_drem > > drem(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_drem > > drem(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > > drem(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > > drem(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > > drem(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > > drem(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_drem > > > drem(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_drem > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_drem > > drem(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_drem > > drem(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_drem > > drem(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_drem > > drem(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_drem > > drem(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_drem > > > drem(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_drem > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > drem(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, int d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, float d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, double d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_drem > > drem(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_drem > > > drem(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_drem > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_drem > > drem(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_drem > > drem(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_drem > > drem(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_drem > > drem(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_drem > > drem(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_drem > > drem(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_drem > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_drem > > > drem(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_drem > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > > drem(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > > drem(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > > drem(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > > drem(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > > drem(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > > drem(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > > drem(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > > drem(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > > drem(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > > drem(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > > drem(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > > drem(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > > drem(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > > drem(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > > drem(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > > drem(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > > drem(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > > drem(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > > drem(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > > drem(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_drem > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_drem ,P_numtype2> > > drem(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_drem ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_drem ,typename P_expr2::T_numtype> > > drem(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_drem ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_drem ,P_numtype2> > > drem(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_drem ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_drem ,int> > > drem(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_drem ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_drem ,P_numtype2> > > drem(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_drem ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * exp ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_exp > > exp(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_exp > > exp(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_exp > > exp(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > exp(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_exp > > exp(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * expm1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_expm1 > > expm1(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_expm1 > > expm1(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_expm1 > > expm1(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > expm1(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_expm1 > > expm1(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * erf ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erf > > erf(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_erf > > erf(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erf > > erf(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > erf(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erf > > erf(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * erfc ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erfc > > erfc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_erfc > > erfc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erfc > > erfc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > erfc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erfc > > erfc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * fabs ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > fabs(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs > > fabs(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > fabs(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > fabs(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > fabs(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * floor ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_floor > > floor(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_floor > > floor(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_floor > > floor(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > floor(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_floor > > floor(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * fmod ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_fmod > > fmod(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_fmod > > fmod(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_fmod > > fmod(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_fmod > > fmod(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_fmod > > fmod(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_fmod > > > fmod(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_fmod > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_fmod > > fmod(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_fmod > > fmod(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_fmod > > fmod(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_fmod > > fmod(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_fmod > > fmod(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > > fmod(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > > fmod(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > > fmod(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > > fmod(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_fmod > > > fmod(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_fmod > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_fmod > > fmod(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_fmod > > fmod(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_fmod > > fmod(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_fmod > > fmod(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_fmod > > fmod(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_fmod > > > fmod(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_fmod > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > fmod(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, int d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, float d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, double d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_fmod > > fmod(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_fmod > > > fmod(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_fmod > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_fmod > > fmod(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_fmod > > fmod(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_fmod > > fmod(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_fmod > > fmod(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_fmod > > fmod(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > > fmod(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_fmod > > > fmod(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_fmod > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > > fmod(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > > fmod(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > > fmod(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > > fmod(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > > fmod(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > > fmod(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > > fmod(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > > fmod(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > > fmod(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > > fmod(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > > fmod(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > > fmod(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > > fmod(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > > fmod(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > > fmod(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > > fmod(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > > fmod(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > > fmod(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > > fmod(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > > fmod(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_fmod > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_fmod ,P_numtype2> > > fmod(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_fmod ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_fmod ,typename P_expr2::T_numtype> > > fmod(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_fmod ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_fmod ,P_numtype2> > > fmod(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_fmod ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_fmod ,int> > > fmod(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_fmod ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_fmod ,P_numtype2> > > fmod(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_fmod ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } /**************************************************************************** * hypot ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_hypot > > hypot(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_hypot > > hypot(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_hypot > > hypot(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_hypot > > hypot(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_hypot > > hypot(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_hypot > > > hypot(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_hypot > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_hypot > > hypot(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_hypot > > hypot(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_hypot > > hypot(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_hypot > > hypot(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_hypot > > hypot(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > > hypot(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > > hypot(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > > hypot(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > > hypot(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_hypot > > > hypot(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_hypot > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_hypot > > hypot(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_hypot > > hypot(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_hypot > > hypot(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_hypot > > hypot(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_hypot > > hypot(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_hypot > > > hypot(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_hypot > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > hypot(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, int d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, float d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, double d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_hypot > > hypot(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_hypot > > > hypot(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_hypot > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_hypot > > hypot(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_hypot > > hypot(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_hypot > > hypot(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_hypot > > hypot(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_hypot > > hypot(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > > hypot(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_hypot > > > hypot(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_hypot > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > > hypot(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > > hypot(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > > hypot(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > > hypot(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > > hypot(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > > hypot(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > > hypot(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > > hypot(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > > hypot(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > > hypot(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > > hypot(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > > hypot(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > > hypot(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > > hypot(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > > hypot(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > > hypot(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > > hypot(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > > hypot(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > > hypot(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > > hypot(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_hypot > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_hypot ,P_numtype2> > > hypot(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_hypot ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_hypot ,typename P_expr2::T_numtype> > > hypot(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_hypot ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_hypot ,P_numtype2> > > hypot(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_hypot ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_hypot ,int> > > hypot(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_hypot ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_hypot ,P_numtype2> > > hypot(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_hypot ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * ilogb ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ilogb > > ilogb(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_ilogb > > ilogb(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ilogb > > ilogb(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > ilogb(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ilogb > > ilogb(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * blitz_isnan ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_blitz_isnan > > blitz_isnan(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_blitz_isnan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_blitz_isnan > > blitz_isnan(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_blitz_isnan > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_blitz_isnan > > blitz_isnan(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_blitz_isnan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > blitz_isnan(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_blitz_isnan > > blitz_isnan(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_blitz_isnan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * itrunc ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_itrunc > > itrunc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_itrunc > > itrunc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_itrunc > > itrunc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > itrunc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_itrunc > > itrunc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * j0 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j0 > > j0(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_j0 > > j0(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j0 > > j0(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > j0(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j0 > > j0(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * j1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j1 > > j1(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_j1 > > j1(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j1 > > j1(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > j1(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j1 > > j1(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * lgamma ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_lgamma > > lgamma(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_lgamma > > lgamma(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_lgamma > > lgamma(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > lgamma(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_lgamma > > lgamma(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * log ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log > > log(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_log > > log(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log > > log(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > log(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log > > log(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * logb ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_logb > > logb(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_logb > > logb(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_logb > > logb(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > logb(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_logb > > logb(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * log1p ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log1p > > log1p(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_log1p > > log1p(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log1p > > log1p(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > log1p(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log1p > > log1p(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * log10 ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log10 > > log10(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_log10 > > log10(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log10 > > log10(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > log10(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log10 > > log10(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * nearest ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_nearest > > nearest(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_nearest > > nearest(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_nearest > > nearest(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > nearest(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_nearest > > nearest(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * nextafter ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_nextafter > > nextafter(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_nextafter > > nextafter(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_nextafter > > nextafter(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_nextafter > > nextafter(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_nextafter > > nextafter(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_nextafter > > > nextafter(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_nextafter > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_nextafter > > nextafter(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_nextafter > > nextafter(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_nextafter > > nextafter(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_nextafter > > nextafter(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_nextafter > > nextafter(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > > nextafter(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > > nextafter(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > > nextafter(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > > nextafter(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_nextafter > > > nextafter(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_nextafter > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_nextafter > > nextafter(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_nextafter > > nextafter(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_nextafter > > nextafter(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_nextafter > > nextafter(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_nextafter > > nextafter(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_nextafter > > > nextafter(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_nextafter > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > nextafter(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, int d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, float d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, double d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_nextafter > > nextafter(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_nextafter > > > nextafter(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_nextafter > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_nextafter > > nextafter(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_nextafter > > nextafter(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_nextafter > > nextafter(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_nextafter > > nextafter(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_nextafter > > nextafter(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > > nextafter(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_nextafter > > > nextafter(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_nextafter > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > > nextafter(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > > nextafter(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > > nextafter(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > > nextafter(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > > nextafter(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > > nextafter(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > > nextafter(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > > nextafter(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > > nextafter(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > > nextafter(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > > nextafter(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > > nextafter(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > > nextafter(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > > nextafter(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > > nextafter(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > > nextafter(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > > nextafter(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > > nextafter(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > > nextafter(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > > nextafter(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_nextafter > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_nextafter ,P_numtype2> > > nextafter(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_nextafter ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_nextafter ,typename P_expr2::T_numtype> > > nextafter(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_nextafter ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_nextafter ,P_numtype2> > > nextafter(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_nextafter ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_nextafter ,int> > > nextafter(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_nextafter ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_nextafter ,P_numtype2> > > nextafter(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_nextafter ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * pow ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_pow > > pow(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_pow > > pow(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_pow > > pow(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_pow > > pow(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_pow > > pow(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_pow > > > pow(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_pow > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_pow > > pow(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_pow > > pow(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_pow > > pow(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_pow > > pow(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_pow > > pow(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > > pow(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > > pow(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > > pow(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > > pow(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_pow > > > pow(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_pow > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_pow > > pow(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_pow > > pow(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_pow > > pow(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_pow > > pow(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_pow > > pow(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_pow > > > pow(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_pow > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > pow(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, int d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, float d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, double d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_pow > > pow(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_pow > > > pow(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_pow > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_pow > > pow(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_pow > > pow(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_pow > > pow(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_pow > > pow(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_pow > > pow(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_pow > > pow(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_pow > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_pow > > > pow(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_pow > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > > pow(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > > pow(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > > pow(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > > pow(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > > pow(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > > pow(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > > pow(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > > pow(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > > pow(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > > pow(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > > pow(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > > pow(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > > pow(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > > pow(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > > pow(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > > pow(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > > pow(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > > pow(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > > pow(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > > pow(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_pow > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_pow ,P_numtype2> > > pow(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_pow ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_pow ,typename P_expr2::T_numtype> > > pow(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_pow ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_pow ,P_numtype2> > > pow(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_pow ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_pow ,int> > > pow(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_pow ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_pow ,P_numtype2> > > pow(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_pow ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } /**************************************************************************** * remainder ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_remainder > > remainder(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_remainder > > remainder(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_remainder > > remainder(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_remainder > > remainder(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_remainder > > remainder(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_remainder > > > remainder(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_remainder > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_remainder > > remainder(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_remainder > > remainder(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_remainder > > remainder(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_remainder > > remainder(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_remainder > > remainder(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > > remainder(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > > remainder(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > > remainder(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > > remainder(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_remainder > > > remainder(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_remainder > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_remainder > > remainder(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_remainder > > remainder(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_remainder > > remainder(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_remainder > > remainder(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_remainder > > remainder(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_remainder > > > remainder(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_remainder > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > remainder(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, int d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, float d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, double d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_remainder > > remainder(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_remainder > > > remainder(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_remainder > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_remainder > > remainder(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_remainder > > remainder(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_remainder > > remainder(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_remainder > > remainder(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_remainder > > remainder(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > > remainder(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_remainder > > > remainder(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_remainder > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > > remainder(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > > remainder(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > > remainder(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > > remainder(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > > remainder(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > > remainder(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > > remainder(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > > remainder(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > > remainder(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > > remainder(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > > remainder(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > > remainder(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > > remainder(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > > remainder(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > > remainder(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > > remainder(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > > remainder(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > > remainder(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > > remainder(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > > remainder(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_remainder > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_remainder ,P_numtype2> > > remainder(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_remainder ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_remainder ,typename P_expr2::T_numtype> > > remainder(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_remainder ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_remainder ,P_numtype2> > > remainder(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_remainder ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_remainder ,int> > > remainder(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_remainder ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_remainder ,P_numtype2> > > remainder(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_remainder ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * rint ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rint > > rint(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_rint > > rint(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rint > > rint(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > rint(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rint > > rint(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * rsqrt ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rsqrt > > rsqrt(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_rsqrt > > rsqrt(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rsqrt > > rsqrt(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > rsqrt(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rsqrt > > rsqrt(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * scalb ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_scalb > > scalb(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_scalb > > scalb(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_scalb > > scalb(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_scalb > > scalb(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_scalb > > scalb(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_scalb > > > scalb(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_scalb > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_scalb > > scalb(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_scalb > > scalb(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_scalb > > scalb(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_scalb > > scalb(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_scalb > > scalb(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > > scalb(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > > scalb(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > > scalb(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > > scalb(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_scalb > > > scalb(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_scalb > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_scalb > > scalb(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_scalb > > scalb(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_scalb > > scalb(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_scalb > > scalb(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_scalb > > scalb(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_scalb > > > scalb(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_scalb > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > scalb(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, int d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, float d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, double d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_scalb > > scalb(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_scalb > > > scalb(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_scalb > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_scalb > > scalb(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_scalb > > scalb(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_scalb > > scalb(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_scalb > > scalb(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_scalb > > scalb(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > > scalb(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_scalb > > > scalb(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_scalb > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > > scalb(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > > scalb(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > > scalb(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > > scalb(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > > scalb(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > > scalb(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > > scalb(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > > scalb(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > > scalb(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > > scalb(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > > scalb(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > > scalb(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > > scalb(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > > scalb(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > > scalb(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > > scalb(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > > scalb(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > > scalb(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > > scalb(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > > scalb(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_scalb > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_scalb ,P_numtype2> > > scalb(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_scalb ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_scalb ,typename P_expr2::T_numtype> > > scalb(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_scalb ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_scalb ,P_numtype2> > > scalb(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_scalb ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_scalb ,int> > > scalb(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_scalb ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_scalb ,P_numtype2> > > scalb(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_scalb ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * sin ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sin > > sin(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sin > > sin(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sin > > sin(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sin(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sin > > sin(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * sinh ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sinh > > sinh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sinh > > sinh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sinh > > sinh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sinh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sinh > > sinh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * sqr ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqr > > sqr(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqr > > sqr(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqr > > sqr(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sqr(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqr > > sqr(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * sqrt ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqrt > > sqrt(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqrt > > sqrt(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqrt > > sqrt(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sqrt(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqrt > > sqrt(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * tan ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tan > > tan(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_tan > > tan(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tan > > tan(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > tan(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tan > > tan(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * tanh ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tanh > > tanh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_tanh > > tanh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tanh > > tanh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > tanh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tanh > > tanh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } /**************************************************************************** * uitrunc ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_uitrunc > > uitrunc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_uitrunc > > uitrunc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_uitrunc > > uitrunc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > uitrunc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_uitrunc > > uitrunc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * unordered ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_unordered > > unordered(const Vector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_unordered > > unordered(const Vector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_unordered > > unordered(const Vector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_unordered > > unordered(const Vector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_unordered > > unordered(const Vector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const Vector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const Vector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const Vector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const Vector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_unordered > > > unordered(const Vector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_unordered > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_unordered > > unordered(_bz_VecExpr d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_unordered > > unordered(_bz_VecExpr d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_unordered > > unordered(_bz_VecExpr d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExpr, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, Range, _bz_unordered > > unordered(_bz_VecExpr d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExpr, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_unordered > > unordered(_bz_VecExpr d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExpr, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > > unordered(_bz_VecExpr d1, int d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > > unordered(_bz_VecExpr d1, float d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > > unordered(_bz_VecExpr d1, double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > > unordered(_bz_VecExpr d1, long double d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_unordered > > > unordered(_bz_VecExpr d1, complex d2) { typedef _bz_VecExprOp<_bz_VecExpr, _bz_VecExprConstant > , _bz_unordered > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_unordered > > unordered(const VectorPick& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_unordered > > unordered(const VectorPick& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_unordered > > unordered(const VectorPick& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_unordered > > unordered(const VectorPick& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_unordered > > unordered(const VectorPick& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const VectorPick& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const VectorPick& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const VectorPick& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const VectorPick& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_unordered > > > unordered(const VectorPick& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_unordered > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, const Vector& d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, const VectorPick& d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp > > unordered(Range d1, Range d2) { typedef _bz_VecExprOp > T_expr; return _bz_VecExpr(T_expr(d1, d2)); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, const TinyVector& d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, int d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, float d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, double d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } inline _bz_VecExpr<_bz_VecExprOp, _bz_unordered > > unordered(Range d1, long double d2) { typedef _bz_VecExprOp, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp > , _bz_unordered > > > unordered(Range d1, complex d2) { typedef _bz_VecExprOp > , _bz_unordered > > T_expr; return _bz_VecExpr(T_expr(d1, _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp, VectorIterConst, _bz_unordered > > unordered(const TinyVector& d1, const Vector& d2) { typedef _bz_VecExprOp, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExpr, _bz_unordered > > unordered(const TinyVector& d1, _bz_VecExpr d2) { typedef _bz_VecExprOp, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, VectorPickIterConst, _bz_unordered > > unordered(const TinyVector& d1, const VectorPick& d2) { typedef _bz_VecExprOp, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, Range, _bz_unordered > > unordered(const TinyVector& d1, Range d2) { typedef _bz_VecExprOp, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2)); } template inline _bz_VecExpr<_bz_VecExprOp, TinyVectorIterConst, _bz_unordered > > unordered(const TinyVector& d1, const TinyVector& d2) { typedef _bz_VecExprOp, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const TinyVector& d1, int d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const TinyVector& d1, float d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const TinyVector& d1, double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > > unordered(const TinyVector& d1, long double d2) { typedef _bz_VecExprOp, _bz_VecExprConstant, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant(d2))); } template inline _bz_VecExpr<_bz_VecExprOp, _bz_VecExprConstant > , _bz_unordered > > > unordered(const TinyVector& d1, complex d2) { typedef _bz_VecExprOp, _bz_VecExprConstant > , _bz_unordered > > T_expr; return _bz_VecExpr(T_expr(d1.beginFast(), _bz_VecExprConstant > (d2))); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > > unordered(int d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > > unordered(int d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > > unordered(int d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > > unordered(int d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > > unordered(int d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > > unordered(float d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > > unordered(float d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > > unordered(float d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > > unordered(float d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > > unordered(float d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > > unordered(double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > > unordered(double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > > unordered(double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > > unordered(double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > > unordered(double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > > unordered(long double d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > > unordered(long double d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, _bz_VecExpr, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > > unordered(long double d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, VectorPickIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > > unordered(long double d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, Range, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > > unordered(long double d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant, TinyVectorIterConst, _bz_unordered > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant(d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_unordered ,P_numtype2> > > unordered(complex d1, const Vector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorIterConst, _bz_unordered ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_unordered ,typename P_expr2::T_numtype> > > unordered(complex d1, _bz_VecExpr d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , _bz_VecExpr, _bz_unordered ,typename P_expr2::T_numtype> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_unordered ,P_numtype2> > > unordered(complex d1, const VectorPick& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , VectorPickIterConst, _bz_unordered ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_unordered ,int> > > unordered(complex d1, Range d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , Range, _bz_unordered ,int> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2)); } template inline _bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_unordered ,P_numtype2> > > unordered(complex d1, const TinyVector& d2) { typedef _bz_VecExprOp<_bz_VecExprConstant > , TinyVectorIterConst, _bz_unordered ,P_numtype2> > T_expr; return _bz_VecExpr(T_expr(_bz_VecExprConstant > (d1), d2.beginFast())); } #endif /**************************************************************************** * y0 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y0 > > y0(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_y0 > > y0(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y0 > > y0(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > y0(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y0 > > y0(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif /**************************************************************************** * y1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y1 > > y1(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_y1 > > y1(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y1 > > y1(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > y1(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y1 > > y1(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1.beginFast())); } #endif BZ_NAMESPACE_END #endif