annotate DEPENDENCIES/generic/include/boost/numeric/odeint/algebra/array_algebra.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
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@101 6 Algebra for Arrays. Highly specialized for odeint. Const arguments are
Chris@101 7 introduce to work with odeint.
Chris@101 8 The Array algebra can be used for Array structures with two template
Chris@101 9 parameters:
Chris@101 10 Array<T, N>
Chris@16 11 [end_description]
Chris@16 12
Chris@101 13 Copyright 2011-2013 Mario Mulansky
Chris@101 14 Copyright 2011-2012 Karsten Ahnert
Chris@16 15
Chris@16 16 Distributed under the Boost Software License, Version 1.0.
Chris@16 17 (See accompanying file LICENSE_1_0.txt or
Chris@16 18 copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 19 */
Chris@16 20
Chris@16 21
Chris@16 22 #ifndef BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED
Chris@16 23 #define BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED
Chris@16 24
Chris@101 25 #include <algorithm>
Chris@16 26 #include <boost/array.hpp>
Chris@16 27
Chris@101 28 #include <boost/numeric/odeint/algebra/norm_result_type.hpp>
Chris@101 29
Chris@16 30 namespace boost {
Chris@16 31 namespace numeric {
Chris@16 32 namespace odeint {
Chris@16 33
Chris@16 34 struct array_algebra
Chris@16 35 {
Chris@101 36 //template< typename T , size_t dim , class Op >
Chris@101 37 template < template < typename, size_t > class Array, typename T,
Chris@101 38 size_t dim, class Op >
Chris@101 39 static void for_each1( Array< T, dim > &s1, Op op )
Chris@16 40 {
Chris@16 41 for( size_t i=0 ; i<dim ; ++i )
Chris@16 42 op( s1[i] );
Chris@16 43 }
Chris@16 44
Chris@101 45 template < template < typename, size_t > class Array, typename T,
Chris@101 46 size_t dim, class Op >
Chris@101 47 static void for_each2( Array< T, dim > &s1, const Array< T, dim > &s2,
Chris@101 48 Op op )
Chris@16 49 {
Chris@16 50 for( size_t i=0 ; i<dim ; ++i )
Chris@16 51 op( s1[i] , s2[i] );
Chris@16 52 }
Chris@16 53
Chris@101 54 template < template < typename, size_t > class Array, typename T,
Chris@101 55 size_t dim, class Op >
Chris@101 56 static void for_each3( Array< T , dim > &s1 ,
Chris@101 57 const Array< T , dim > &s2 ,
Chris@101 58 const 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 /* different const signature - required for the scale_sum_swap2 operation */
Chris@101 65 template < template < typename, size_t > class Array, typename T,
Chris@101 66 size_t dim, class Op >
Chris@101 67 static void for_each3( Array< T , dim > &s1 ,
Chris@101 68 Array< T , dim > &s2 ,
Chris@101 69 const Array< T , dim > &s3 , Op op )
Chris@16 70 {
Chris@16 71 for( size_t i=0 ; i<dim ; ++i )
Chris@16 72 op( s1[i] , s2[i] , s3[i] );
Chris@16 73 }
Chris@16 74
Chris@101 75 template < template < typename, size_t > class Array, typename T,
Chris@101 76 size_t dim, class Op >
Chris@101 77 static void for_each4( Array< T , dim > &s1 ,
Chris@101 78 const Array< T , dim > &s2 ,
Chris@101 79 const Array< T , dim > &s3 ,
Chris@101 80 const Array< T , dim > &s4 , Op op )
Chris@16 81 {
Chris@16 82 for( size_t i=0 ; i<dim ; ++i )
Chris@16 83 op( s1[i] , s2[i] , s3[i] , s4[i] );
Chris@16 84 }
Chris@16 85
Chris@101 86 template < template < typename, size_t > class Array, typename T,
Chris@101 87 size_t dim, class Op >
Chris@101 88 static void for_each5( Array< T , dim > &s1 ,
Chris@101 89 const Array< T , dim > &s2 ,
Chris@101 90 const Array< T , dim > &s3 ,
Chris@101 91 const Array< T , dim > &s4 ,
Chris@101 92 const Array< T , dim > &s5 , Op op )
Chris@16 93 {
Chris@16 94 for( size_t i=0 ; i<dim ; ++i )
Chris@16 95 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] );
Chris@16 96 }
Chris@16 97
Chris@101 98 template < template < typename, size_t > class Array, typename T,
Chris@101 99 size_t dim, class Op >
Chris@101 100 static void for_each6( Array< T , dim > &s1 ,
Chris@101 101 const Array< T , dim > &s2 ,
Chris@101 102 const Array< T , dim > &s3 ,
Chris@101 103 const Array< T , dim > &s4 ,
Chris@101 104 const Array< T , dim > &s5 ,
Chris@101 105 const Array< T , dim > &s6 , Op op )
Chris@16 106 {
Chris@16 107 for( size_t i=0 ; i<dim ; ++i )
Chris@16 108 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] );
Chris@16 109 }
Chris@16 110
Chris@101 111 template < template < typename, size_t > class Array, typename T,
Chris@101 112 size_t dim, class Op >
Chris@101 113 static void for_each7( Array< T , dim > &s1 ,
Chris@101 114 const Array< T , dim > &s2 ,
Chris@101 115 const Array< T , dim > &s3 ,
Chris@101 116 const Array< T , dim > &s4 ,
Chris@101 117 const Array< T , dim > &s5 ,
Chris@101 118 const Array< T , dim > &s6 ,
Chris@101 119 const Array< T , dim > &s7 , Op op )
Chris@16 120 {
Chris@16 121 for( size_t i=0 ; i<dim ; ++i )
Chris@16 122 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] );
Chris@16 123 }
Chris@16 124
Chris@101 125 template < template < typename, size_t > class Array, typename T,
Chris@101 126 size_t dim, class Op >
Chris@101 127 static void for_each8( Array< T , dim > &s1 ,
Chris@101 128 const Array< T , dim > &s2 ,
Chris@101 129 const Array< T , dim > &s3 ,
Chris@101 130 const Array< T , dim > &s4 ,
Chris@101 131 const Array< T , dim > &s5 ,
Chris@101 132 const Array< T , dim > &s6 ,
Chris@101 133 const Array< T , dim > &s7 ,
Chris@101 134 const Array< T , dim > &s8 , Op op )
Chris@16 135 {
Chris@16 136 for( size_t i=0 ; i<dim ; ++i )
Chris@16 137 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] );
Chris@16 138 }
Chris@16 139
Chris@101 140 template < template < typename, size_t > class Array, typename T,
Chris@101 141 size_t dim, class Op >
Chris@101 142 static void for_each9( Array< T , dim > &s1 ,
Chris@101 143 const Array< T , dim > &s2 ,
Chris@101 144 const Array< T , dim > &s3 ,
Chris@101 145 const Array< T , dim > &s4 ,
Chris@101 146 const Array< T , dim > &s5 ,
Chris@101 147 const Array< T , dim > &s6 ,
Chris@101 148 const Array< T , dim > &s7 ,
Chris@101 149 const Array< T , dim > &s8 ,
Chris@101 150 const Array< T , dim > &s9 , Op op )
Chris@16 151 {
Chris@16 152 for( size_t i=0 ; i<dim ; ++i )
Chris@16 153 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] );
Chris@16 154 }
Chris@16 155
Chris@101 156 template < template < typename, size_t > class Array, typename T,
Chris@101 157 size_t dim, class Op >
Chris@101 158 static void for_each10( Array< T , dim > &s1 ,
Chris@101 159 const Array< T , dim > &s2 ,
Chris@101 160 const Array< T , dim > &s3 ,
Chris@101 161 const Array< T , dim > &s4 ,
Chris@101 162 const Array< T , dim > &s5 ,
Chris@101 163 const Array< T , dim > &s6 ,
Chris@101 164 const Array< T , dim > &s7 ,
Chris@101 165 const Array< T , dim > &s8 ,
Chris@101 166 const Array< T , dim > &s9 ,
Chris@101 167 const Array< T , dim > &s10 , Op op )
Chris@16 168 {
Chris@16 169 for( size_t i=0 ; i<dim ; ++i )
Chris@16 170 op( s1[i] , s2[i] , s3[i] , s4[i] , s5[i] , s6[i] , s7[i] , s8[i] , s9[i] , s10[i] );
Chris@16 171 }
Chris@16 172
Chris@101 173 template < template < typename, size_t > class Array, typename T,
Chris@101 174 size_t dim, class Op >
Chris@101 175 static void for_each11( Array< T , dim > &s1 ,
Chris@101 176 const Array< T , dim > &s2 ,
Chris@101 177 const Array< T , dim > &s3 ,
Chris@101 178 const Array< T , dim > &s4 ,
Chris@101 179 const Array< T , dim > &s5 ,
Chris@101 180 const Array< T , dim > &s6 ,
Chris@101 181 const Array< T , dim > &s7 ,
Chris@101 182 const Array< T , dim > &s8 ,
Chris@101 183 const Array< T , dim > &s9 ,
Chris@101 184 const Array< T , dim > &s10 ,
Chris@101 185 const Array< T , dim > &s11 , Op op )
Chris@16 186 {
Chris@16 187 for( size_t i=0 ; i<dim ; ++i )
Chris@16 188 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 189 }
Chris@16 190
Chris@101 191 template < template < typename, size_t > class Array, typename T,
Chris@101 192 size_t dim, class Op >
Chris@101 193 static void for_each12( Array< T , dim > &s1 ,
Chris@101 194 const Array< T , dim > &s2 ,
Chris@101 195 const Array< T , dim > &s3 ,
Chris@101 196 const Array< T , dim > &s4 ,
Chris@101 197 const Array< T , dim > &s5 ,
Chris@101 198 const Array< T , dim > &s6 ,
Chris@101 199 const Array< T , dim > &s7 ,
Chris@101 200 const Array< T , dim > &s8 ,
Chris@101 201 const Array< T , dim > &s9 ,
Chris@101 202 const Array< T , dim > &s10 ,
Chris@101 203 const Array< T , dim > &s11 ,
Chris@101 204 const Array< T , dim > &s12 , Op op )
Chris@16 205 {
Chris@16 206 for( size_t i=0 ; i<dim ; ++i )
Chris@16 207 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 208 }
Chris@16 209
Chris@101 210 template < template < typename, size_t > class Array, typename T,
Chris@101 211 size_t dim, class Op >
Chris@101 212 static void for_each13( Array< T , dim > &s1 ,
Chris@101 213 const Array< T , dim > &s2 ,
Chris@101 214 const Array< T , dim > &s3 ,
Chris@101 215 const Array< T , dim > &s4 ,
Chris@101 216 const Array< T , dim > &s5 ,
Chris@101 217 const Array< T , dim > &s6 ,
Chris@101 218 const Array< T , dim > &s7 ,
Chris@101 219 const Array< T , dim > &s8 ,
Chris@101 220 const Array< T , dim > &s9 ,
Chris@101 221 const Array< T , dim > &s10 ,
Chris@101 222 const Array< T , dim > &s11 ,
Chris@101 223 const Array< T , dim > &s12 ,
Chris@101 224 const Array< T , dim > &s13 , Op op )
Chris@16 225 {
Chris@16 226 for( size_t i=0 ; i<dim ; ++i )
Chris@16 227 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 228 }
Chris@16 229
Chris@101 230 template < template < typename, size_t > class Array, typename T,
Chris@101 231 size_t dim, class Op >
Chris@101 232 static void for_each14( Array< T , dim > &s1 ,
Chris@101 233 const Array< T , dim > &s2 ,
Chris@101 234 const Array< T , dim > &s3 ,
Chris@101 235 const Array< T , dim > &s4 ,
Chris@101 236 const Array< T , dim > &s5 ,
Chris@101 237 const Array< T , dim > &s6 ,
Chris@101 238 const Array< T , dim > &s7 ,
Chris@101 239 const Array< T , dim > &s8 ,
Chris@101 240 const Array< T , dim > &s9 ,
Chris@101 241 const Array< T , dim > &s10 ,
Chris@101 242 const Array< T , dim > &s11 ,
Chris@101 243 const Array< T , dim > &s12 ,
Chris@101 244 const Array< T , dim > &s13 ,
Chris@101 245 const Array< T , dim > &s14 , Op op )
Chris@16 246 {
Chris@16 247 for( size_t i=0 ; i<dim ; ++i )
Chris@16 248 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 249 }
Chris@16 250
Chris@101 251 template < template < typename, size_t > class Array, typename T,
Chris@101 252 size_t dim, class Op >
Chris@101 253 static void for_each15( Array< T , dim > &s1 ,
Chris@101 254 const Array< T , dim > &s2 ,
Chris@101 255 const Array< T , dim > &s3 ,
Chris@101 256 const Array< T , dim > &s4 ,
Chris@101 257 const Array< T , dim > &s5 ,
Chris@101 258 const Array< T , dim > &s6 ,
Chris@101 259 const Array< T , dim > &s7 ,
Chris@101 260 const Array< T , dim > &s8 ,
Chris@101 261 const Array< T , dim > &s9 ,
Chris@101 262 const Array< T , dim > &s10 ,
Chris@101 263 const Array< T , dim > &s11 ,
Chris@101 264 const Array< T , dim > &s12 ,
Chris@101 265 const Array< T , dim > &s13 ,
Chris@101 266 const Array< T , dim > &s14 ,
Chris@101 267 const Array< T , dim > &s15 , Op op )
Chris@16 268 {
Chris@16 269 for( size_t i=0 ; i<dim ; ++i )
Chris@16 270 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 271 }
Chris@16 272
Chris@16 273
Chris@101 274 template < template < typename, size_t > class Array, typename T,
Chris@101 275 size_t dim>
Chris@101 276 static typename norm_result_type< Array< T , dim > >::type norm_inf( const Array< T , dim > &s )
Chris@16 277 {
Chris@101 278 BOOST_USING_STD_MAX();
Chris@101 279 using std::abs;
Chris@101 280 typedef typename norm_result_type< Array< T , dim > >::type result_type;
Chris@101 281 result_type init = static_cast< result_type >( 0 );
Chris@16 282 for( size_t i=0 ; i<dim ; ++i )
Chris@101 283 init = max BOOST_PREVENT_MACRO_SUBSTITUTION ( init , static_cast< result_type >(abs(s[i])) );
Chris@16 284 return init;
Chris@16 285 }
Chris@16 286
Chris@16 287 };
Chris@16 288
Chris@16 289 }
Chris@16 290 }
Chris@16 291 }
Chris@16 292
Chris@16 293 #endif // BOOST_NUMERIC_ODEINT_ALGEBRA_ARRAY_ALGEBRA_HPP_INCLUDED