annotate DEPENDENCIES/generic/include/boost/numeric/odeint/algebra/array_algebra.hpp @ 76:e58ce2aebd18 emscripten

Merge from default branch
author Chris Cannam
date Thu, 30 Oct 2014 13:25:25 +0000
parents 2665513ce2d3
children c530137014c0
rev   line source
Chris@16 1 /*
Chris@16 2 [auto_generated]
Chris@16 3 boost/numeric/odeint/algebra/array_algebra.hpp
Chris@16 4
Chris@16 5 [begin_description]
Chris@16 6 Algebra for boost::array. Highly specialized for odeint. Const arguments are introduce to work with odeint.
Chris@16 7 [end_description]
Chris@16 8
Chris@16 9 Copyright 2009-2011 Karsten Ahnert
Chris@16 10 Copyright 2009-2011 Mario Mulansky
Chris@16 11
Chris@16 12 Distributed under the Boost Software License, Version 1.0.
Chris@16 13 (See accompanying file LICENSE_1_0.txt or
Chris@16 14 copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 15 */
Chris@16 16
Chris@16 17
Chris@16 18 #ifndef BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED
Chris@16 19 #define BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED
Chris@16 20
Chris@16 21 #include <boost/array.hpp>
Chris@16 22
Chris@16 23 namespace boost {
Chris@16 24 namespace numeric {
Chris@16 25 namespace odeint {
Chris@16 26
Chris@16 27 struct array_algebra
Chris@16 28 {
Chris@16 29 template< typename T , size_t dim , class Op >
Chris@16 30 static void for_each1( boost::array< T , dim > &s1 , Op op )
Chris@16 31 {
Chris@16 32 for( size_t i=0 ; i<dim ; ++i )
Chris@16 33 op( s1[i] );
Chris@16 34 }
Chris@16 35
Chris@16 36
Chris@16 37 template< typename T1 , typename T2 , size_t dim , class Op >
Chris@16 38 static void for_each2( boost::array< T1 , dim > &s1 ,
Chris@16 39 const boost::array< T2 , dim > &s2 , Op op )
Chris@16 40 {
Chris@16 41 for( size_t i=0 ; i<dim ; ++i )
Chris@16 42 op( s1[i] , s2[i] );
Chris@16 43 }
Chris@16 44
Chris@16 45 template< typename T , size_t dim , class Op >
Chris@16 46 static void for_each3( boost::array< T , dim > &s1 ,
Chris@16 47 const boost::array< T , dim > &s2 ,
Chris@16 48 const boost::array< T , dim > &s3 , Op op )
Chris@16 49 {
Chris@16 50 for( size_t i=0 ; i<dim ; ++i )
Chris@16 51 op( s1[i] , s2[i] , s3[i] );
Chris@16 52 }
Chris@16 53
Chris@16 54 /* different const signature - required for the scale_sum_swap2 operation */
Chris@16 55 template< typename T , size_t dim , class Op >
Chris@16 56 static void for_each3( boost::array< T , dim > &s1 ,
Chris@16 57 boost::array< T , dim > &s2 ,
Chris@16 58 const boost::array< T , dim > &s3 , Op op )
Chris@16 59 {
Chris@16 60 for( size_t i=0 ; i<dim ; ++i )
Chris@16 61 op( s1[i] , s2[i] , s3[i] );
Chris@16 62 }
Chris@16 63
Chris@16 64 template< typename T , size_t dim , class Op >
Chris@16 65 static void for_each4( boost::array< T , dim > &s1 ,
Chris@16 66 const boost::array< T , dim > &s2 ,
Chris@16 67 const boost::array< T , dim > &s3 ,
Chris@16 68 const boost::array< T , dim > &s4 , Op op )
Chris@16 69 {
Chris@16 70 for( size_t i=0 ; i<dim ; ++i )
Chris@16 71 op( s1[i] , s2[i] , s3[i] , s4[i] );
Chris@16 72 }
Chris@16 73
Chris@16 74 template< typename T , size_t dim , class Op >
Chris@16 75 static void for_each5( boost::array< T , dim > &s1 ,
Chris@16 76 const boost::array< T , dim > &s2 ,
Chris@16 77 const boost::array< T , dim > &s3 ,
Chris@16 78 const boost::array< T , dim > &s4 ,
Chris@16 79 const boost::array< T , dim > &s5 , Op op )
Chris@16 80 {
Chris@16 81 for( size_t i=0 ; i<dim ; ++i )
Chris@16 82 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] );
Chris@16 83 }
Chris@16 84
Chris@16 85 template< typename T , size_t dim , class Op >
Chris@16 86 static void for_each6( boost::array< T , dim > &s1 ,
Chris@16 87 const boost::array< T , dim > &s2 ,
Chris@16 88 const boost::array< T , dim > &s3 ,
Chris@16 89 const boost::array< T , dim > &s4 ,
Chris@16 90 const boost::array< T , dim > &s5 ,
Chris@16 91 const boost::array< T , dim > &s6 , Op op )
Chris@16 92 {
Chris@16 93 for( size_t i=0 ; i<dim ; ++i )
Chris@16 94 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] );
Chris@16 95 }
Chris@16 96
Chris@16 97 template< typename T , size_t dim , class Op >
Chris@16 98 static void for_each7( boost::array< T , dim > &s1 ,
Chris@16 99 const boost::array< T , dim > &s2 ,
Chris@16 100 const boost::array< T , dim > &s3 ,
Chris@16 101 const boost::array< T , dim > &s4 ,
Chris@16 102 const boost::array< T , dim > &s5 ,
Chris@16 103 const boost::array< T , dim > &s6 ,
Chris@16 104 const boost::array< T , dim > &s7 , Op op )
Chris@16 105 {
Chris@16 106 for( size_t i=0 ; i<dim ; ++i )
Chris@16 107 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] );
Chris@16 108 }
Chris@16 109
Chris@16 110 template< typename T , size_t dim , class Op >
Chris@16 111 static void for_each8( boost::array< T , dim > &s1 ,
Chris@16 112 const boost::array< T , dim > &s2 ,
Chris@16 113 const boost::array< T , dim > &s3 ,
Chris@16 114 const boost::array< T , dim > &s4 ,
Chris@16 115 const boost::array< T , dim > &s5 ,
Chris@16 116 const boost::array< T , dim > &s6 ,
Chris@16 117 const boost::array< T , dim > &s7 ,
Chris@16 118 const boost::array< T , dim > &s8 , Op op )
Chris@16 119 {
Chris@16 120 for( size_t i=0 ; i<dim ; ++i )
Chris@16 121 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] );
Chris@16 122 }
Chris@16 123
Chris@16 124 template< typename T , size_t dim , class Op >
Chris@16 125 static void for_each9( boost::array< T , dim > &s1 ,
Chris@16 126 const boost::array< T , dim > &s2 ,
Chris@16 127 const boost::array< T , dim > &s3 ,
Chris@16 128 const boost::array< T , dim > &s4 ,
Chris@16 129 const boost::array< T , dim > &s5 ,
Chris@16 130 const boost::array< T , dim > &s6 ,
Chris@16 131 const boost::array< T , dim > &s7 ,
Chris@16 132 const boost::array< T , dim > &s8 ,
Chris@16 133 const boost::array< T , dim > &s9 , Op op )
Chris@16 134 {
Chris@16 135 for( size_t i=0 ; i<dim ; ++i )
Chris@16 136 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] );
Chris@16 137 }
Chris@16 138
Chris@16 139 template< typename T , size_t dim , class Op >
Chris@16 140 static void for_each10( boost::array< T , dim > &s1 ,
Chris@16 141 const boost::array< T , dim > &s2 ,
Chris@16 142 const boost::array< T , dim > &s3 ,
Chris@16 143 const boost::array< T , dim > &s4 ,
Chris@16 144 const boost::array< T , dim > &s5 ,
Chris@16 145 const boost::array< T , dim > &s6 ,
Chris@16 146 const boost::array< T , dim > &s7 ,
Chris@16 147 const boost::array< T , dim > &s8 ,
Chris@16 148 const boost::array< T , dim > &s9 ,
Chris@16 149 const boost::array< T , dim > &s10 , Op op )
Chris@16 150 {
Chris@16 151 for( size_t i=0 ; i<dim ; ++i )
Chris@16 152 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] );
Chris@16 153 }
Chris@16 154
Chris@16 155 template< typename T , size_t dim , class Op >
Chris@16 156 static void for_each11( boost::array< T , dim > &s1 ,
Chris@16 157 const boost::array< T , dim > &s2 ,
Chris@16 158 const boost::array< T , dim > &s3 ,
Chris@16 159 const boost::array< T , dim > &s4 ,
Chris@16 160 const boost::array< T , dim > &s5 ,
Chris@16 161 const boost::array< T , dim > &s6 ,
Chris@16 162 const boost::array< T , dim > &s7 ,
Chris@16 163 const boost::array< T , dim > &s8 ,
Chris@16 164 const boost::array< T , dim > &s9 ,
Chris@16 165 const boost::array< T , dim > &s10 ,
Chris@16 166 const boost::array< T , dim > &s11 , Op op )
Chris@16 167 {
Chris@16 168 for( size_t i=0 ; i<dim ; ++i )
Chris@16 169 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] , s11[i] );
Chris@16 170 }
Chris@16 171
Chris@16 172 template< typename T , size_t dim , class Op >
Chris@16 173 static void for_each12( boost::array< T , dim > &s1 ,
Chris@16 174 const boost::array< T , dim > &s2 ,
Chris@16 175 const boost::array< T , dim > &s3 ,
Chris@16 176 const boost::array< T , dim > &s4 ,
Chris@16 177 const boost::array< T , dim > &s5 ,
Chris@16 178 const boost::array< T , dim > &s6 ,
Chris@16 179 const boost::array< T , dim > &s7 ,
Chris@16 180 const boost::array< T , dim > &s8 ,
Chris@16 181 const boost::array< T , dim > &s9 ,
Chris@16 182 const boost::array< T , dim > &s10 ,
Chris@16 183 const boost::array< T , dim > &s11 ,
Chris@16 184 const boost::array< T , dim > &s12 , Op op )
Chris@16 185 {
Chris@16 186 for( size_t i=0 ; i<dim ; ++i )
Chris@16 187 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] , s11[i] , s12[i] );
Chris@16 188 }
Chris@16 189
Chris@16 190 template< typename T , size_t dim , class Op >
Chris@16 191 static void for_each13( boost::array< T , dim > &s1 ,
Chris@16 192 const boost::array< T , dim > &s2 ,
Chris@16 193 const boost::array< T , dim > &s3 ,
Chris@16 194 const boost::array< T , dim > &s4 ,
Chris@16 195 const boost::array< T , dim > &s5 ,
Chris@16 196 const boost::array< T , dim > &s6 ,
Chris@16 197 const boost::array< T , dim > &s7 ,
Chris@16 198 const boost::array< T , dim > &s8 ,
Chris@16 199 const boost::array< T , dim > &s9 ,
Chris@16 200 const boost::array< T , dim > &s10 ,
Chris@16 201 const boost::array< T , dim > &s11 ,
Chris@16 202 const boost::array< T , dim > &s12 ,
Chris@16 203 const boost::array< T , dim > &s13 , Op op )
Chris@16 204 {
Chris@16 205 for( size_t i=0 ; i<dim ; ++i )
Chris@16 206 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] , s11[i] , s12[i] , s13[i] );
Chris@16 207 }
Chris@16 208
Chris@16 209 template< typename T , size_t dim , class Op >
Chris@16 210 static void for_each14( boost::array< T , dim > &s1 ,
Chris@16 211 const boost::array< T , dim > &s2 ,
Chris@16 212 const boost::array< T , dim > &s3 ,
Chris@16 213 const boost::array< T , dim > &s4 ,
Chris@16 214 const boost::array< T , dim > &s5 ,
Chris@16 215 const boost::array< T , dim > &s6 ,
Chris@16 216 const boost::array< T , dim > &s7 ,
Chris@16 217 const boost::array< T , dim > &s8 ,
Chris@16 218 const boost::array< T , dim > &s9 ,
Chris@16 219 const boost::array< T , dim > &s10 ,
Chris@16 220 const boost::array< T , dim > &s11 ,
Chris@16 221 const boost::array< T , dim > &s12 ,
Chris@16 222 const boost::array< T , dim > &s13 ,
Chris@16 223 const boost::array< T , dim > &s14 , Op op )
Chris@16 224 {
Chris@16 225 for( size_t i=0 ; i<dim ; ++i )
Chris@16 226 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] , s11[i] , s12[i] , s13[i] , s14[i] );
Chris@16 227 }
Chris@16 228
Chris@16 229 template< typename T , size_t dim , class Op >
Chris@16 230 static void for_each15( boost::array< T , dim > &s1 ,
Chris@16 231 const boost::array< T , dim > &s2 ,
Chris@16 232 const boost::array< T , dim > &s3 ,
Chris@16 233 const boost::array< T , dim > &s4 ,
Chris@16 234 const boost::array< T , dim > &s5 ,
Chris@16 235 const boost::array< T , dim > &s6 ,
Chris@16 236 const boost::array< T , dim > &s7 ,
Chris@16 237 const boost::array< T , dim > &s8 ,
Chris@16 238 const boost::array< T , dim > &s9 ,
Chris@16 239 const boost::array< T , dim > &s10 ,
Chris@16 240 const boost::array< T , dim > &s11 ,
Chris@16 241 const boost::array< T , dim > &s12 ,
Chris@16 242 const boost::array< T , dim > &s13 ,
Chris@16 243 const boost::array< T , dim > &s14 ,
Chris@16 244 const boost::array< T , dim > &s15 , Op op )
Chris@16 245 {
Chris@16 246 for( size_t i=0 ; i<dim ; ++i )
Chris@16 247 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] , s11[i] , s12[i] , s13[i] , s14[i] , s15[i] );
Chris@16 248 }
Chris@16 249
Chris@16 250
Chris@16 251 template< class Value , class T , size_t dim , class Red >
Chris@16 252 static Value reduce( const boost::array< T , dim > &s , Red red , Value init)
Chris@16 253 {
Chris@16 254 for( size_t i=0 ; i<dim ; ++i )
Chris@16 255 init = red( init , s[i] );
Chris@16 256 return init;
Chris@16 257 }
Chris@16 258
Chris@16 259 };
Chris@16 260
Chris@16 261 }
Chris@16 262 }
Chris@16 263 }
Chris@16 264
Chris@16 265 #endif // BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED