1 /* 2 [auto_generated] 3 boost/numeric/odeint/algebra/multi_array_algebra.hpp 4 5 [begin_description] 6 tba. 7 [end_description] 8 9 Copyright 2009-2012 Karsten Ahnert 10 Copyright 2009-2012 Mario Mulansky 11 12 Distributed under the Boost Software License, Version 1.0. 13 (See accompanying file LICENSE_1_0.txt or 14 copy at http://www.boost.org/LICENSE_1_0.txt) 15 */ 16 17 18 #ifndef BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED 19 #define BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED 20 21 22 #include <boost/multi_array.hpp> 23 24 #include <boost/numeric/odeint/algebra/detail/for_each.hpp> 25 #include <boost/numeric/odeint/algebra/detail/norm_inf.hpp> 26 #include <boost/numeric/odeint/algebra/norm_result_type.hpp> 27 #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp> 28 29 30 namespace boost { 31 namespace numeric { 32 namespace odeint { 33 34 // not ready 35 struct multi_array_algebra 36 { 37 template< class S1 , class Op > for_each1boost::numeric::odeint::multi_array_algebra38 static void for_each1( S1 &s1 , Op op ) 39 { 40 detail::for_each1( s1.data() , s1.data() + s1.num_elements() , op ); 41 } 42 43 template< class S1 , class S2 , class Op > for_each2boost::numeric::odeint::multi_array_algebra44 static void for_each2( S1 &s1 , S2 &s2 , Op op ) 45 { 46 detail::for_each2( s1.data() , s1.data() + s1.num_elements() , s2.data() , op ); 47 } 48 49 template< class S1 , class S2 , class S3 , class Op > for_each3boost::numeric::odeint::multi_array_algebra50 static void for_each3( S1 &s1 , S2 &s2 , S3 &s3 , Op op ) 51 { 52 detail::for_each3( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , op ); 53 } 54 55 template< class S1 , class S2 , class S3 , class S4 , class Op > for_each4boost::numeric::odeint::multi_array_algebra56 static void for_each4( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , Op op ) 57 { 58 detail::for_each4( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , op ); 59 } 60 61 template< class S1 , class S2 , class S3 , class S4 , class S5 , class Op > for_each5boost::numeric::odeint::multi_array_algebra62 static void for_each5( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , Op op ) 63 { 64 detail::for_each5( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , op ); 65 } 66 67 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 , class Op > for_each6boost::numeric::odeint::multi_array_algebra68 static void for_each6( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , Op op ) 69 { 70 detail::for_each6( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , op ); 71 } 72 73 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class Op > for_each7boost::numeric::odeint::multi_array_algebra74 static void for_each7( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , Op op ) 75 { 76 detail::for_each7( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , op ); 77 } 78 79 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class Op > for_each8boost::numeric::odeint::multi_array_algebra80 static void for_each8( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , Op op ) 81 { 82 detail::for_each8( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , op ); 83 } 84 85 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class Op > for_each9boost::numeric::odeint::multi_array_algebra86 static void for_each9( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , Op op ) 87 { 88 detail::for_each9( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , op ); 89 } 90 91 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class Op > for_each10boost::numeric::odeint::multi_array_algebra92 static void for_each10( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , S10 &s10 , Op op ) 93 { 94 detail::for_each10( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , s10.data() , op ); 95 } 96 97 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class S11 , class Op > for_each11boost::numeric::odeint::multi_array_algebra98 static void for_each11( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , S10 &s10 , S11 &s11 , Op op ) 99 { 100 detail::for_each11( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , s10.data() , s11.data() , op ); 101 } 102 103 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class S11 , class S12 , class Op > for_each12boost::numeric::odeint::multi_array_algebra104 static void for_each12( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , S10 &s10 , S11 &s11 , S12 &s12 , Op op ) 105 { 106 detail::for_each12( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , s10.data() , s11.data() , s12.data() , op ); 107 } 108 109 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class S11 , class S12 , class S13 , class Op > for_each13boost::numeric::odeint::multi_array_algebra110 static void for_each13( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , S10 &s10 , S11 &s11 , S12 &s12 , S13 &s13 , Op op ) 111 { 112 detail::for_each13( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , s10.data() , s11.data() , s12.data() , s13.data() , op ); 113 } 114 115 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class S11 , class S12 , class S13 , class S14 , class Op > for_each14boost::numeric::odeint::multi_array_algebra116 static void for_each14( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , S10 &s10 , S11 &s11 , S12 &s12 , S13 &s13 , S14 &s14 , Op op ) 117 { 118 detail::for_each14( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , s10.data() , s11.data() , s12.data() , s13.data() , s14.data() , op ); 119 } 120 121 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class S11 , class S12 , class S13 , class S14 , class S15 , class Op > for_each15boost::numeric::odeint::multi_array_algebra122 static void for_each15( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , S10 &s10 , S11 &s11 , S12 &s12 , S13 &s13 , S14 &s14 , S15 &s15 , Op op ) 123 { 124 detail::for_each15( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , s8.data() , s9.data() , s10.data() , s11.data() , s12.data() , s13.data() , s14.data() , s15.data() , op ); 125 } 126 127 template< typename S > norm_infboost::numeric::odeint::multi_array_algebra128 static typename norm_result_type<S>::type norm_inf( const S &s ) 129 { 130 return detail::norm_inf( s.data() , s.data() + s.num_elements() , static_cast< typename norm_result_type<S>::type >( 0 ) ); 131 } 132 }; 133 134 template< class T , size_t N > 135 struct algebra_dispatcher< boost::multi_array< T , N > > 136 { 137 typedef multi_array_algebra algebra_type; 138 }; 139 140 141 } // namespace odeint 142 } // namespace numeric 143 } // namespace boost 144 145 146 #endif // BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED 147