/*************************************************************************** * blitz/vecuops.cc Expression templates for vectors, unary functions * * $Id: vecuops.cc,v 1.1.1.1 1999-04-09 17:59:00 ansari Exp $ * * 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/ * *************************************************************************** * $Log: not supported by cvs2svn $ */ // Generated source file. Do not edit. // genvecuops.cpp Jun 10 1998 16:03:50 #ifndef BZ_VECUOPS_CC #define BZ_VECUOPS_CC #ifndef BZ_VECEXPR_H #error must be included via #endif // BZ_VECEXPR_H BZ_NAMESPACE(blitz) /**************************************************************************** * abs ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > abs(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs<_bz_typename P_expr1::T_numtype> > > abs(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > abs(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > abs(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > abs(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * acos ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acos > > acos(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_acos<_bz_typename P_expr1::T_numtype> > > acos(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_acos<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acos > > acos(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > acos(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acos > > acos(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_acos > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * acosh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acosh > > acosh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_acosh<_bz_typename P_expr1::T_numtype> > > acosh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_acosh<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acosh > > acosh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > acosh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_acosh > > acosh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_acosh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * asin ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asin > > asin(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_asin<_bz_typename P_expr1::T_numtype> > > asin(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_asin<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asin > > asin(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > asin(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asin > > asin(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_asin > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * asinh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asinh > > asinh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_asinh<_bz_typename P_expr1::T_numtype> > > asinh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_asinh<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asinh > > asinh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > asinh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_asinh > > asinh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_asinh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * atan ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atan > > atan(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_atan<_bz_typename P_expr1::T_numtype> > > atan(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_atan<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atan > > atan(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > atan(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atan > > atan(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_atan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * atanh ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atanh > > atanh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_atanh<_bz_typename P_expr1::T_numtype> > > atanh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_atanh<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atanh > > atanh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > atanh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_atanh > > atanh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_atanh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * _class ****************************************************************************/ #ifdef BZ_HAVE_SYSV_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz__class > > _class(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz__class<_bz_typename P_expr1::T_numtype> > > _class(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz__class<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz__class > > _class(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > _class(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz__class > > _class(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz__class > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * cbrt ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cbrt > > cbrt(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_cbrt<_bz_typename P_expr1::T_numtype> > > cbrt(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_cbrt<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cbrt > > cbrt(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > cbrt(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cbrt > > cbrt(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_cbrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * ceil ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ceil > > ceil(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_ceil<_bz_typename P_expr1::T_numtype> > > ceil(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_ceil<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ceil > > ceil(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > ceil(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ceil > > ceil(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_ceil > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * cos ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cos > > cos(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_cos<_bz_typename P_expr1::T_numtype> > > cos(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_cos<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cos > > cos(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > cos(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cos > > cos(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_cos > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * cosh ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cosh > > cosh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_cosh<_bz_typename P_expr1::T_numtype> > > cosh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_cosh<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cosh > > cosh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > cosh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_cosh > > cosh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_cosh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * exp ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_exp > > exp(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_exp<_bz_typename P_expr1::T_numtype> > > exp(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_exp<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_exp > > exp(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > exp(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_exp > > exp(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_exp > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * expm1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_expm1 > > expm1(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_expm1<_bz_typename P_expr1::T_numtype> > > expm1(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_expm1<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_expm1 > > expm1(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > expm1(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_expm1 > > expm1(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_expm1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * erf ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erf > > erf(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_erf<_bz_typename P_expr1::T_numtype> > > erf(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_erf<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erf > > erf(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > erf(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erf > > erf(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_erf > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * erfc ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erfc > > erfc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_erfc<_bz_typename P_expr1::T_numtype> > > erfc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_erfc<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erfc > > erfc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > erfc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_erfc > > erfc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_erfc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * fabs ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > fabs(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs<_bz_typename P_expr1::T_numtype> > > fabs(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_abs<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > fabs(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > fabs(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_abs > > fabs(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_abs > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * finite ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_finite > > finite(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_finite > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_finite<_bz_typename P_expr1::T_numtype> > > finite(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_finite<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_finite > > finite(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_finite > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > finite(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_finite > > finite(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_finite > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * floor ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_floor > > floor(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_floor<_bz_typename P_expr1::T_numtype> > > floor(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_floor<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_floor > > floor(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > floor(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_floor > > floor(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_floor > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * ilogb ****************************************************************************/ #ifdef BZ_HAVE_SYSV_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ilogb > > ilogb(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_ilogb<_bz_typename P_expr1::T_numtype> > > ilogb(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_ilogb<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ilogb > > ilogb(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > ilogb(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_ilogb > > ilogb(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_ilogb > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * isnan ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_isnan > > isnan(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_isnan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_isnan<_bz_typename P_expr1::T_numtype> > > isnan(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_isnan<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_isnan > > isnan(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_isnan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > isnan(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_isnan > > isnan(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_isnan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * itrunc ****************************************************************************/ #ifdef BZ_HAVE_SYSV_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_itrunc > > itrunc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_itrunc<_bz_typename P_expr1::T_numtype> > > itrunc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_itrunc<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_itrunc > > itrunc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > itrunc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_itrunc > > itrunc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_itrunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * j0 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j0 > > j0(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_j0<_bz_typename P_expr1::T_numtype> > > j0(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_j0<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j0 > > j0(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > j0(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j0 > > j0(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_j0 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * j1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j1 > > j1(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_j1<_bz_typename P_expr1::T_numtype> > > j1(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_j1<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j1 > > j1(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > j1(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_j1 > > j1(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_j1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * lgamma ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_lgamma > > lgamma(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_lgamma<_bz_typename P_expr1::T_numtype> > > lgamma(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_lgamma<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_lgamma > > lgamma(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > lgamma(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_lgamma > > lgamma(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_lgamma > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * log ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log > > log(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_log<_bz_typename P_expr1::T_numtype> > > log(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_log<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log > > log(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > log(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log > > log(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_log > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * logb ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_logb > > logb(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_logb<_bz_typename P_expr1::T_numtype> > > logb(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_logb<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_logb > > logb(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > logb(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_logb > > logb(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_logb > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * log1p ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log1p > > log1p(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_log1p<_bz_typename P_expr1::T_numtype> > > log1p(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_log1p<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log1p > > log1p(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > log1p(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log1p > > log1p(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_log1p > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * log10 ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log10 > > log10(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_log10<_bz_typename P_expr1::T_numtype> > > log10(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_log10<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log10 > > log10(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > log10(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_log10 > > log10(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_log10 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * nearest ****************************************************************************/ #ifdef BZ_HAVE_SYSV_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_nearest > > nearest(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_nearest<_bz_typename P_expr1::T_numtype> > > nearest(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_nearest<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_nearest > > nearest(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > nearest(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_nearest > > nearest(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_nearest > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * rint ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rint > > rint(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_rint<_bz_typename P_expr1::T_numtype> > > rint(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_rint<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rint > > rint(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > rint(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rint > > rint(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_rint > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * rsqrt ****************************************************************************/ #ifdef BZ_HAVE_SYSV_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rsqrt > > rsqrt(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_rsqrt<_bz_typename P_expr1::T_numtype> > > rsqrt(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_rsqrt<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rsqrt > > rsqrt(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > rsqrt(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_rsqrt > > rsqrt(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_rsqrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * sin ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sin > > sin(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sin<_bz_typename P_expr1::T_numtype> > > sin(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sin<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sin > > sin(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sin(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sin > > sin(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sin > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * sinh ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sinh > > sinh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sinh<_bz_typename P_expr1::T_numtype> > > sinh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sinh<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sinh > > sinh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sinh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sinh > > sinh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sinh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * sqr ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqr > > sqr(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqr<_bz_typename P_expr1::T_numtype> > > sqr(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqr<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqr > > sqr(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sqr(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqr > > sqr(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqr > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * sqrt ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqrt > > sqrt(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqrt<_bz_typename P_expr1::T_numtype> > > sqrt(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_sqrt<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqrt > > sqrt(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > sqrt(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_sqrt > > sqrt(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_sqrt > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * tan ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tan > > tan(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_tan<_bz_typename P_expr1::T_numtype> > > tan(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_tan<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tan > > tan(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > tan(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tan > > tan(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_tan > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * tanh ****************************************************************************/ template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tanh > > tanh(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_tanh<_bz_typename P_expr1::T_numtype> > > tanh(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_tanh<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tanh > > tanh(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > tanh(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_tanh > > tanh(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_tanh > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } /**************************************************************************** * trunc ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_trunc > > trunc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_trunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_trunc<_bz_typename P_expr1::T_numtype> > > trunc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_trunc<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_trunc > > trunc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_trunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > trunc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_trunc > > trunc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_trunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * uitrunc ****************************************************************************/ #ifdef BZ_HAVE_SYSV_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_uitrunc > > uitrunc(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_uitrunc<_bz_typename P_expr1::T_numtype> > > uitrunc(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_uitrunc<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_uitrunc > > uitrunc(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > uitrunc(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_uitrunc > > uitrunc(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_uitrunc > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * y0 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y0 > > y0(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_y0<_bz_typename P_expr1::T_numtype> > > y0(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_y0<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y0 > > y0(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > y0(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y0 > > y0(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_y0 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif /**************************************************************************** * y1 ****************************************************************************/ #ifdef BZ_HAVE_IEEE_MATH template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y1 > > y1(const Vector& d1) { typedef _bz_VecExprUnaryOp, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } template inline _bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr, _bz_y1<_bz_typename P_expr1::T_numtype> > > y1(_bz_VecExpr d1) { typedef _bz_VecExprUnaryOp<_bz_VecExpr, _bz_y1<_bz_typename P_expr1::T_numtype> > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y1 > > y1(const VectorPick& d1) { typedef _bz_VecExprUnaryOp, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } inline _bz_VecExpr<_bz_VecExprUnaryOp > > y1(Range d1) { typedef _bz_VecExprUnaryOp > T_expr; return _bz_VecExpr(T_expr(d1)); } template inline _bz_VecExpr<_bz_VecExprUnaryOp, _bz_y1 > > y1(const TinyVector& d1) { typedef _bz_VecExprUnaryOp, _bz_y1 > T_expr; return _bz_VecExpr(T_expr(d1.begin())); } #endif BZ_NAMESPACE_END #endif