/*************************************************************************** * blitz/../array/uops.cc Expression templates for arrays, 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. // genarruops.cpp Dec 30 2003 16:49:07 #ifndef BZ_ARRAYUOPS_CC #define BZ_ARRAYUOPS_CC #ifndef BZ_ARRAYEXPR_H #error must be included after #endif // BZ_ARRAYEXPR_H BZ_NAMESPACE(blitz) /**************************************************************************** * abs ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_abs > > abs(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_abs >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_abs > > abs(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_abs >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_abs > > abs(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_abs >(d1); } /**************************************************************************** * acos ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_acos > > acos(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_acos >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_acos > > acos(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_acos >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_acos > > acos(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_acos >(d1); } /**************************************************************************** * acosh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_acosh > > acosh(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_acosh >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_acosh > > acosh(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_acosh >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_acosh > > acosh(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_acosh >(d1); } #endif /**************************************************************************** * asin ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_asin > > asin(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_asin >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_asin > > asin(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_asin >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_asin > > asin(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_asin >(d1); } /**************************************************************************** * asinh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_asinh > > asinh(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_asinh >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_asinh > > asinh(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_asinh >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_asinh > > asinh(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_asinh >(d1); } #endif /**************************************************************************** * atan ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_atan > > atan(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_atan >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_atan > > atan(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_atan >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_atan > > atan(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_atan >(d1); } /**************************************************************************** * atanh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_atanh > > atanh(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_atanh >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_atanh > > atanh(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_atanh >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_atanh > > atanh(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_atanh >(d1); } #endif /**************************************************************************** * atan2 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_atan2 > > atan2(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_atan2 >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_atan2 > > atan2(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_atan2 >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_atan2 > > atan2(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_atan2 >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 > > atan2(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 > > atan2(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 > > atan2(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_atan2 > > > atan2(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_atan2 > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_atan2 > > atan2(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_atan2 >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_atan2 > > atan2(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_atan2 >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_atan2 > > atan2(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_atan2 >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_atan2 > > atan2(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_atan2 >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_atan2 > > atan2(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_atan2 >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_atan2 > > atan2(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_atan2 >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_atan2 > > > atan2(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_atan2 > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_atan2 > > atan2(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_atan2 >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_atan2 > > atan2(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_atan2 >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_atan2 > > atan2(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_atan2 >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 > > atan2(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 > > atan2(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 > > atan2(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_atan2 >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_atan2 > > > atan2(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_atan2 > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_atan2 > > atan2(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_atan2 > > atan2(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_atan2 > > atan2(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_atan2 > > atan2(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_atan2 > > atan2(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_atan2 > > atan2(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_atan2 > > atan2(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_atan2 > > atan2(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_atan2 > > atan2(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_atan2 >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_atan2 ,T_numtype2> > > atan2(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_atan2 ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_atan2 ,typename P_expr2::T_numtype> > > atan2(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_atan2 ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_atan2 ,int> > > atan2(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_atan2 ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * _class ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz__class > > _class(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz__class >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz__class > > _class(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz__class >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz__class > > _class(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz__class >(d1); } #endif /**************************************************************************** * cbrt ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cbrt > > cbrt(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_cbrt >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cbrt > > cbrt(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cbrt >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cbrt > > cbrt(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_cbrt >(d1); } #endif /**************************************************************************** * ceil ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_ceil > > ceil(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_ceil >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_ceil > > ceil(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_ceil >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_ceil > > ceil(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_ceil >(d1); } /**************************************************************************** * cexp ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cexp > > cexp(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_cexp >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cexp > > cexp(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cexp >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cexp > > cexp(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_cexp >(d1); } /**************************************************************************** * cos ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cos > > cos(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_cos >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cos > > cos(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cos >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cos > > cos(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_cos >(d1); } /**************************************************************************** * cosh ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cosh > > cosh(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_cosh >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cosh > > cosh(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_cosh >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_cosh > > cosh(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_cosh >(d1); } /**************************************************************************** * copysign ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_copysign > > copysign(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_copysign >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_copysign > > copysign(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_copysign >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_copysign > > copysign(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_copysign >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign > > copysign(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign > > copysign(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign > > copysign(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_copysign > > > copysign(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_copysign > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_copysign > > copysign(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_copysign >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_copysign > > copysign(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_copysign >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_copysign > > copysign(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_copysign >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_copysign > > copysign(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_copysign >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_copysign > > copysign(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_copysign >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_copysign > > copysign(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_copysign >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_copysign > > > copysign(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_copysign > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_copysign > > copysign(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_copysign >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_copysign > > copysign(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_copysign >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_copysign > > copysign(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_copysign >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign > > copysign(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign > > copysign(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign > > copysign(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_copysign >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_copysign > > > copysign(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_copysign > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_copysign > > copysign(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_copysign >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_copysign > > copysign(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_copysign >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_copysign > > copysign(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_copysign >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_copysign > > copysign(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_copysign >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_copysign > > copysign(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_copysign >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_copysign > > copysign(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_copysign >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_copysign > > copysign(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_copysign >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_copysign > > copysign(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_copysign >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_copysign > > copysign(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_copysign >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_copysign ,T_numtype2> > > copysign(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_copysign ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_copysign ,typename P_expr2::T_numtype> > > copysign(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_copysign ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_copysign ,int> > > copysign(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_copysign ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * csqrt ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_csqrt > > csqrt(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_csqrt >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_csqrt > > csqrt(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_csqrt >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_csqrt > > csqrt(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_csqrt >(d1); } /**************************************************************************** * drem ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_drem > > drem(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_drem >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_drem > > drem(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_drem >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_drem > > drem(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_drem >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem > > drem(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem > > drem(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem > > drem(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_drem > > > drem(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_drem > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_drem > > drem(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_drem >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_drem > > drem(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_drem >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_drem > > drem(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_drem >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_drem > > drem(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_drem >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_drem > > drem(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_drem >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_drem > > drem(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_drem >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_drem > > > drem(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_drem > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_drem > > drem(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_drem >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_drem > > drem(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_drem >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_drem > > drem(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_drem >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem > > drem(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem > > drem(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem > > drem(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_drem >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_drem > > > drem(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_drem > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_drem > > drem(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_drem >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_drem > > drem(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_drem >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_drem > > drem(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_drem >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_drem > > drem(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_drem >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_drem > > drem(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_drem >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_drem > > drem(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_drem >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_drem > > drem(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_drem >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_drem > > drem(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_drem >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_drem > > drem(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_drem >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_drem ,T_numtype2> > > drem(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_drem ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_drem ,typename P_expr2::T_numtype> > > drem(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_drem ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_drem ,int> > > drem(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_drem ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * exp ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_exp > > exp(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_exp >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_exp > > exp(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_exp >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_exp > > exp(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_exp >(d1); } /**************************************************************************** * expm1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_expm1 > > expm1(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_expm1 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_expm1 > > expm1(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_expm1 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_expm1 > > expm1(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_expm1 >(d1); } #endif /**************************************************************************** * erf ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_erf > > erf(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_erf >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_erf > > erf(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_erf >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_erf > > erf(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_erf >(d1); } #endif /**************************************************************************** * erfc ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_erfc > > erfc(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_erfc >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_erfc > > erfc(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_erfc >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_erfc > > erfc(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_erfc >(d1); } #endif /**************************************************************************** * fabs ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_abs > > fabs(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_abs >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_abs > > fabs(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_abs >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_abs > > fabs(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_abs >(d1); } /**************************************************************************** * floor ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_floor > > floor(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_floor >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_floor > > floor(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_floor >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_floor > > floor(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_floor >(d1); } /**************************************************************************** * fmod ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_fmod > > fmod(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_fmod >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_fmod > > fmod(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_fmod >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_fmod > > fmod(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_fmod >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod > > fmod(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod > > fmod(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod > > fmod(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_fmod > > > fmod(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_fmod > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_fmod > > fmod(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_fmod >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_fmod > > fmod(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_fmod >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_fmod > > fmod(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_fmod >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_fmod > > fmod(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_fmod >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_fmod > > fmod(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_fmod >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_fmod > > fmod(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_fmod >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_fmod > > > fmod(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_fmod > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_fmod > > fmod(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_fmod >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_fmod > > fmod(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_fmod >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_fmod > > fmod(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_fmod >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod > > fmod(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod > > fmod(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod > > fmod(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_fmod >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_fmod > > > fmod(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_fmod > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_fmod > > fmod(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_fmod >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_fmod > > fmod(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_fmod >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_fmod > > fmod(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_fmod >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_fmod > > fmod(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_fmod >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_fmod > > fmod(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_fmod >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_fmod > > fmod(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_fmod >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_fmod > > fmod(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_fmod >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_fmod > > fmod(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_fmod >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_fmod > > fmod(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_fmod >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_fmod ,T_numtype2> > > fmod(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_fmod ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_fmod ,typename P_expr2::T_numtype> > > fmod(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_fmod ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_fmod ,int> > > fmod(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_fmod ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * hypot ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_hypot > > hypot(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_hypot >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_hypot > > hypot(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_hypot >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_hypot > > hypot(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_hypot >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot > > hypot(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot > > hypot(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot > > hypot(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_hypot > > > hypot(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_hypot > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_hypot > > hypot(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_hypot >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_hypot > > hypot(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_hypot >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_hypot > > hypot(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_hypot >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_hypot > > hypot(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_hypot >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_hypot > > hypot(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_hypot >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_hypot > > hypot(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_hypot >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_hypot > > > hypot(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_hypot > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_hypot > > hypot(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_hypot >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_hypot > > hypot(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_hypot >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_hypot > > hypot(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_hypot >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot > > hypot(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot > > hypot(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot > > hypot(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_hypot >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_hypot > > > hypot(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_hypot > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_hypot > > hypot(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_hypot >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_hypot > > hypot(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_hypot >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_hypot > > hypot(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_hypot >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_hypot > > hypot(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_hypot >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_hypot > > hypot(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_hypot >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_hypot > > hypot(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_hypot >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_hypot > > hypot(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_hypot >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_hypot > > hypot(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_hypot >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_hypot > > hypot(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_hypot >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_hypot ,T_numtype2> > > hypot(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_hypot ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_hypot ,typename P_expr2::T_numtype> > > hypot(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_hypot ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_hypot ,int> > > hypot(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_hypot ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * ilogb ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_ilogb > > ilogb(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_ilogb >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_ilogb > > ilogb(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_ilogb >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_ilogb > > ilogb(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_ilogb >(d1); } #endif /**************************************************************************** * isnan ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_isnan > > isnan(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_isnan >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_isnan > > isnan(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_isnan >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_isnan > > isnan(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_isnan >(d1); } #endif /**************************************************************************** * itrunc ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_itrunc > > itrunc(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_itrunc >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_itrunc > > itrunc(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_itrunc >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_itrunc > > itrunc(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_itrunc >(d1); } #endif /**************************************************************************** * j0 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_j0 > > j0(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_j0 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_j0 > > j0(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_j0 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_j0 > > j0(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_j0 >(d1); } #endif /**************************************************************************** * j1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_j1 > > j1(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_j1 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_j1 > > j1(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_j1 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_j1 > > j1(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_j1 >(d1); } #endif /**************************************************************************** * lgamma ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_lgamma > > lgamma(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_lgamma >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_lgamma > > lgamma(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_lgamma >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_lgamma > > lgamma(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_lgamma >(d1); } #endif /**************************************************************************** * log ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_log > > log(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_log >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_log > > log(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_log >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_log > > log(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_log >(d1); } /**************************************************************************** * logb ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_logb > > logb(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_logb >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_logb > > logb(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_logb >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_logb > > logb(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_logb >(d1); } #endif /**************************************************************************** * log1p ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_log1p > > log1p(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_log1p >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_log1p > > log1p(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_log1p >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_log1p > > log1p(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_log1p >(d1); } #endif /**************************************************************************** * log10 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_log10 > > log10(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_log10 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_log10 > > log10(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_log10 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_log10 > > log10(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_log10 >(d1); } /**************************************************************************** * nearest ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_nearest > > nearest(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_nearest >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_nearest > > nearest(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_nearest >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_nearest > > nearest(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_nearest >(d1); } #endif /**************************************************************************** * nextafter ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_nextafter > > nextafter(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_nextafter >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_nextafter > > nextafter(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_nextafter >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_nextafter > > nextafter(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_nextafter >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_nextafter > > > nextafter(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_nextafter > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_nextafter > > nextafter(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_nextafter >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_nextafter > > nextafter(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_nextafter >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_nextafter > > nextafter(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_nextafter >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_nextafter >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_nextafter >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_nextafter >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_nextafter > > > nextafter(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_nextafter > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_nextafter > > nextafter(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_nextafter >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_nextafter > > nextafter(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_nextafter >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_nextafter > > nextafter(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_nextafter >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter > > nextafter(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_nextafter >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_nextafter > > > nextafter(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_nextafter > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_nextafter > > nextafter(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_nextafter > > nextafter(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_nextafter > > nextafter(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_nextafter > > nextafter(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_nextafter > > nextafter(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_nextafter > > nextafter(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_nextafter > > nextafter(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_nextafter > > nextafter(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_nextafter > > nextafter(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_nextafter >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_nextafter ,T_numtype2> > > nextafter(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_nextafter ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_nextafter ,typename P_expr2::T_numtype> > > nextafter(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_nextafter ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_nextafter ,int> > > nextafter(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_nextafter ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * pow ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_pow > > pow(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_pow >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_pow > > pow(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_pow >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_pow > > pow(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_pow >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow > > pow(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow > > pow(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow > > pow(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_pow > > > pow(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_pow > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_pow > > pow(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_pow >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_pow > > pow(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_pow >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_pow > > pow(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_pow >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_pow > > pow(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_pow >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_pow > > pow(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_pow >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_pow > > pow(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_pow >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_pow > > > pow(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_pow > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_pow > > pow(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_pow >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_pow > > pow(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_pow >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_pow > > pow(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_pow >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow > > pow(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow > > pow(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow > > pow(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_pow >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_pow > > > pow(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_pow > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_pow > > pow(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_pow >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_pow > > pow(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_pow >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_pow > > pow(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_pow >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_pow > > pow(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_pow >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_pow > > pow(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_pow >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_pow > > pow(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_pow >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_pow > > pow(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_pow >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_pow > > pow(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_pow >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_pow > > pow(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_pow >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_pow ,T_numtype2> > > pow(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_pow ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_pow ,typename P_expr2::T_numtype> > > pow(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_pow ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_pow ,int> > > pow(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_pow ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX /**************************************************************************** * pow2 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow2 > > pow2(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow2 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow2 > > pow2(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow2 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow2 > > pow2(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow2 >(d1); } /**************************************************************************** * pow3 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow3 > > pow3(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow3 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow3 > > pow3(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow3 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow3 > > pow3(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow3 >(d1); } /**************************************************************************** * pow4 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow4 > > pow4(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow4 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow4 > > pow4(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow4 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow4 > > pow4(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow4 >(d1); } /**************************************************************************** * pow5 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow5 > > pow5(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow5 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow5 > > pow5(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow5 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow5 > > pow5(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow5 >(d1); } /**************************************************************************** * pow6 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow6 > > pow6(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow6 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow6 > > pow6(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow6 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow6 > > pow6(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow6 >(d1); } /**************************************************************************** * pow7 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow7 > > pow7(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow7 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow7 > > pow7(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow7 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow7 > > pow7(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow7 >(d1); } /**************************************************************************** * pow8 ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow8 > > pow8(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_pow8 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow8 > > pow8(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_pow8 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_pow8 > > pow8(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_pow8 >(d1); } /**************************************************************************** * remainder ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_remainder > > remainder(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_remainder >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_remainder > > remainder(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_remainder >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_remainder > > remainder(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_remainder >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder > > remainder(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder > > remainder(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder > > remainder(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_remainder > > > remainder(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_remainder > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_remainder > > remainder(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_remainder >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_remainder > > remainder(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_remainder >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_remainder > > remainder(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_remainder >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_remainder > > remainder(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_remainder >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_remainder > > remainder(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_remainder >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_remainder > > remainder(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_remainder >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_remainder > > > remainder(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_remainder > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_remainder > > remainder(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_remainder >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_remainder > > remainder(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_remainder >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_remainder > > remainder(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_remainder >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder > > remainder(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder > > remainder(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder > > remainder(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_remainder >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_remainder > > > remainder(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_remainder > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_remainder > > remainder(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_remainder >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_remainder > > remainder(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_remainder >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_remainder > > remainder(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_remainder >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_remainder > > remainder(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_remainder >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_remainder > > remainder(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_remainder >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_remainder > > remainder(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_remainder >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_remainder > > remainder(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_remainder >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_remainder > > remainder(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_remainder >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_remainder > > remainder(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_remainder >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_remainder ,T_numtype2> > > remainder(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_remainder ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_remainder ,typename P_expr2::T_numtype> > > remainder(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_remainder ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_remainder ,int> > > remainder(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_remainder ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * rint ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_rint > > rint(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_rint >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_rint > > rint(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_rint >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_rint > > rint(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_rint >(d1); } #endif /**************************************************************************** * rsqrt ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_rsqrt > > rsqrt(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_rsqrt >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_rsqrt > > rsqrt(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_rsqrt >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_rsqrt > > rsqrt(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_rsqrt >(d1); } #endif /**************************************************************************** * scalb ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_scalb > > scalb(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_scalb >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_scalb > > scalb(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_scalb >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_scalb > > scalb(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_scalb >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb > > scalb(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb > > scalb(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb > > scalb(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_scalb > > > scalb(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_scalb > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_scalb > > scalb(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_scalb >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_scalb > > scalb(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_scalb >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_scalb > > scalb(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_scalb >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_scalb > > scalb(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_scalb >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_scalb > > scalb(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_scalb >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_scalb > > scalb(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_scalb >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_scalb > > > scalb(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_scalb > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_scalb > > scalb(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_scalb >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_scalb > > scalb(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_scalb >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_scalb > > scalb(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_scalb >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb > > scalb(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb > > scalb(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb > > scalb(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_scalb >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_scalb > > > scalb(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_scalb > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_scalb > > scalb(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_scalb >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_scalb > > scalb(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_scalb >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_scalb > > scalb(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_scalb >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_scalb > > scalb(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_scalb >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_scalb > > scalb(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_scalb >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_scalb > > scalb(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_scalb >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_scalb > > scalb(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_scalb >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_scalb > > scalb(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_scalb >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_scalb > > scalb(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_scalb >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_scalb ,T_numtype2> > > scalb(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_scalb ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_scalb ,typename P_expr2::T_numtype> > > scalb(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_scalb ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_scalb ,int> > > scalb(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_scalb ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * sin ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sin > > sin(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_sin >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sin > > sin(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sin >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sin > > sin(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_sin >(d1); } /**************************************************************************** * sinh ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sinh > > sinh(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_sinh >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sinh > > sinh(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sinh >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sinh > > sinh(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_sinh >(d1); } /**************************************************************************** * sqr ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sqr > > sqr(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_sqr >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sqr > > sqr(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sqr >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sqr > > sqr(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_sqr >(d1); } /**************************************************************************** * sqrt ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sqrt > > sqrt(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_sqrt >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sqrt > > sqrt(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_sqrt >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_sqrt > > sqrt(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_sqrt >(d1); } /**************************************************************************** * tan ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_tan > > tan(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_tan >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_tan > > tan(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_tan >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_tan > > tan(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_tan >(d1); } /**************************************************************************** * tanh ****************************************************************************/ template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_tanh > > tanh(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_tanh >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_tanh > > tanh(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_tanh >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_tanh > > tanh(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_tanh >(d1); } /**************************************************************************** * uitrunc ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_uitrunc > > uitrunc(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_uitrunc >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_uitrunc > > uitrunc(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_uitrunc >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_uitrunc > > uitrunc(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_uitrunc >(d1); } #endif /**************************************************************************** * unordered ****************************************************************************/ #ifdef BZ_HAVE_SYSTEM_V_MATH template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_unordered > > unordered(const Array& d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_unordered >(d1.begin(), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_unordered > > unordered(const Array& d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_unordered >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_unordered > > unordered(const Array& d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_unordered >(d1.begin(), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered > > unordered(const Array& d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered > > unordered(const Array& d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered >(d1.begin(), _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered > > unordered(const Array& d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered >(d1.begin(), _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_unordered > > > unordered(const Array& d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_unordered > >(d1.begin(), _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_unordered > > unordered(_bz_ArrayExpr d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, ArrayIterator, _bz_unordered >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_unordered > > unordered(_bz_ArrayExpr d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExpr, _bz_unordered >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_unordered > > unordered(_bz_ArrayExpr d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, IndexPlaceholder, _bz_unordered >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_unordered > > unordered(_bz_ArrayExpr d1, float d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_unordered >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_unordered > > unordered(_bz_ArrayExpr d1, double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_unordered >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_unordered > > unordered(_bz_ArrayExpr d1, long double d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant, _bz_unordered >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_unordered > > > unordered(_bz_ArrayExpr d1, complex d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExpr, _bz_ArrayExprConstant > , _bz_unordered > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, ArrayIterator, _bz_unordered > > unordered(IndexPlaceholder d1, const Array& d2) { return _bz_ArrayExprBinaryOp, ArrayIterator, _bz_unordered >(d1, d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_unordered > > unordered(IndexPlaceholder d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExpr, _bz_unordered >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_unordered > > unordered(IndexPlaceholder d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp, IndexPlaceholder, _bz_unordered >(d1, d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered > > unordered(IndexPlaceholder d1, float d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered > > unordered(IndexPlaceholder d1, double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered >(d1, _bz_ArrayExprConstant(d2)); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered > > unordered(IndexPlaceholder d1, long double d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant, _bz_unordered >(d1, _bz_ArrayExprConstant(d2)); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_unordered > > > unordered(IndexPlaceholder d1, complex d2) { return _bz_ArrayExprBinaryOp, _bz_ArrayExprConstant > , _bz_unordered > >(d1, _bz_ArrayExprConstant > (d2)); } #endif // BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_unordered > > unordered(float d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_unordered >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_unordered > > unordered(float d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_unordered >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_unordered > > unordered(float d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_unordered >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_unordered > > unordered(double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_unordered >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_unordered > > unordered(double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_unordered >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_unordered > > unordered(double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_unordered >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_unordered > > unordered(long double d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, ArrayIterator, _bz_unordered >(_bz_ArrayExprConstant(d1), d2.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_unordered > > unordered(long double d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, _bz_ArrayExpr, _bz_unordered >(_bz_ArrayExprConstant(d1), d2); } template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_unordered > > unordered(long double d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant, IndexPlaceholder, _bz_unordered >(_bz_ArrayExprConstant(d1), d2); } #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_unordered ,T_numtype2> > > unordered(complex d1, const Array& d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , ArrayIterator, _bz_unordered ,T_numtype2> >(_bz_ArrayExprConstant > (d1), d2.begin()); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_unordered ,typename P_expr2::T_numtype> > > unordered(complex d1, _bz_ArrayExpr d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , _bz_ArrayExpr, _bz_unordered ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #ifdef BZ_HAVE_COMPLEX template inline _bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_unordered ,int> > > unordered(complex d1, IndexPlaceholder d2) { return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant > , IndexPlaceholder, _bz_unordered ,int> >(_bz_ArrayExprConstant > (d1), d2); } #endif // BZ_HAVE_COMPLEX #endif /**************************************************************************** * y0 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_y0 > > y0(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_y0 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_y0 > > y0(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_y0 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_y0 > > y0(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_y0 >(d1); } #endif /**************************************************************************** * y1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_y1 > > y1(const Array& d1) { return _bz_ArrayExprUnaryOp, _bz_y1 >(d1.begin()); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_y1 > > y1(_bz_ArrayExpr d1) { return _bz_ArrayExprUnaryOp<_bz_ArrayExpr, _bz_y1 >(d1); } template inline _bz_ArrayExpr<_bz_ArrayExprUnaryOp, _bz_y1 > > y1(IndexPlaceholder d1) { return _bz_ArrayExprUnaryOp, _bz_y1 >(d1); } #endif BZ_NAMESPACE_END #endif