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/numeric/odeint/algebra/detail/for_each.hpp> 23 #include <boost/numeric/odeint/algebra/detail/norm_inf.hpp> 24 #include <boost/numeric/odeint/algebra/norm_result_type.hpp> 25 #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp> 26 27 28 namespace boost { 29 namespace numeric { 30 namespace odeint { 31 32 // not ready 33 struct multi_array_algebra 34 { 35 template< class S1 , class Op > for_each1boost::numeric::odeint::multi_array_algebra36 static void for_each1( S1 &s1 , Op op ) 37 { 38 detail::for_each1( s1.data() , s1.data() + s1.num_elements() , op ); 39 } 40 41 template< class S1 , class S2 , class Op > for_each2boost::numeric::odeint::multi_array_algebra42 static void for_each2( S1 &s1 , S2 &s2 , Op op ) 43 { 44 detail::for_each2( s1.data() , s1.data() + s1.num_elements() , s2.data() , op ); 45 } 46 47 template< class S1 , class S2 , class S3 , class Op > for_each3boost::numeric::odeint::multi_array_algebra48 static void for_each3( S1 &s1 , S2 &s2 , S3 &s3 , Op op ) 49 { 50 detail::for_each3( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , op ); 51 } 52 53 template< class S1 , class S2 , class S3 , class S4 , class Op > for_each4boost::numeric::odeint::multi_array_algebra54 static void for_each4( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , Op op ) 55 { 56 detail::for_each4( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , op ); 57 } 58 59 template< class S1 , class S2 , class S3 , class S4 , class S5 , class Op > for_each5boost::numeric::odeint::multi_array_algebra60 static void for_each5( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , Op op ) 61 { 62 detail::for_each5( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , op ); 63 } 64 65 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 , class Op > for_each6boost::numeric::odeint::multi_array_algebra66 static void for_each6( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , Op op ) 67 { 68 detail::for_each6( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , op ); 69 } 70 71 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class Op > for_each7boost::numeric::odeint::multi_array_algebra72 static void for_each7( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , Op op ) 73 { 74 detail::for_each7( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , op ); 75 } 76 77 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_algebra78 static void for_each8( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , Op op ) 79 { 80 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 ); 81 } 82 83 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_algebra84 static void for_each9( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , S9 &s9 , Op op ) 85 { 86 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 ); 87 } 88 89 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_algebra90 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 ) 91 { 92 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 ); 93 } 94 95 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_algebra96 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 ) 97 { 98 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 ); 99 } 100 101 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_algebra102 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 ) 103 { 104 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 ); 105 } 106 107 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_algebra108 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 ) 109 { 110 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 ); 111 } 112 113 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_algebra114 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 ) 115 { 116 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 ); 117 } 118 119 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_algebra120 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 ) 121 { 122 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 ); 123 } 124 125 template< typename S > norm_infboost::numeric::odeint::multi_array_algebra126 static typename norm_result_type<S>::type norm_inf( const S &s ) 127 { 128 return detail::norm_inf( s.data() , s.data() + s.num_elements() , static_cast< typename norm_result_type<S>::type >( 0 ) ); 129 } 130 }; 131 132 // template< class T , size_t N > 133 // struct algebra_dispatcher< boost::array< T , N > > 134 // { 135 // typedef array_algebra algebra_type; 136 // }; 137 138 139 140 141 142 143 } // namespace odeint 144 } // namespace numeric 145 } // namespace boost 146 147 148 #endif // BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED 149