• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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