📄 bops.cc
字号:
(d1,
_bz_ArrayExprConstant<float>(d2));
}
// IndexPlaceholder<N_index1> * double
template<int N_index1>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>,
_bz_ArrayExprConstant<double>,
Multiply<int, double > > >
operator*(IndexPlaceholder<N_index1> d1,
double d2)
{
return _bz_ArrayExprOp<IndexPlaceholder<N_index1>,
_bz_ArrayExprConstant<double>,
Multiply<int, double> >
(d1,
_bz_ArrayExprConstant<double>(d2));
}
// IndexPlaceholder<N_index1> * long double
template<int N_index1>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>,
_bz_ArrayExprConstant<long double>,
Multiply<int, long double > > >
operator*(IndexPlaceholder<N_index1> d1,
long double d2)
{
return _bz_ArrayExprOp<IndexPlaceholder<N_index1>,
_bz_ArrayExprConstant<long double>,
Multiply<int, long double> >
(d1,
_bz_ArrayExprConstant<long double>(d2));
}
#ifdef BZ_HAVE_COMPLEX
// IndexPlaceholder<N_index1> * complex<T2>
template<int N_index1, class T2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>,
_bz_ArrayExprConstant<complex<T2> > ,
Multiply<int, complex<T2> > > >
operator*(IndexPlaceholder<N_index1> d1,
complex<T2> d2)
{
return _bz_ArrayExprOp<IndexPlaceholder<N_index1>,
_bz_ArrayExprConstant<complex<T2> > ,
Multiply<int, complex<T2> > >
(d1,
_bz_ArrayExprConstant<complex<T2> > (d2));
}
#endif // BZ_HAVE_COMPLEX
// int * Array<T_numtype2, N_rank2>
template<class T_numtype2, int N_rank2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<int>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<int, T_numtype2 > > >
operator*(int d1,
const Array<T_numtype2, N_rank2>& d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<int>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<int, T_numtype2> >
(_bz_ArrayExprConstant<int>(d1),
d2.begin());
}
// int * _bz_ArrayExpr<P_expr2>
template<class P_expr2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<int>,
_bz_ArrayExpr<P_expr2>,
Multiply<int, _bz_typename P_expr2::T_numtype > > >
operator*(int d1,
_bz_ArrayExpr<P_expr2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<int>,
_bz_ArrayExpr<P_expr2>,
Multiply<int, _bz_typename P_expr2::T_numtype> >
(_bz_ArrayExprConstant<int>(d1),
d2);
}
// int * IndexPlaceholder<N_index2>
template<int N_index2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<int>,
IndexPlaceholder<N_index2>,
Multiply<int, int > > >
operator*(int d1,
IndexPlaceholder<N_index2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<int>,
IndexPlaceholder<N_index2>,
Multiply<int, int> >
(_bz_ArrayExprConstant<int>(d1),
d2);
}
// float * Array<T_numtype2, N_rank2>
template<class T_numtype2, int N_rank2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<float, T_numtype2 > > >
operator*(float d1,
const Array<T_numtype2, N_rank2>& d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<float, T_numtype2> >
(_bz_ArrayExprConstant<float>(d1),
d2.begin());
}
// float * _bz_ArrayExpr<P_expr2>
template<class P_expr2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>,
_bz_ArrayExpr<P_expr2>,
Multiply<float, _bz_typename P_expr2::T_numtype > > >
operator*(float d1,
_bz_ArrayExpr<P_expr2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>,
_bz_ArrayExpr<P_expr2>,
Multiply<float, _bz_typename P_expr2::T_numtype> >
(_bz_ArrayExprConstant<float>(d1),
d2);
}
// float * IndexPlaceholder<N_index2>
template<int N_index2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>,
IndexPlaceholder<N_index2>,
Multiply<float, int > > >
operator*(float d1,
IndexPlaceholder<N_index2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>,
IndexPlaceholder<N_index2>,
Multiply<float, int> >
(_bz_ArrayExprConstant<float>(d1),
d2);
}
// double * Array<T_numtype2, N_rank2>
template<class T_numtype2, int N_rank2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<double, T_numtype2 > > >
operator*(double d1,
const Array<T_numtype2, N_rank2>& d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<double, T_numtype2> >
(_bz_ArrayExprConstant<double>(d1),
d2.begin());
}
// double * _bz_ArrayExpr<P_expr2>
template<class P_expr2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>,
_bz_ArrayExpr<P_expr2>,
Multiply<double, _bz_typename P_expr2::T_numtype > > >
operator*(double d1,
_bz_ArrayExpr<P_expr2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>,
_bz_ArrayExpr<P_expr2>,
Multiply<double, _bz_typename P_expr2::T_numtype> >
(_bz_ArrayExprConstant<double>(d1),
d2);
}
// double * IndexPlaceholder<N_index2>
template<int N_index2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>,
IndexPlaceholder<N_index2>,
Multiply<double, int > > >
operator*(double d1,
IndexPlaceholder<N_index2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>,
IndexPlaceholder<N_index2>,
Multiply<double, int> >
(_bz_ArrayExprConstant<double>(d1),
d2);
}
// long double * Array<T_numtype2, N_rank2>
template<class T_numtype2, int N_rank2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<long double, T_numtype2 > > >
operator*(long double d1,
const Array<T_numtype2, N_rank2>& d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<long double, T_numtype2> >
(_bz_ArrayExprConstant<long double>(d1),
d2.begin());
}
// long double * _bz_ArrayExpr<P_expr2>
template<class P_expr2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>,
_bz_ArrayExpr<P_expr2>,
Multiply<long double, _bz_typename P_expr2::T_numtype > > >
operator*(long double d1,
_bz_ArrayExpr<P_expr2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>,
_bz_ArrayExpr<P_expr2>,
Multiply<long double, _bz_typename P_expr2::T_numtype> >
(_bz_ArrayExprConstant<long double>(d1),
d2);
}
// long double * IndexPlaceholder<N_index2>
template<int N_index2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>,
IndexPlaceholder<N_index2>,
Multiply<long double, int > > >
operator*(long double d1,
IndexPlaceholder<N_index2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>,
IndexPlaceholder<N_index2>,
Multiply<long double, int> >
(_bz_ArrayExprConstant<long double>(d1),
d2);
}
#ifdef BZ_HAVE_COMPLEX
// complex<T1> * Array<T_numtype2, N_rank2>
template<class T1, class T_numtype2, int N_rank2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > ,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<complex<T1> , T_numtype2 > > >
operator*(complex<T1> d1,
const Array<T_numtype2, N_rank2>& d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > ,
ArrayIterator<T_numtype2, N_rank2>,
Multiply<complex<T1> , T_numtype2> >
(_bz_ArrayExprConstant<complex<T1> > (d1),
d2.begin());
}
#endif // BZ_HAVE_COMPLEX
#ifdef BZ_HAVE_COMPLEX
// complex<T1> * _bz_ArrayExpr<P_expr2>
template<class T1, class P_expr2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > ,
_bz_ArrayExpr<P_expr2>,
Multiply<complex<T1> , _bz_typename P_expr2::T_numtype > > >
operator*(complex<T1> d1,
_bz_ArrayExpr<P_expr2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > ,
_bz_ArrayExpr<P_expr2>,
Multiply<complex<T1> , _bz_typename P_expr2::T_numtype> >
(_bz_ArrayExprConstant<complex<T1> > (d1),
d2);
}
#endif // BZ_HAVE_COMPLEX
#ifdef BZ_HAVE_COMPLEX
// complex<T1> * IndexPlaceholder<N_index2>
template<class T1, int N_index2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > ,
IndexPlaceholder<N_index2>,
Multiply<complex<T1> , int > > >
operator*(complex<T1> d1,
IndexPlaceholder<N_index2> d2)
{
return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > ,
IndexPlaceholder<N_index2>,
Multiply<complex<T1> , int> >
(_bz_ArrayExprConstant<complex<T1> > (d1),
d2);
}
#endif // BZ_HAVE_COMPLEX
/****************************************************************************
* Division Operators
****************************************************************************/
// Array<T_numtype1, N_rank1> / Array<T_numtype2, N_rank2>
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
ArrayIterator<T_numtype2, N_rank2>,
Divide<T_numtype1, T_numtype2 > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
const Array<T_numtype2, N_rank2>& d2)
{
return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
ArrayIterator<T_numtype2, N_rank2>,
Divide<T_numtype1, T_numtype2> >
(d1.begin(),
d2.begin());
}
// Array<T_numtype1, N_rank1> / _bz_ArrayExpr<P_expr2>
template<class T_numtype1, int N_rank1, class P_expr2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExpr<P_expr2>,
Divide<T_numtype1, _bz_typename P_expr2::T_numtype > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
_bz_ArrayExpr<P_expr2> d2)
{
return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExpr<P_expr2>,
Divide<T_numtype1, _bz_typename P_expr2::T_numtype> >
(d1.begin(),
d2);
}
// Array<T_numtype1, N_rank1> / IndexPlaceholder<N_index2>
template<class T_numtype1, int N_rank1, int N_index2>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
IndexPlaceholder<N_index2>,
Divide<T_numtype1, int > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
IndexPlaceholder<N_index2> d2)
{
return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
IndexPlaceholder<N_index2>,
Divide<T_numtype1, int> >
(d1.begin(),
d2);
}
// Array<T_numtype1, N_rank1> / int
template<class T_numtype1, int N_rank1>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<int>,
Divide<T_numtype1, int > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
int d2)
{
return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<int>,
Divide<T_numtype1, int> >
(d1.begin(),
_bz_ArrayExprConstant<int>(d2));
}
// Array<T_numtype1, N_rank1> / float
template<class T_numtype1, int N_rank1>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<float>,
Divide<T_numtype1, float > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
float d2)
{
return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<float>,
Divide<T_numtype1, float> >
(d1.begin(),
_bz_ArrayExprConstant<float>(d2));
}
// Array<T_numtype1, N_rank1> / double
template<class T_numtype1, int N_rank1>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<double>,
Divide<T_numtype1, double > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
double d2)
{
return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<double>,
Divide<T_numtype1, double> >
(d1.begin(),
_bz_ArrayExprConstant<double>(d2));
}
// Array<T_numtype1, N_rank1> / long double
template<class T_numtype1, int N_rank1>
inline
_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,
_bz_ArrayExprConstant<long double>,
Divide<T_numtype1, long double > > >
operator/(const Array<T_numtype1, N_rank1>& d1,
long double d2)
{
return _bz_ArrayExprOp<ArrayIte
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -