Chris@16: /* Chris@16: [auto_generated] Chris@16: boost/numeric/odeint/algebra/array_algebra.hpp Chris@16: Chris@16: [begin_description] Chris@101: Algebra for Arrays. Highly specialized for odeint. Const arguments are Chris@101: introduce to work with odeint. Chris@101: The Array algebra can be used for Array structures with two template Chris@101: parameters: Chris@101: Array Chris@16: [end_description] Chris@16: Chris@101: Copyright 2011-2013 Mario Mulansky Chris@101: Copyright 2011-2012 Karsten Ahnert Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. Chris@16: (See accompanying file LICENSE_1_0.txt or Chris@16: copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: */ Chris@16: Chris@16: Chris@16: #ifndef BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED Chris@16: #define BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED Chris@16: Chris@101: #include Chris@16: #include Chris@16: Chris@101: #include Chris@101: Chris@16: namespace boost { Chris@16: namespace numeric { Chris@16: namespace odeint { Chris@16: Chris@16: struct array_algebra Chris@16: { Chris@101: //template< typename T , size_t dim , class Op > Chris@101: template < template < typename, size_t > class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each1( Array< T, dim > &s1, Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each2( Array< T, dim > &s1, const Array< T, dim > &s2, Chris@101: Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each3( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each3( Array< T , dim > &s1 , Chris@101: Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each4( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each5( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each6( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each7( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each8( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each9( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each10( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Chris@101: const Array< T , dim > &s10 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each11( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Chris@101: const Array< T , dim > &s10 , Chris@101: const Array< T , dim > &s11 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each12( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Chris@101: const Array< T , dim > &s10 , Chris@101: const Array< T , dim > &s11 , Chris@101: const Array< T , dim > &s12 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each13( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Chris@101: const Array< T , dim > &s10 , Chris@101: const Array< T , dim > &s11 , Chris@101: const Array< T , dim > &s12 , Chris@101: const Array< T , dim > &s13 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each14( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Chris@101: const Array< T , dim > &s10 , Chris@101: const Array< T , dim > &s11 , Chris@101: const Array< T , dim > &s12 , Chris@101: const Array< T , dim > &s13 , Chris@101: const Array< T , dim > &s14 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim, class Op > Chris@101: static void for_each15( Array< T , dim > &s1 , Chris@101: const Array< T , dim > &s2 , Chris@101: const Array< T , dim > &s3 , Chris@101: const Array< T , dim > &s4 , Chris@101: const Array< T , dim > &s5 , Chris@101: const Array< T , dim > &s6 , Chris@101: const Array< T , dim > &s7 , Chris@101: const Array< T , dim > &s8 , Chris@101: const Array< T , dim > &s9 , Chris@101: const Array< T , dim > &s10 , Chris@101: const Array< T , dim > &s11 , Chris@101: const Array< T , dim > &s12 , Chris@101: const Array< T , dim > &s13 , Chris@101: const Array< T , dim > &s14 , Chris@101: const Array< T , dim > &s15 , Op op ) Chris@16: { Chris@16: for( size_t i=0 ; i class Array, typename T, Chris@101: size_t dim> Chris@101: static typename norm_result_type< Array< T , dim > >::type norm_inf( const Array< T , dim > &s ) Chris@16: { Chris@101: BOOST_USING_STD_MAX(); Chris@101: using std::abs; Chris@101: typedef typename norm_result_type< Array< T , dim > >::type result_type; Chris@101: result_type init = static_cast< result_type >( 0 ); Chris@16: for( size_t i=0 ; i(abs(s[i])) ); Chris@16: return init; Chris@16: } Chris@16: Chris@16: }; Chris@16: Chris@16: } Chris@16: } Chris@16: } Chris@16: Chris@16: #endif // BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED