]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 > | |
36 | 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 > | |
42 | 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 > | |
48 | 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 > | |
54 | 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 > | |
60 | 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 > | |
66 | 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 > | |
72 | 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 > | |
78 | 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 > | |
84 | 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 > | |
90 | 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 > | |
96 | 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 > | |
102 | 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 > | |
108 | 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 > | |
114 | 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 > | |
120 | 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 > | |
126 | 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 |