|
|
// numeric standard header #ifndef _NUMERIC_ #define _NUMERIC_ #include <iterator>
#ifdef _MSC_VER #pragma pack(push,8) #endif /* _MSC_VER */ _STD_BEGIN // TEMPLATE FUNCTION accumulate template<class _II, class _Ty> inline _Ty accumulate(_II _F, _II _L, _Ty _V) {for (; _F != _L; ++_F) _V = _V + *_F; return (_V); } // TEMPLATE FUNCTION accumulate WITH BINOP template<class _II, class _Ty, class _Bop> inline _Ty accumulate(_II _F, _II _L, _Ty _V, _Bop _B) {for (; _F != _L; ++_F) _V = _B(_V, *_F); return (_V); } // TEMPLATE FUNCTION inner_product template<class _II1, class _II2, class _Ty> inline _Ty inner_product(_II1 _F, _II1 _L, _II2 _X, _Ty _V) {for (; _F != _L; ++_F, ++_X) _V = _V + *_F * *_X; return (_V); } // TEMPLATE FUNCTION inner_product WITH BINOPS template<class _II1, class _II2, class _Ty, class _Bop1, class _Bop2> inline _Ty inner_product(_II1 _F, _II1 _L, _II2 _X, _Ty _V, _Bop1 _B1, _Bop2 _B2) {for (; _F != _L; ++_F, ++_X) _V = _B1(_V, _B2(*_F, *_X)); return (_V); } // TEMPLATE FUNCTION partial_sum template<class _II, class _OI> inline _OI partial_sum(_II _F, _II _L, _OI _X) {return (_F == _L ? _X : _Partial_sum(_F, _L, _X, _Val_type(_F))); } template<class _II, class _OI, class _Ty> inline _OI _Partial_sum(_II _F, _II _L, _OI _X, _Ty *) {_Ty _V = *_F; for (*_X = _V; ++_F != _L; *++_X = _V) _V = _V + *_F; return (++_X); } // TEMPLATE FUNCTION partial_sum WITH BINOP template<class _II, class _OI, class _Bop> inline _OI partial_sum(_II _F, _II _L, _OI _X, _Bop _B) {return (_F == _L ? _X : _Partial_sum(_F, _L, _X, _B, _Val_type(_F))); } template<class _II, class _OI, class _Bop, class _Ty> inline _OI _Partial_sum(_II _F, _II _L, _OI _X, _Bop _B, _Ty *) {_Ty _V = *_F; for (*_X = _V; ++_F != _L; *++_X = _V) _V = _B(_V, *_F); return (++_X); } // TEMPLATE FUNCTION adjacent_difference template<class _II, class _OI> inline _OI adjacent_difference(_II _F, _II _L, _OI _X) {return (_F == _L ? _X : _Adjacent_difference(_F, _L, _X, _Val_type(_F))); } template<class _II, class _OI, class _Ty> inline _OI _Adjacent_difference(_II _F, _II _L, _OI _X, _Ty *) {_Ty _V = *_F; for (*_X = _V; ++_F != _L; ) {_Ty _Tmp = *_F; *++_X = _Tmp - _V; _V = _Tmp; } return (++_X); } // TEMPLATE FUNCTION adjacent_difference WITH BINOP template<class _II, class _OI, class _Bop> inline _OI adjacent_difference(_II _F, _II _L, _OI _X, _Bop _B) {return (_F == _L ? _X : _Adjacent_difference(_F, _L, _X, _B, _Val_type(_F))); } template<class _II, class _OI, class _Bop, class _Ty> inline _OI _Adjacent_difference(_II _F, _II _L, _OI _X, _Bop _B, _Ty *) {_Ty _V = *_F; for (*_X = _V; ++_F != _L; ) {_Ty _Tmp = *_F; *++_X = _B(_Tmp, _V); _V = _Tmp; } return (++_X); } _STD_END #ifdef _MSC_VER #pragma pack(pop) #endif /* _MSC_VER */
#endif /* _NUMERIC_ */
/* * Copyright (c) 1995 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. */
/* * This file is derived from software bearing the following * restrictions: * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this * software and its documentation for any purpose is hereby * granted without fee, provided that the above copyright notice * appear in all copies and that both that copyright notice and * this permission notice appear in supporting documentation. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. */
|