⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 valarray_after.h

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
    inline _Tp    _Expr<_Clos, _Tp>::sum() const    {      size_t __n = _M_closure.size();      if (__n == 0)	return _Tp();      else	{	  _Tp __s = _M_closure[--__n];	  while (__n != 0)	    __s += _M_closure[--__n];	  return __s;        }    }  template<class _Clos, typename _Tp>    inline _Tp    _Expr<_Clos, _Tp>::min() const    { return __valarray_min(_M_closure); }  template<class _Clos, typename _Tp>    inline _Tp    _Expr<_Clos, _Tp>::max() const    { return __valarray_max(_M_closure); }  template<class _Dom, typename _Tp>    inline _Expr<_UnClos<__logical_not, _Expr, _Dom>, bool>    _Expr<_Dom, _Tp>::operator!() const    {      typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure;      return _Expr<_Closure, _Tp>(_Closure(this->_M_closure));    }#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name)                           \  template<class _Dom, typename _Tp>                                      \    inline _Expr<_UnClos<_Name, std::_Expr, _Dom>, _Tp>                   \    _Expr<_Dom, _Tp>::operator _Op() const                                \    {                                                                     \      typedef _UnClos<_Name, std::_Expr, _Dom> _Closure;                  \      return _Expr<_Closure, _Tp>(_Closure(this->_M_closure));            \    }    _DEFINE_EXPR_UNARY_OPERATOR(+, __unary_plus)    _DEFINE_EXPR_UNARY_OPERATOR(-, __negate)    _DEFINE_EXPR_UNARY_OPERATOR(~, __bitwise_not)#undef _DEFINE_EXPR_UNARY_OPERATOR#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name)                        \  template<class _Dom1, class _Dom2>					\    inline _Expr<_BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2>,           \           typename __fun<_Name, typename _Dom1::value_type>::result_type> \    operator _Op(const _Expr<_Dom1, typename _Dom1::value_type>& __v,   \	         const _Expr<_Dom2, typename _Dom2::value_type>& __w)   \    {                                                                   \      typedef typename _Dom1::value_type _Arg;                          \      typedef typename __fun<_Name, _Arg>::result_type _Value;          \      typedef _BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2> _Closure;     \      return _Expr<_Closure, _Value>(_Closure(__v(), __w()));           \    }                                                                   \                                                                        \  template<class _Dom>                                                  \    inline _Expr<_BinClos<_Name, _Expr, _Constant, _Dom,                \                          typename _Dom::value_type>,                   \             typename __fun<_Name, typename _Dom::value_type>::result_type> \    operator _Op(const _Expr<_Dom, typename _Dom::value_type>& __v,     \                 const typename _Dom::value_type& __t)                  \    {                                                                   \      typedef typename _Dom::value_type _Arg;                           \      typedef typename __fun<_Name, _Arg>::result_type _Value;          \      typedef _BinClos<_Name, _Expr, _Constant, _Dom, _Arg> _Closure;   \      return _Expr<_Closure, _Value>(_Closure(__v(), __t));             \    }                                                                   \                                                                        \  template<class _Dom>                                                  \    inline _Expr<_BinClos<_Name, _Constant, _Expr,                      \                          typename _Dom::value_type, _Dom>,             \             typename __fun<_Name, typename _Dom::value_type>::result_type> \    operator _Op(const typename _Dom::value_type& __t,                  \                 const _Expr<_Dom, typename _Dom::value_type>& __v)     \    {                                                                   \      typedef typename _Dom::value_type _Arg;                           \      typedef typename __fun<_Name, _Arg>::result_type _Value;          \      typedef _BinClos<_Name, _Constant, _Expr, _Arg, _Dom> _Closure;   \      return _Expr<_Closure, _Value>(_Closure(__t, __v()));             \    }                                                                   \                                                                        \  template<class _Dom>                                                  \    inline _Expr<_BinClos<_Name, _Expr, _ValArray,                      \                          _Dom, typename _Dom::value_type>,             \             typename __fun<_Name, typename _Dom::value_type>::result_type> \    operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __e,      \                 const valarray<typename _Dom::value_type>& __v)        \    {                                                                   \      typedef typename _Dom::value_type _Arg;                           \      typedef typename __fun<_Name, _Arg>::result_type _Value;          \      typedef _BinClos<_Name, _Expr, _ValArray, _Dom, _Arg> _Closure;   \      return _Expr<_Closure, _Value>(_Closure(__e(), __v));             \    }                                                                   \                                                                        \  template<class _Dom>                                                  \    inline _Expr<_BinClos<_Name, _ValArray, _Expr,                      \                 typename _Dom::value_type, _Dom>,                      \             typename __fun<_Name, typename _Dom::value_type>::result_type> \    operator _Op(const valarray<typename _Dom::value_type>& __v,        \                 const _Expr<_Dom, typename _Dom::value_type>& __e)     \    {                                                                   \      typedef typename _Dom::value_type _Tp;                            \      typedef typename __fun<_Name, _Tp>::result_type _Value;           \      typedef _BinClos<_Name, _ValArray, _Expr, _Tp, _Dom> _Closure;    \      return _Expr<_Closure, _Value>(_Closure(__v, __e ()));            \    }    _DEFINE_EXPR_BINARY_OPERATOR(+, __plus)    _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)    _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)    _DEFINE_EXPR_BINARY_OPERATOR(/, __divides)    _DEFINE_EXPR_BINARY_OPERATOR(%, __modulus)    _DEFINE_EXPR_BINARY_OPERATOR(^, __bitwise_xor)    _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)    _DEFINE_EXPR_BINARY_OPERATOR(|, __bitwise_or)    _DEFINE_EXPR_BINARY_OPERATOR(<<, __shift_left)    _DEFINE_EXPR_BINARY_OPERATOR(>>, __shift_right)    _DEFINE_EXPR_BINARY_OPERATOR(&&, __logical_and)    _DEFINE_EXPR_BINARY_OPERATOR(||, __logical_or)    _DEFINE_EXPR_BINARY_OPERATOR(==, __equal_to)    _DEFINE_EXPR_BINARY_OPERATOR(!=, __not_equal_to)    _DEFINE_EXPR_BINARY_OPERATOR(<, __less)    _DEFINE_EXPR_BINARY_OPERATOR(>, __greater)    _DEFINE_EXPR_BINARY_OPERATOR(<=, __less_equal)    _DEFINE_EXPR_BINARY_OPERATOR(>=, __greater_equal)#undef _DEFINE_EXPR_BINARY_OPERATOR#define _DEFINE_EXPR_UNARY_FUNCTION(_Name)                               \  template<class _Dom>                                                   \    inline _Expr<_UnClos<__##_Name, _Expr, _Dom>,                        \                 typename _Dom::value_type>                              \    _Name(const _Expr<_Dom, typename _Dom::value_type>& __e)             \    {                                                                    \      typedef typename _Dom::value_type _Tp;                             \      typedef _UnClos<__##_Name, _Expr, _Dom> _Closure;                  \      return _Expr<_Closure, _Tp>(_Closure(__e()));                      \    }                                                                    \                                                                         \  template<typename _Tp>                                                 \    inline _Expr<_UnClos<__##_Name, _ValArray, _Tp>, _Tp>                \    _Name(const valarray<_Tp>& __v)                                      \    {                                                                    \      typedef _UnClos<__##_Name, _ValArray, _Tp> _Closure;               \      return _Expr<_Closure, _Tp>(_Closure(__v));                        \    }    _DEFINE_EXPR_UNARY_FUNCTION(abs)    _DEFINE_EXPR_UNARY_FUNCTION(cos)    _DEFINE_EXPR_UNARY_FUNCTION(acos)    _DEFINE_EXPR_UNARY_FUNCTION(cosh)    _DEFINE_EXPR_UNARY_FUNCTION(sin)    _DEFINE_EXPR_UNARY_FUNCTION(asin)    _DEFINE_EXPR_UNARY_FUNCTION(sinh)    _DEFINE_EXPR_UNARY_FUNCTION(tan)    _DEFINE_EXPR_UNARY_FUNCTION(tanh)    _DEFINE_EXPR_UNARY_FUNCTION(atan)    _DEFINE_EXPR_UNARY_FUNCTION(exp)    _DEFINE_EXPR_UNARY_FUNCTION(log)    _DEFINE_EXPR_UNARY_FUNCTION(log10)    _DEFINE_EXPR_UNARY_FUNCTION(sqrt)#undef _DEFINE_EXPR_UNARY_FUNCTION#define _DEFINE_EXPR_BINARY_FUNCTION(_Fun)                             \  template<class _Dom1, class _Dom2>                                   \    inline _Expr<_BinClos<__##_Fun, _Expr, _Expr, _Dom1, _Dom2>,       \		 typename _Dom1::value_type>                           \    _Fun(const _Expr<_Dom1, typename _Dom1::value_type>& __e1,         \	  const _Expr<_Dom2, typename _Dom2::value_type>& __e2)        \    {                                                                  \      typedef typename _Dom1::value_type _Tp;                          \      typedef _BinClos<__##_Fun, _Expr, _Expr, _Dom1, _Dom2> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__e1(), __e2()));           \    }                                                                  \                                                                       \  template<class _Dom>                                                 \    inline _Expr<_BinClos<__##_Fun, _Expr, _ValArray, _Dom,            \			  typename _Dom::value_type>,                  \		 typename _Dom::value_type>                            \    _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e,            \	 const valarray<typename _Dom::value_type>& __v)               \    {                                                                  \      typedef typename _Dom::value_type _Tp;                           \      typedef _BinClos<__##_Fun, _Expr, _ValArray, _Dom, _Tp> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__e(), __v));               \    }                                                                  \                                                                       \  template<class _Dom>                                                 \    inline _Expr<_BinClos<__##_Fun, _ValArray, _Expr,                  \			  typename _Dom::value_type, _Dom>,            \		 typename _Dom::value_type>                            \    _Fun(const valarray<typename _Dom::valarray>& __v,                 \	 const _Expr<_Dom, typename _Dom::value_type>& __e)            \    {                                                                  \      typedef typename _Dom::value_type _Tp;                           \      typedef _BinClos<__##_Fun, _ValArray, _Expr, _Tp, _Dom> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__v, __e()));               \    }                                                                  \                                                                       \  template<class _Dom>                                                 \    inline _Expr<_BinClos<__##_Fun, _Expr, _Constant, _Dom,            \			  typename _Dom::value_type>,                  \		 typename _Dom::value_type>                            \    _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e,            \	 const typename _Dom::value_type& __t)                         \    {                                                                  \      typedef typename _Dom::value_type _Tp;                           \      typedef _BinClos<__##_Fun, _Expr, _Constant, _Dom, _Tp> _Closure;\      return _Expr<_Closure, _Tp>(_Closure(__e(), __t));               \    }                                                                  \                                                                       \  template<class _Dom>                                                 \    inline _Expr<_BinClos<__##_Fun, _Constant, _Expr,                  \			  typename _Dom::value_type, _Dom>,            \		 typename _Dom::value_type>                            \    _Fun(const typename _Dom::value_type& __t,                         \	 const _Expr<_Dom, typename _Dom::value_type>& __e)            \    {                                                                  \      typedef typename _Dom::value_type _Tp;                           \      typedef _BinClos<__##_Fun, _Constant, _Expr, _Tp, _Dom> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__t, __e()));               \    }                                                                  \                                                                       \  template<typename _Tp>                                               \    inline _Expr<_BinClos<__##_Fun, _ValArray, _ValArray, _Tp, _Tp>, _Tp> \    _Fun(const valarray<_Tp>& __v, const valarray<_Tp>& __w)           \    {                                                                  \      typedef _BinClos<__##_Fun, _ValArray, _ValArray, _Tp, _Tp> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__v, __w));                 \    }                                                                  \                                                                       \  template<typename _Tp>                                               \    inline _Expr<_BinClos<__##_Fun, _ValArray, _Constant, _Tp, _Tp>, _Tp> \    _Fun(const valarray<_Tp>& __v, const _Tp& __t)                     \    {                                                                  \      typedef _BinClos<__##_Fun, _ValArray, _Constant, _Tp, _Tp> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__v, __t));                 \    }                                                                  \								       \  template<typename _Tp>                                               \    inline _Expr<_BinClos<__##_Fun, _Constant, _ValArray, _Tp, _Tp>, _Tp> \    _Fun(const _Tp& __t, const valarray<_Tp>& __v)                     \    {                                                                  \      typedef _BinClos<__##_Fun, _Constant, _ValArray, _Tp, _Tp> _Closure; \      return _Expr<_Closure, _Tp>(_Closure(__t, __v));                 \    }_DEFINE_EXPR_BINARY_FUNCTION(atan2)_DEFINE_EXPR_BINARY_FUNCTION(pow)#undef _DEFINE_EXPR_BINARY_FUNCTION} // std::#endif /* _CPP_VALARRAY_AFTER_H */// Local Variables:// mode:c++// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -