boost.cxx 0.0.2 → 1.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +29 -2
  2. package/boost/cast.hpp +20 -0
  3. package/boost/numeric/conversion/bounds.hpp +24 -0
  4. package/boost/numeric/conversion/cast.hpp +61 -0
  5. package/boost/numeric/conversion/conversion_traits.hpp +32 -0
  6. package/boost/numeric/conversion/converter.hpp +68 -0
  7. package/boost/numeric/conversion/converter_policies.hpp +194 -0
  8. package/boost/numeric/conversion/detail/bounds.hpp +58 -0
  9. package/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
  10. package/boost/numeric/conversion/detail/converter.hpp +593 -0
  11. package/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
  12. package/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
  13. package/boost/numeric/conversion/detail/meta.hpp +120 -0
  14. package/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
  15. package/boost/numeric/conversion/detail/old_numeric_cast.hpp +308 -0
  16. package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
  17. package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
  18. package/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
  19. package/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
  20. package/boost/numeric/conversion/int_float_mixture.hpp +30 -0
  21. package/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
  22. package/boost/numeric/conversion/is_subranged.hpp +27 -0
  23. package/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
  24. package/boost/numeric/conversion/sign_mixture.hpp +30 -0
  25. package/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
  26. package/boost/numeric/conversion/udt_builtin_mixture.hpp +28 -0
  27. package/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
  28. package/boost/numeric/interval/arith.hpp +305 -0
  29. package/boost/numeric/interval/arith2.hpp +304 -0
  30. package/boost/numeric/interval/arith3.hpp +69 -0
  31. package/boost/numeric/interval/checking.hpp +130 -0
  32. package/boost/numeric/interval/compare/certain.hpp +113 -0
  33. package/boost/numeric/interval/compare/explicit.hpp +248 -0
  34. package/boost/numeric/interval/compare/lexicographic.hpp +122 -0
  35. package/boost/numeric/interval/compare/possible.hpp +113 -0
  36. package/boost/numeric/interval/compare/set.hpp +101 -0
  37. package/boost/numeric/interval/compare/tribool.hpp +138 -0
  38. package/boost/numeric/interval/compare.hpp +19 -0
  39. package/boost/numeric/interval/constants.hpp +85 -0
  40. package/boost/numeric/interval/detail/alpha_rounding_control.hpp +113 -0
  41. package/boost/numeric/interval/detail/bcc_rounding_control.hpp +57 -0
  42. package/boost/numeric/interval/detail/bugs.hpp +48 -0
  43. package/boost/numeric/interval/detail/c99_rounding_control.hpp +50 -0
  44. package/boost/numeric/interval/detail/c99sub_rounding_control.hpp +43 -0
  45. package/boost/numeric/interval/detail/division.hpp +194 -0
  46. package/boost/numeric/interval/detail/ia64_rounding_control.hpp +83 -0
  47. package/boost/numeric/interval/detail/interval_prototype.hpp +41 -0
  48. package/boost/numeric/interval/detail/msvc_rounding_control.hpp +113 -0
  49. package/boost/numeric/interval/detail/ppc_rounding_control.hpp +99 -0
  50. package/boost/numeric/interval/detail/sparc_rounding_control.hpp +112 -0
  51. package/boost/numeric/interval/detail/test_input.hpp +76 -0
  52. package/boost/numeric/interval/detail/x86_rounding_control.hpp +108 -0
  53. package/boost/numeric/interval/detail/x86gcc_rounding_control.hpp +51 -0
  54. package/boost/numeric/interval/ext/integer.hpp +70 -0
  55. package/boost/numeric/interval/ext/x86_fast_rounding_control.hpp +70 -0
  56. package/boost/numeric/interval/hw_rounding.hpp +73 -0
  57. package/boost/numeric/interval/interval.hpp +450 -0
  58. package/boost/numeric/interval/io.hpp +41 -0
  59. package/boost/numeric/interval/limits.hpp +49 -0
  60. package/boost/numeric/interval/policies.hpp +75 -0
  61. package/boost/numeric/interval/rounded_arith.hpp +120 -0
  62. package/boost/numeric/interval/rounded_transc.hpp +140 -0
  63. package/boost/numeric/interval/rounding.hpp +101 -0
  64. package/boost/numeric/interval/transc.hpp +232 -0
  65. package/boost/numeric/interval/utility.hpp +335 -0
  66. package/boost/numeric/interval/utility_fwd.hpp +172 -0
  67. package/boost/numeric/interval.hpp +32 -0
  68. package/boost/numeric/odeint/algebra/algebra_dispatcher.hpp +86 -0
  69. package/boost/numeric/odeint/algebra/array_algebra.hpp +293 -0
  70. package/boost/numeric/odeint/algebra/default_operations.hpp +599 -0
  71. package/boost/numeric/odeint/algebra/detail/extract_value_type.hpp +51 -0
  72. package/boost/numeric/odeint/algebra/detail/for_each.hpp +165 -0
  73. package/boost/numeric/odeint/algebra/detail/macros.hpp +35 -0
  74. package/boost/numeric/odeint/algebra/detail/norm_inf.hpp +46 -0
  75. package/boost/numeric/odeint/algebra/fusion_algebra.hpp +216 -0
  76. package/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp +48 -0
  77. package/boost/numeric/odeint/algebra/multi_array_algebra.hpp +146 -0
  78. package/boost/numeric/odeint/algebra/norm_result_type.hpp +33 -0
  79. package/boost/numeric/odeint/algebra/operations_dispatcher.hpp +41 -0
  80. package/boost/numeric/odeint/algebra/range_algebra.hpp +142 -0
  81. package/boost/numeric/odeint/algebra/vector_space_algebra.hpp +175 -0
  82. package/boost/numeric/odeint/config.hpp +53 -0
  83. package/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp +55 -0
  84. package/boost/numeric/odeint/external/blaze/blaze_resize.hpp +64 -0
  85. package/boost/numeric/odeint/external/compute/compute.hpp +27 -0
  86. package/boost/numeric/odeint/external/compute/compute_algebra.hpp +65 -0
  87. package/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp +41 -0
  88. package/boost/numeric/odeint/external/compute/compute_operations.hpp +198 -0
  89. package/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp +44 -0
  90. package/boost/numeric/odeint/external/compute/compute_resize.hpp +92 -0
  91. package/boost/numeric/odeint/external/eigen/eigen.hpp +27 -0
  92. package/boost/numeric/odeint/external/eigen/eigen_algebra.hpp +98 -0
  93. package/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp +49 -0
  94. package/boost/numeric/odeint/external/eigen/eigen_resize.hpp +103 -0
  95. package/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp +228 -0
  96. package/boost/numeric/odeint/external/mkl/mkl_operations.hpp +181 -0
  97. package/boost/numeric/odeint/external/mpi/mpi.hpp +25 -0
  98. package/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp +62 -0
  99. package/boost/numeric/odeint/external/mpi/mpi_state.hpp +113 -0
  100. package/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp +95 -0
  101. package/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp +161 -0
  102. package/boost/numeric/odeint/external/mtl4/mtl4.hpp +23 -0
  103. package/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp +99 -0
  104. package/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp +134 -0
  105. package/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp +25 -0
  106. package/boost/numeric/odeint/external/nt2/nt2_copy.hpp +33 -0
  107. package/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp +31 -0
  108. package/boost/numeric/odeint/external/nt2/nt2_resize.hpp +54 -0
  109. package/boost/numeric/odeint/external/openmp/openmp.hpp +31 -0
  110. package/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp +281 -0
  111. package/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp +276 -0
  112. package/boost/numeric/odeint/external/openmp/openmp_state.hpp +172 -0
  113. package/boost/numeric/odeint/external/thrust/thrust.hpp +27 -0
  114. package/boost/numeric/odeint/external/thrust/thrust_algebra.hpp +217 -0
  115. package/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp +118 -0
  116. package/boost/numeric/odeint/external/thrust/thrust_operations.hpp +233 -0
  117. package/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp +118 -0
  118. package/boost/numeric/odeint/external/thrust/thrust_resize.hpp +197 -0
  119. package/boost/numeric/odeint/external/vexcl/vexcl.hpp +28 -0
  120. package/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp +61 -0
  121. package/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp +51 -0
  122. package/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp +55 -0
  123. package/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp +68 -0
  124. package/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp +96 -0
  125. package/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp +58 -0
  126. package/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp +226 -0
  127. package/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp +68 -0
  128. package/boost/numeric/odeint/integrate/check_adapter.hpp +222 -0
  129. package/boost/numeric/odeint/integrate/detail/functors.hpp +70 -0
  130. package/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp +161 -0
  131. package/boost/numeric/odeint/integrate/detail/integrate_const.hpp +167 -0
  132. package/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp +161 -0
  133. package/boost/numeric/odeint/integrate/detail/integrate_times.hpp +179 -0
  134. package/boost/numeric/odeint/integrate/integrate.hpp +133 -0
  135. package/boost/numeric/odeint/integrate/integrate_adaptive.hpp +127 -0
  136. package/boost/numeric/odeint/integrate/integrate_const.hpp +195 -0
  137. package/boost/numeric/odeint/integrate/integrate_n_steps.hpp +178 -0
  138. package/boost/numeric/odeint/integrate/integrate_times.hpp +220 -0
  139. package/boost/numeric/odeint/integrate/max_step_checker.hpp +114 -0
  140. package/boost/numeric/odeint/integrate/null_observer.hpp +38 -0
  141. package/boost/numeric/odeint/integrate/observer_collection.hpp +55 -0
  142. package/boost/numeric/odeint/iterator/adaptive_iterator.hpp +183 -0
  143. package/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp +175 -0
  144. package/boost/numeric/odeint/iterator/const_step_iterator.hpp +180 -0
  145. package/boost/numeric/odeint/iterator/const_step_time_iterator.hpp +173 -0
  146. package/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp +199 -0
  147. package/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp +251 -0
  148. package/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp +228 -0
  149. package/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp +239 -0
  150. package/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp +369 -0
  151. package/boost/numeric/odeint/iterator/integrate/detail/functors.hpp +70 -0
  152. package/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp +121 -0
  153. package/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp +111 -0
  154. package/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp +107 -0
  155. package/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp +67 -0
  156. package/boost/numeric/odeint/iterator/integrate/integrate.hpp +111 -0
  157. package/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp +127 -0
  158. package/boost/numeric/odeint/iterator/integrate/integrate_const.hpp +158 -0
  159. package/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp +123 -0
  160. package/boost/numeric/odeint/iterator/integrate/integrate_times.hpp +131 -0
  161. package/boost/numeric/odeint/iterator/integrate/null_observer.hpp +38 -0
  162. package/boost/numeric/odeint/iterator/integrate/observer_collection.hpp +55 -0
  163. package/boost/numeric/odeint/iterator/n_step_iterator.hpp +168 -0
  164. package/boost/numeric/odeint/iterator/n_step_time_iterator.hpp +169 -0
  165. package/boost/numeric/odeint/iterator/times_iterator.hpp +189 -0
  166. package/boost/numeric/odeint/iterator/times_time_iterator.hpp +193 -0
  167. package/boost/numeric/odeint/stepper/adams_bashforth.hpp +418 -0
  168. package/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp +313 -0
  169. package/boost/numeric/odeint/stepper/adams_moulton.hpp +201 -0
  170. package/boost/numeric/odeint/stepper/adaptive_adams_bashforth_moulton.hpp +237 -0
  171. package/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp +91 -0
  172. package/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp +588 -0
  173. package/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp +677 -0
  174. package/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp +415 -0
  175. package/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp +431 -0
  176. package/boost/numeric/odeint/stepper/bulirsch_stoer.hpp +642 -0
  177. package/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp +838 -0
  178. package/boost/numeric/odeint/stepper/controlled_adams_bashforth_moulton.hpp +322 -0
  179. package/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp +1018 -0
  180. package/boost/numeric/odeint/stepper/controlled_step_result.hpp +42 -0
  181. package/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp +476 -0
  182. package/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp +148 -0
  183. package/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp +168 -0
  184. package/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp +148 -0
  185. package/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp +168 -0
  186. package/boost/numeric/odeint/stepper/detail/adaptive_adams_coefficients.hpp +207 -0
  187. package/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp +247 -0
  188. package/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp +263 -0
  189. package/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp +252 -0
  190. package/boost/numeric/odeint/stepper/detail/pid_step_adjuster.hpp +199 -0
  191. package/boost/numeric/odeint/stepper/detail/pid_step_adjuster_coefficients.hpp +180 -0
  192. package/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp +84 -0
  193. package/boost/numeric/odeint/stepper/euler.hpp +166 -0
  194. package/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp +255 -0
  195. package/boost/numeric/odeint/stepper/explicit_generic_rk.hpp +246 -0
  196. package/boost/numeric/odeint/stepper/extrapolation_stepper.hpp +288 -0
  197. package/boost/numeric/odeint/stepper/generation/generation_controlled_adams_bashforth_moulton.hpp +59 -0
  198. package/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp +61 -0
  199. package/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp +65 -0
  200. package/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp +79 -0
  201. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp +47 -0
  202. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp +48 -0
  203. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp +56 -0
  204. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp +46 -0
  205. package/boost/numeric/odeint/stepper/generation/make_controlled.hpp +103 -0
  206. package/boost/numeric/odeint/stepper/generation/make_dense_output.hpp +100 -0
  207. package/boost/numeric/odeint/stepper/generation.hpp +37 -0
  208. package/boost/numeric/odeint/stepper/implicit_euler.hpp +170 -0
  209. package/boost/numeric/odeint/stepper/modified_midpoint.hpp +315 -0
  210. package/boost/numeric/odeint/stepper/rosenbrock4.hpp +346 -0
  211. package/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp +240 -0
  212. package/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp +204 -0
  213. package/boost/numeric/odeint/stepper/runge_kutta4.hpp +181 -0
  214. package/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp +232 -0
  215. package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp +231 -0
  216. package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp +289 -0
  217. package/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp +403 -0
  218. package/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp +374 -0
  219. package/boost/numeric/odeint/stepper/stepper_categories.hpp +66 -0
  220. package/boost/numeric/odeint/stepper/symplectic_euler.hpp +136 -0
  221. package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp +160 -0
  222. package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp +162 -0
  223. package/boost/numeric/odeint/stepper/velocity_verlet.hpp +375 -0
  224. package/boost/numeric/odeint/tools/assert.hpp +30 -0
  225. package/boost/numeric/odeint/tools/is_standalone.hpp +21 -0
  226. package/boost/numeric/odeint/tools/traits.hpp +39 -0
  227. package/boost/numeric/odeint/util/bind.hpp +35 -0
  228. package/boost/numeric/odeint/util/copy.hpp +88 -0
  229. package/boost/numeric/odeint/util/detail/is_range.hpp +127 -0
  230. package/boost/numeric/odeint/util/detail/less_with_sign.hpp +78 -0
  231. package/boost/numeric/odeint/util/is_pair.hpp +42 -0
  232. package/boost/numeric/odeint/util/is_resizeable.hpp +84 -0
  233. package/boost/numeric/odeint/util/multi_array_adaption.hpp +131 -0
  234. package/boost/numeric/odeint/util/n_ary_helper.hpp +96 -0
  235. package/boost/numeric/odeint/util/odeint_error.hpp +77 -0
  236. package/boost/numeric/odeint/util/resize.hpp +120 -0
  237. package/boost/numeric/odeint/util/resizer.hpp +94 -0
  238. package/boost/numeric/odeint/util/same_instance.hpp +56 -0
  239. package/boost/numeric/odeint/util/same_size.hpp +117 -0
  240. package/boost/numeric/odeint/util/split.hpp +64 -0
  241. package/boost/numeric/odeint/util/split_adaptor.hpp +103 -0
  242. package/boost/numeric/odeint/util/state_wrapper.hpp +50 -0
  243. package/boost/numeric/odeint/util/stepper_traits.hpp +63 -0
  244. package/boost/numeric/odeint/util/ublas_matrix_expression.patch +6 -0
  245. package/boost/numeric/odeint/util/ublas_wrapper.hpp +297 -0
  246. package/boost/numeric/odeint/util/unit_helper.hpp +151 -0
  247. package/boost/numeric/odeint/util/unwrap_reference.hpp +141 -0
  248. package/boost/numeric/odeint/version.hpp +55 -0
  249. package/boost/numeric/odeint.hpp +87 -0
  250. package/boost/numeric/ublas/assignment.hpp +1288 -0
  251. package/boost/numeric/ublas/banded.hpp +2372 -0
  252. package/boost/numeric/ublas/blas.hpp +499 -0
  253. package/boost/numeric/ublas/detail/concepts.hpp +1465 -0
  254. package/boost/numeric/ublas/detail/config.hpp +304 -0
  255. package/boost/numeric/ublas/detail/definitions.hpp +212 -0
  256. package/boost/numeric/ublas/detail/documentation.hpp +33 -0
  257. package/boost/numeric/ublas/detail/duff.hpp +56 -0
  258. package/boost/numeric/ublas/detail/iterator.hpp +1448 -0
  259. package/boost/numeric/ublas/detail/matrix_assign.hpp +1785 -0
  260. package/boost/numeric/ublas/detail/raw.hpp +878 -0
  261. package/boost/numeric/ublas/detail/returntype_deduction.hpp +174 -0
  262. package/boost/numeric/ublas/detail/temporary.hpp +33 -0
  263. package/boost/numeric/ublas/detail/vector_assign.hpp +609 -0
  264. package/boost/numeric/ublas/doxydoc.hpp +58 -0
  265. package/boost/numeric/ublas/exception.hpp +297 -0
  266. package/boost/numeric/ublas/experimental/sparse_view.hpp +317 -0
  267. package/boost/numeric/ublas/expression_types.hpp +506 -0
  268. package/boost/numeric/ublas/functional.hpp +2112 -0
  269. package/boost/numeric/ublas/fwd.hpp +229 -0
  270. package/boost/numeric/ublas/hermitian.hpp +2633 -0
  271. package/boost/numeric/ublas/io.hpp +355 -0
  272. package/boost/numeric/ublas/lu.hpp +350 -0
  273. package/boost/numeric/ublas/matrix.hpp +6013 -0
  274. package/boost/numeric/ublas/matrix_expression.hpp +5693 -0
  275. package/boost/numeric/ublas/matrix_proxy.hpp +5457 -0
  276. package/boost/numeric/ublas/matrix_sparse.hpp +5773 -0
  277. package/boost/numeric/ublas/matrix_vector.hpp +406 -0
  278. package/boost/numeric/ublas/opencl/elementwise.hpp +508 -0
  279. package/boost/numeric/ublas/opencl/library.hpp +38 -0
  280. package/boost/numeric/ublas/opencl/matrix.hpp +123 -0
  281. package/boost/numeric/ublas/opencl/misc.hpp +182 -0
  282. package/boost/numeric/ublas/opencl/operations.hpp +18 -0
  283. package/boost/numeric/ublas/opencl/prod.hpp +364 -0
  284. package/boost/numeric/ublas/opencl/transpose.hpp +142 -0
  285. package/boost/numeric/ublas/opencl/vector.hpp +90 -0
  286. package/boost/numeric/ublas/opencl.hpp +16 -0
  287. package/boost/numeric/ublas/operation/begin.hpp +318 -0
  288. package/boost/numeric/ublas/operation/c_array.hpp +41 -0
  289. package/boost/numeric/ublas/operation/end.hpp +318 -0
  290. package/boost/numeric/ublas/operation/num_columns.hpp +45 -0
  291. package/boost/numeric/ublas/operation/num_rows.hpp +44 -0
  292. package/boost/numeric/ublas/operation/size.hpp +350 -0
  293. package/boost/numeric/ublas/operation.hpp +830 -0
  294. package/boost/numeric/ublas/operation_blocked.hpp +266 -0
  295. package/boost/numeric/ublas/operation_sparse.hpp +198 -0
  296. package/boost/numeric/ublas/operations.hpp +26 -0
  297. package/boost/numeric/ublas/storage.hpp +2131 -0
  298. package/boost/numeric/ublas/storage_sparse.hpp +578 -0
  299. package/boost/numeric/ublas/symmetric.hpp +2309 -0
  300. package/boost/numeric/ublas/tags.hpp +37 -0
  301. package/boost/numeric/ublas/tensor/algorithms.hpp +345 -0
  302. package/boost/numeric/ublas/tensor/expression.hpp +181 -0
  303. package/boost/numeric/ublas/tensor/expression_evaluation.hpp +288 -0
  304. package/boost/numeric/ublas/tensor/extents.hpp +335 -0
  305. package/boost/numeric/ublas/tensor/functions.hpp +558 -0
  306. package/boost/numeric/ublas/tensor/index.hpp +89 -0
  307. package/boost/numeric/ublas/tensor/multi_index.hpp +110 -0
  308. package/boost/numeric/ublas/tensor/multi_index_utility.hpp +364 -0
  309. package/boost/numeric/ublas/tensor/multiplication.hpp +945 -0
  310. package/boost/numeric/ublas/tensor/operators_arithmetic.hpp +244 -0
  311. package/boost/numeric/ublas/tensor/operators_comparison.hpp +175 -0
  312. package/boost/numeric/ublas/tensor/ostream.hpp +122 -0
  313. package/boost/numeric/ublas/tensor/storage_traits.hpp +84 -0
  314. package/boost/numeric/ublas/tensor/strides.hpp +251 -0
  315. package/boost/numeric/ublas/tensor/tensor.hpp +734 -0
  316. package/boost/numeric/ublas/tensor.hpp +26 -0
  317. package/boost/numeric/ublas/traits/c_array.hpp +110 -0
  318. package/boost/numeric/ublas/traits/const_iterator_type.hpp +127 -0
  319. package/boost/numeric/ublas/traits/iterator_type.hpp +126 -0
  320. package/boost/numeric/ublas/traits.hpp +753 -0
  321. package/boost/numeric/ublas/triangular.hpp +2775 -0
  322. package/boost/numeric/ublas/vector.hpp +2947 -0
  323. package/boost/numeric/ublas/vector_expression.hpp +1762 -0
  324. package/boost/numeric/ublas/vector_of_vector.hpp +1347 -0
  325. package/boost/numeric/ublas/vector_proxy.hpp +1697 -0
  326. package/boost/numeric/ublas/vector_sparse.hpp +2246 -0
  327. package/package.json +3 -7
@@ -0,0 +1,42 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/controlled_step_result.hpp
4
+
5
+ [begin_description]
6
+ Defines the result type for all controlled stepper.
7
+ [end_description]
8
+
9
+ Copyright 2011-2013 Karsten Ahnert
10
+ Copyright 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_STEPPER_CONTROLLED_STEP_RESULT_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_CONTROLLED_STEP_RESULT_HPP_INCLUDED
20
+
21
+
22
+ namespace boost {
23
+ namespace numeric {
24
+ namespace odeint {
25
+
26
+ /**
27
+ * \enum controlled_step_result
28
+ *
29
+ * \brief Enum representing the return values of the controlled steppers.
30
+ */
31
+ typedef enum
32
+ {
33
+ success , /**< The trial step was successful, hence the state and the time have been advanced. */
34
+ fail /**< The step was not successful and might possibly be repeated with a small step size. */
35
+ } controlled_step_result;
36
+
37
+ } // namespace odeint
38
+ } // numeric
39
+ } // boost
40
+
41
+
42
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_CONTROLLED_STEP_RESULT_HPP_INCLUDED
@@ -0,0 +1,476 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp
4
+
5
+ [begin_description]
6
+ Implementation of the Dense-output stepper for all steppers. Note, that this class does
7
+ not computes the result but serves as an interface.
8
+ [end_description]
9
+
10
+ Copyright 2011-2013 Karsten Ahnert
11
+ Copyright 2011-2015 Mario Mulansky
12
+ Copyright 2012 Christoph Koke
13
+
14
+ Distributed under the Boost Software License, Version 1.0.
15
+ (See accompanying file LICENSE_1_0.txt or
16
+ copy at http://www.boost.org/LICENSE_1_0.txt)
17
+ */
18
+
19
+
20
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_DENSE_OUTPUT_RUNGE_KUTTA_HPP_INCLUDED
21
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DENSE_OUTPUT_RUNGE_KUTTA_HPP_INCLUDED
22
+
23
+
24
+ #include <utility>
25
+ #include <stdexcept>
26
+
27
+ #include <boost/throw_exception.hpp>
28
+
29
+ #include <boost/numeric/odeint/util/bind.hpp>
30
+
31
+ #include <boost/numeric/odeint/util/copy.hpp>
32
+
33
+ #include <boost/numeric/odeint/util/state_wrapper.hpp>
34
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
35
+ #include <boost/numeric/odeint/util/resizer.hpp>
36
+
37
+ #include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
38
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
39
+
40
+ #include <boost/numeric/odeint/integrate/max_step_checker.hpp>
41
+
42
+ namespace boost {
43
+ namespace numeric {
44
+ namespace odeint {
45
+
46
+ template< class Stepper , class StepperCategory = typename Stepper::stepper_category >
47
+ class dense_output_runge_kutta;
48
+
49
+
50
+ /**
51
+ * \brief The class representing dense-output Runge-Kutta steppers.
52
+ * \note In this stepper, the initialize method has to be called before using
53
+ * the do_step method.
54
+ *
55
+ * The dense-output functionality allows to interpolate the solution between
56
+ * subsequent integration points using intermediate results obtained during the
57
+ * computation. This version works based on a normal stepper without step-size
58
+ * control.
59
+ *
60
+ *
61
+ * \tparam Stepper The stepper type of the underlying algorithm.
62
+ */
63
+ template< class Stepper >
64
+ class dense_output_runge_kutta< Stepper , stepper_tag >
65
+ {
66
+
67
+ public:
68
+
69
+ /*
70
+ * We do not need all typedefs.
71
+ */
72
+ typedef Stepper stepper_type;
73
+ typedef typename stepper_type::state_type state_type;
74
+ typedef typename stepper_type::wrapped_state_type wrapped_state_type;
75
+ typedef typename stepper_type::value_type value_type;
76
+ typedef typename stepper_type::deriv_type deriv_type;
77
+ typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
78
+ typedef typename stepper_type::time_type time_type;
79
+ typedef typename stepper_type::algebra_type algebra_type;
80
+ typedef typename stepper_type::operations_type operations_type;
81
+ typedef typename stepper_type::resizer_type resizer_type;
82
+ typedef dense_output_stepper_tag stepper_category;
83
+ typedef dense_output_runge_kutta< Stepper > dense_output_stepper_type;
84
+
85
+
86
+ /**
87
+ * \brief Constructs the dense_output_runge_kutta class. An instance of the
88
+ * underlying stepper can be provided.
89
+ * \param stepper An instance of the underlying stepper.
90
+ */
91
+ dense_output_runge_kutta( const stepper_type &stepper = stepper_type() )
92
+ : m_stepper( stepper ) , m_resizer() ,
93
+ m_x1() , m_x2() , m_current_state_x1( true ) ,
94
+ m_t() , m_t_old() , m_dt()
95
+ { }
96
+
97
+
98
+ /**
99
+ * \brief Initializes the stepper. Has to be called before do_step can be
100
+ * used to set the initial conditions and the step size.
101
+ * \param x0 The initial state of the ODE which should be solved.
102
+ * \param t0 The initial time, at which the step should be performed.
103
+ * \param dt0 The step size.
104
+ */
105
+ template< class StateType >
106
+ void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
107
+ {
108
+ m_resizer.adjust_size(x0, [this](auto&& arg) { return this->resize_impl<StateType>(std::forward<decltype(arg)>(arg)); });
109
+ boost::numeric::odeint::copy( x0 , get_current_state() );
110
+ m_t = t0;
111
+ m_dt = dt0;
112
+ }
113
+
114
+ /**
115
+ * \brief Does one time step.
116
+ * \note initialize has to be called before using this method to set the
117
+ * initial conditions x,t and the stepsize.
118
+ * \param system The system function to solve, hence the r.h.s. of the ordinary differential equation. It must fulfill the
119
+ * Simple System concept.
120
+ * \return Pair with start and end time of the integration step.
121
+ */
122
+ template< class System >
123
+ std::pair< time_type , time_type > do_step( System system )
124
+ {
125
+ m_stepper.do_step( system , get_current_state() , m_t , get_old_state() , m_dt );
126
+ m_t_old = m_t;
127
+ m_t += m_dt;
128
+ toggle_current_state();
129
+ return std::make_pair( m_t_old , m_t );
130
+ }
131
+
132
+ /*
133
+ * The next two overloads are needed to solve the forwarding problem
134
+ */
135
+
136
+ /**
137
+ * \brief Calculates the solution at an intermediate point.
138
+ * \param t The time at which the solution should be calculated, has to be
139
+ * in the current time interval.
140
+ * \param x The output variable where the result is written into.
141
+ */
142
+ template< class StateOut >
143
+ void calc_state( time_type t , StateOut &x ) const
144
+ {
145
+ if( t == current_time() )
146
+ {
147
+ boost::numeric::odeint::copy( get_current_state() , x );
148
+ }
149
+ m_stepper.calc_state( x , t , get_old_state() , m_t_old , get_current_state() , m_t );
150
+ }
151
+
152
+ /**
153
+ * \brief Calculates the solution at an intermediate point. Solves the forwarding problem
154
+ * \param t The time at which the solution should be calculated, has to be
155
+ * in the current time interval.
156
+ * \param x The output variable where the result is written into, can be a boost range.
157
+ */
158
+ template< class StateOut >
159
+ void calc_state( time_type t , const StateOut &x ) const
160
+ {
161
+ m_stepper.calc_state( x , t , get_old_state() , m_t_old , get_current_state() , m_t );
162
+ }
163
+
164
+ /**
165
+ * \brief Adjust the size of all temporaries in the stepper manually.
166
+ * \param x A state from which the size of the temporaries to be resized is deduced.
167
+ */
168
+ template< class StateType >
169
+ void adjust_size( const StateType &x )
170
+ {
171
+ resize_impl( x );
172
+ m_stepper.stepper().resize( x );
173
+ }
174
+
175
+ /**
176
+ * \brief Returns the current state of the solution.
177
+ * \return The current state of the solution x(t).
178
+ */
179
+ const state_type& current_state( void ) const
180
+ {
181
+ return get_current_state();
182
+ }
183
+
184
+ /**
185
+ * \brief Returns the current time of the solution.
186
+ * \return The current time of the solution t.
187
+ */
188
+ time_type current_time( void ) const
189
+ {
190
+ return m_t;
191
+ }
192
+
193
+ /**
194
+ * \brief Returns the last state of the solution.
195
+ * \return The last state of the solution x(t-dt).
196
+ */
197
+ const state_type& previous_state( void ) const
198
+ {
199
+ return get_old_state();
200
+ }
201
+
202
+ /**
203
+ * \brief Returns the last time of the solution.
204
+ * \return The last time of the solution t-dt.
205
+ */
206
+ time_type previous_time( void ) const
207
+ {
208
+ return m_t_old;
209
+ }
210
+
211
+ /**
212
+ * \brief Returns the current time step.
213
+ * \return dt.
214
+ */
215
+ time_type current_time_step( void ) const
216
+ {
217
+ return m_dt;
218
+ }
219
+
220
+
221
+ private:
222
+
223
+ state_type& get_current_state( void )
224
+ {
225
+ return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
226
+ }
227
+
228
+ const state_type& get_current_state( void ) const
229
+ {
230
+ return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
231
+ }
232
+
233
+ state_type& get_old_state( void )
234
+ {
235
+ return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
236
+ }
237
+
238
+ const state_type& get_old_state( void ) const
239
+ {
240
+ return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
241
+ }
242
+
243
+ void toggle_current_state( void )
244
+ {
245
+ m_current_state_x1 = ! m_current_state_x1;
246
+ }
247
+
248
+
249
+ template< class StateIn >
250
+ bool resize_impl( const StateIn &x )
251
+ {
252
+ bool resized = false;
253
+ resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
254
+ resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
255
+ return resized;
256
+ }
257
+
258
+
259
+ stepper_type m_stepper;
260
+ resizer_type m_resizer;
261
+ wrapped_state_type m_x1 , m_x2;
262
+ bool m_current_state_x1; // if true, the current state is m_x1
263
+ time_type m_t , m_t_old , m_dt;
264
+
265
+ };
266
+
267
+
268
+
269
+
270
+
271
+ /**
272
+ * \brief The class representing dense-output Runge-Kutta steppers with FSAL property.
273
+ *
274
+ * The interface is the same as for dense_output_runge_kutta< Stepper , stepper_tag >.
275
+ * This class provides dense output functionality based on methods with step size controlled
276
+ *
277
+ *
278
+ * \tparam Stepper The stepper type of the underlying algorithm.
279
+ */
280
+ template< class Stepper >
281
+ class dense_output_runge_kutta< Stepper , explicit_controlled_stepper_fsal_tag >
282
+ {
283
+ public:
284
+
285
+ /*
286
+ * We do not need all typedefs.
287
+ */
288
+ typedef Stepper controlled_stepper_type;
289
+
290
+ typedef typename controlled_stepper_type::stepper_type stepper_type;
291
+ typedef typename stepper_type::state_type state_type;
292
+ typedef typename stepper_type::wrapped_state_type wrapped_state_type;
293
+ typedef typename stepper_type::value_type value_type;
294
+ typedef typename stepper_type::deriv_type deriv_type;
295
+ typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
296
+ typedef typename stepper_type::time_type time_type;
297
+ typedef typename stepper_type::algebra_type algebra_type;
298
+ typedef typename stepper_type::operations_type operations_type;
299
+ typedef typename stepper_type::resizer_type resizer_type;
300
+ typedef dense_output_stepper_tag stepper_category;
301
+ typedef dense_output_runge_kutta< Stepper > dense_output_stepper_type;
302
+
303
+
304
+ dense_output_runge_kutta( const controlled_stepper_type &stepper = controlled_stepper_type() )
305
+ : m_stepper( stepper ) , m_resizer() ,
306
+ m_current_state_x1( true ) ,
307
+ m_x1() , m_x2() , m_dxdt1() , m_dxdt2() ,
308
+ m_t() , m_t_old() , m_dt() ,
309
+ m_is_deriv_initialized( false )
310
+ { }
311
+
312
+
313
+ template< class StateType >
314
+ void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
315
+ {
316
+ m_resizer.adjust_size(x0, [this](auto&& arg) { return this->resize<StateType>(std::forward<decltype(arg)>(arg)); });
317
+ boost::numeric::odeint::copy( x0 , get_current_state() );
318
+ m_t = t0;
319
+ m_dt = dt0;
320
+ m_is_deriv_initialized = false;
321
+ }
322
+
323
+ template< class System >
324
+ std::pair< time_type , time_type > do_step( System system )
325
+ {
326
+ if( !m_is_deriv_initialized )
327
+ {
328
+ typename odeint::unwrap_reference< System >::type &sys = system;
329
+ sys( get_current_state() , get_current_deriv() , m_t );
330
+ m_is_deriv_initialized = true;
331
+ }
332
+
333
+ failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
334
+ controlled_step_result res = fail;
335
+ m_t_old = m_t;
336
+ do
337
+ {
338
+ res = m_stepper.try_step( system , get_current_state() , get_current_deriv() , m_t ,
339
+ get_old_state() , get_old_deriv() , m_dt );
340
+ fail_checker(); // check for overflow of failed steps
341
+ }
342
+ while( res == fail );
343
+ toggle_current_state();
344
+ return std::make_pair( m_t_old , m_t );
345
+ }
346
+
347
+
348
+ /*
349
+ * The two overloads are needed in order to solve the forwarding problem.
350
+ */
351
+ template< class StateOut >
352
+ void calc_state( time_type t , StateOut &x ) const
353
+ {
354
+ m_stepper.stepper().calc_state( t , x , get_old_state() , get_old_deriv() , m_t_old ,
355
+ get_current_state() , get_current_deriv() , m_t );
356
+ }
357
+
358
+ template< class StateOut >
359
+ void calc_state( time_type t , const StateOut &x ) const
360
+ {
361
+ m_stepper.stepper().calc_state( t , x , get_old_state() , get_old_deriv() , m_t_old ,
362
+ get_current_state() , get_current_deriv() , m_t );
363
+ }
364
+
365
+
366
+ template< class StateIn >
367
+ bool resize( const StateIn &x )
368
+ {
369
+ bool resized = false;
370
+ resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
371
+ resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
372
+ resized |= adjust_size_by_resizeability( m_dxdt1 , x , typename is_resizeable<deriv_type>::type() );
373
+ resized |= adjust_size_by_resizeability( m_dxdt2 , x , typename is_resizeable<deriv_type>::type() );
374
+ return resized;
375
+ }
376
+
377
+
378
+ template< class StateType >
379
+ void adjust_size( const StateType &x )
380
+ {
381
+ resize( x );
382
+ m_stepper.stepper().resize( x );
383
+ }
384
+
385
+ const state_type& current_state( void ) const
386
+ {
387
+ return get_current_state();
388
+ }
389
+
390
+ time_type current_time( void ) const
391
+ {
392
+ return m_t;
393
+ }
394
+
395
+ const state_type& previous_state( void ) const
396
+ {
397
+ return get_old_state();
398
+ }
399
+
400
+ time_type previous_time( void ) const
401
+ {
402
+ return m_t_old;
403
+ }
404
+
405
+ time_type current_time_step( void ) const
406
+ {
407
+ return m_dt;
408
+ }
409
+
410
+
411
+ private:
412
+
413
+ state_type& get_current_state( void )
414
+ {
415
+ return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
416
+ }
417
+
418
+ const state_type& get_current_state( void ) const
419
+ {
420
+ return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
421
+ }
422
+
423
+ state_type& get_old_state( void )
424
+ {
425
+ return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
426
+ }
427
+
428
+ const state_type& get_old_state( void ) const
429
+ {
430
+ return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
431
+ }
432
+
433
+ deriv_type& get_current_deriv( void )
434
+ {
435
+ return m_current_state_x1 ? m_dxdt1.m_v : m_dxdt2.m_v ;
436
+ }
437
+
438
+ const deriv_type& get_current_deriv( void ) const
439
+ {
440
+ return m_current_state_x1 ? m_dxdt1.m_v : m_dxdt2.m_v ;
441
+ }
442
+
443
+ deriv_type& get_old_deriv( void )
444
+ {
445
+ return m_current_state_x1 ? m_dxdt2.m_v : m_dxdt1.m_v ;
446
+ }
447
+
448
+ const deriv_type& get_old_deriv( void ) const
449
+ {
450
+ return m_current_state_x1 ? m_dxdt2.m_v : m_dxdt1.m_v ;
451
+ }
452
+
453
+
454
+ void toggle_current_state( void )
455
+ {
456
+ m_current_state_x1 = ! m_current_state_x1;
457
+ }
458
+
459
+
460
+ controlled_stepper_type m_stepper;
461
+ resizer_type m_resizer;
462
+ bool m_current_state_x1;
463
+ wrapped_state_type m_x1 , m_x2;
464
+ wrapped_deriv_type m_dxdt1 , m_dxdt2;
465
+ time_type m_t , m_t_old , m_dt;
466
+ bool m_is_deriv_initialized;
467
+
468
+ };
469
+
470
+ } // namespace odeint
471
+ } // namespace numeric
472
+ } // namespace boost
473
+
474
+
475
+
476
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DENSE_OUTPUT_RUNGE_KUTTA_HPP_INCLUDED
@@ -0,0 +1,148 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp
4
+
5
+ [begin_description]
6
+ Algebra caller for the Adams Bashforth stepper.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 Karsten Ahnert
10
+ Copyright 2011 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_STEPPER_DETAIL_ADAMS_BASHFORTH_CALL_ALGEBRA_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_CALL_ALGEBRA_HPP_INCLUDED
20
+
21
+ #include <cstddef>
22
+
23
+ namespace boost {
24
+ namespace numeric {
25
+ namespace odeint {
26
+ namespace detail {
27
+
28
+ template< size_t Step , class Algebra , class Operations >
29
+ struct adams_bashforth_call_algebra;
30
+
31
+ template< class Algebra , class Operations >
32
+ struct adams_bashforth_call_algebra< 1 , Algebra , Operations >
33
+ {
34
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
35
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
36
+ {
37
+ typedef typename Coefficients::value_type value_type;
38
+ algebra.for_each3( out , in , steps[0].m_v , typename Operations::template scale_sum2< value_type , Time >( 1.0 , dt * coef[0] ) );
39
+ }
40
+ };
41
+
42
+
43
+ template< class Algebra , class Operations >
44
+ struct adams_bashforth_call_algebra< 2 , Algebra , Operations >
45
+ {
46
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
47
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
48
+ {
49
+ typedef typename Coefficients::value_type value_type;
50
+ algebra.for_each4( out , in , steps[0].m_v , steps[1].m_v ,
51
+ typename Operations::template scale_sum3< value_type , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] ) );
52
+ }
53
+ };
54
+
55
+
56
+ template< class Algebra , class Operations >
57
+ struct adams_bashforth_call_algebra< 3 , Algebra , Operations >
58
+ {
59
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
60
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
61
+ {
62
+ typedef typename Coefficients::value_type value_type;
63
+ algebra.for_each5( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v ,
64
+ typename Operations::template scale_sum4< value_type , Time , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] ) );
65
+ }
66
+ };
67
+
68
+
69
+ template< class Algebra , class Operations >
70
+ struct adams_bashforth_call_algebra< 4 , Algebra , Operations >
71
+ {
72
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
73
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
74
+ {
75
+ typedef typename Coefficients::value_type value_type;
76
+ algebra.for_each6( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v ,
77
+ typename Operations::template scale_sum5< value_type , Time , Time , Time >(
78
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] ) );
79
+ }
80
+ };
81
+
82
+
83
+ template< class Algebra , class Operations >
84
+ struct adams_bashforth_call_algebra< 5 , Algebra , Operations >
85
+ {
86
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
87
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
88
+ {
89
+ typedef typename Coefficients::value_type value_type;
90
+ algebra.for_each7( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v ,
91
+ typename Operations::template scale_sum6< value_type , Time , Time , Time , Time >(
92
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] ) );
93
+ }
94
+ };
95
+
96
+
97
+ template< class Algebra , class Operations >
98
+ struct adams_bashforth_call_algebra< 6 , Algebra , Operations >
99
+ {
100
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
101
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
102
+ {
103
+ typedef typename Coefficients::value_type value_type;
104
+ algebra.for_each8( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v ,
105
+ typename Operations::template scale_sum7< value_type , Time , Time , Time , Time , Time >(
106
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] ) );
107
+ }
108
+ };
109
+
110
+
111
+ template< class Algebra , class Operations >
112
+ struct adams_bashforth_call_algebra< 7 , Algebra , Operations >
113
+ {
114
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
115
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
116
+ {
117
+ typedef typename Coefficients::value_type value_type;
118
+ algebra.for_each9( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v , steps[6].m_v ,
119
+ typename Operations::template scale_sum8< value_type , Time , Time , Time , Time , Time , Time >(
120
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] ) );
121
+ }
122
+ };
123
+
124
+
125
+ template< class Algebra , class Operations >
126
+ struct adams_bashforth_call_algebra< 8 , Algebra , Operations >
127
+ {
128
+ template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
129
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
130
+ {
131
+ typedef typename Coefficients::value_type value_type;
132
+ algebra.for_each10( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v , steps[6].m_v , steps[7].m_v ,
133
+ typename Operations::template scale_sum9< value_type , Time , Time , Time , Time , Time , Time , Time >(
134
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] , dt * coef[7] ) );
135
+ }
136
+ };
137
+
138
+
139
+
140
+
141
+ } // detail
142
+ } // odeint
143
+ } // numeric
144
+ } // boost
145
+
146
+
147
+
148
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_CALL_ALGEBRA_HPP_INCLUDED