Chris@102
|
1 /*
|
Chris@102
|
2 [auto_generated]
|
Chris@102
|
3 boost/numeric/odeint/algebra/multi_array_algebra.hpp
|
Chris@102
|
4
|
Chris@102
|
5 [begin_description]
|
Chris@102
|
6 tba.
|
Chris@102
|
7 [end_description]
|
Chris@102
|
8
|
Chris@102
|
9 Copyright 2009-2012 Karsten Ahnert
|
Chris@102
|
10 Copyright 2009-2012 Mario Mulansky
|
Chris@102
|
11
|
Chris@102
|
12 Distributed under the Boost Software License, Version 1.0.
|
Chris@102
|
13 (See accompanying file LICENSE_1_0.txt or
|
Chris@102
|
14 copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@102
|
15 */
|
Chris@102
|
16
|
Chris@102
|
17
|
Chris@102
|
18 #ifndef BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED
|
Chris@102
|
19 #define BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED
|
Chris@102
|
20
|
Chris@102
|
21
|
Chris@102
|
22 #include <boost/numeric/odeint/algebra/detail/for_each.hpp>
|
Chris@102
|
23 #include <boost/numeric/odeint/algebra/detail/norm_inf.hpp>
|
Chris@102
|
24 #include <boost/numeric/odeint/algebra/norm_result_type.hpp>
|
Chris@102
|
25 #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
Chris@102
|
26
|
Chris@102
|
27
|
Chris@102
|
28 namespace boost {
|
Chris@102
|
29 namespace numeric {
|
Chris@102
|
30 namespace odeint {
|
Chris@102
|
31
|
Chris@102
|
32 // not ready
|
Chris@102
|
33 struct multi_array_algebra
|
Chris@102
|
34 {
|
Chris@102
|
35 template< class S1 , class Op >
|
Chris@102
|
36 static void for_each1( S1 &s1 , Op op )
|
Chris@102
|
37 {
|
Chris@102
|
38 detail::for_each1( s1.data() , s1.data() + s1.num_elements() , op );
|
Chris@102
|
39 }
|
Chris@102
|
40
|
Chris@102
|
41 template< class S1 , class S2 , class Op >
|
Chris@102
|
42 static void for_each2( S1 &s1 , S2 &s2 , Op op )
|
Chris@102
|
43 {
|
Chris@102
|
44 detail::for_each2( s1.data() , s1.data() + s1.num_elements() , s2.data() , op );
|
Chris@102
|
45 }
|
Chris@102
|
46
|
Chris@102
|
47 template< class S1 , class S2 , class S3 , class Op >
|
Chris@102
|
48 static void for_each3( S1 &s1 , S2 &s2 , S3 &s3 , Op op )
|
Chris@102
|
49 {
|
Chris@102
|
50 detail::for_each3( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , op );
|
Chris@102
|
51 }
|
Chris@102
|
52
|
Chris@102
|
53 template< class S1 , class S2 , class S3 , class S4 , class Op >
|
Chris@102
|
54 static void for_each4( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , Op op )
|
Chris@102
|
55 {
|
Chris@102
|
56 detail::for_each4( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , op );
|
Chris@102
|
57 }
|
Chris@102
|
58
|
Chris@102
|
59 template< class S1 , class S2 , class S3 , class S4 , class S5 , class Op >
|
Chris@102
|
60 static void for_each5( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , Op op )
|
Chris@102
|
61 {
|
Chris@102
|
62 detail::for_each5( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , op );
|
Chris@102
|
63 }
|
Chris@102
|
64
|
Chris@102
|
65 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 , class Op >
|
Chris@102
|
66 static void for_each6( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , Op op )
|
Chris@102
|
67 {
|
Chris@102
|
68 detail::for_each6( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , op );
|
Chris@102
|
69 }
|
Chris@102
|
70
|
Chris@102
|
71 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class Op >
|
Chris@102
|
72 static void for_each7( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , Op op )
|
Chris@102
|
73 {
|
Chris@102
|
74 detail::for_each7( s1.data() , s1.data() + s1.num_elements() , s2.data() , s3.data() , s4.data() , s5.data() , s6.data() , s7.data() , op );
|
Chris@102
|
75 }
|
Chris@102
|
76
|
Chris@102
|
77 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class Op >
|
Chris@102
|
78 static void for_each8( S1 &s1 , S2 &s2 , S3 &s3 , S4 &s4 , S5 &s5 , S6 &s6 , S7 &s7 , S8 &s8 , Op op )
|
Chris@102
|
79 {
|
Chris@102
|
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 );
|
Chris@102
|
81 }
|
Chris@102
|
82
|
Chris@102
|
83 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class Op >
|
Chris@102
|
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 )
|
Chris@102
|
85 {
|
Chris@102
|
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 );
|
Chris@102
|
87 }
|
Chris@102
|
88
|
Chris@102
|
89 template< class S1 , class S2 , class S3 , class S4 , class S5 , class S6 ,class S7 , class S8 , class S9 , class S10 , class Op >
|
Chris@102
|
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 )
|
Chris@102
|
91 {
|
Chris@102
|
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 );
|
Chris@102
|
93 }
|
Chris@102
|
94
|
Chris@102
|
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 >
|
Chris@102
|
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 )
|
Chris@102
|
97 {
|
Chris@102
|
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 );
|
Chris@102
|
99 }
|
Chris@102
|
100
|
Chris@102
|
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 >
|
Chris@102
|
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 )
|
Chris@102
|
103 {
|
Chris@102
|
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 );
|
Chris@102
|
105 }
|
Chris@102
|
106
|
Chris@102
|
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 >
|
Chris@102
|
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 )
|
Chris@102
|
109 {
|
Chris@102
|
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 );
|
Chris@102
|
111 }
|
Chris@102
|
112
|
Chris@102
|
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 >
|
Chris@102
|
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 )
|
Chris@102
|
115 {
|
Chris@102
|
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 );
|
Chris@102
|
117 }
|
Chris@102
|
118
|
Chris@102
|
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 >
|
Chris@102
|
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 )
|
Chris@102
|
121 {
|
Chris@102
|
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 );
|
Chris@102
|
123 }
|
Chris@102
|
124
|
Chris@102
|
125 template< typename S >
|
Chris@102
|
126 static typename norm_result_type<S>::type norm_inf( const S &s )
|
Chris@102
|
127 {
|
Chris@102
|
128 return detail::norm_inf( s.data() , s.data() + s.num_elements() , static_cast< typename norm_result_type<S>::type >( 0 ) );
|
Chris@102
|
129 }
|
Chris@102
|
130 };
|
Chris@102
|
131
|
Chris@102
|
132 // template< class T , size_t N >
|
Chris@102
|
133 // struct algebra_dispatcher< boost::array< T , N > >
|
Chris@102
|
134 // {
|
Chris@102
|
135 // typedef array_algebra algebra_type;
|
Chris@102
|
136 // };
|
Chris@102
|
137
|
Chris@102
|
138
|
Chris@102
|
139
|
Chris@102
|
140
|
Chris@102
|
141
|
Chris@102
|
142
|
Chris@102
|
143 } // namespace odeint
|
Chris@102
|
144 } // namespace numeric
|
Chris@102
|
145 } // namespace boost
|
Chris@102
|
146
|
Chris@102
|
147
|
Chris@102
|
148 #endif // BOOST_NUMERIC_ODEINT_ALGEBRA_MULTI_ARRAY_ALGEBRA_HPP_DEFINED
|