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,403 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp
4
+
5
+ [begin_description]
6
+ Implementation of the Dormand-Prince 5(4) method. This stepper can also be used with the dense-output controlled stepper.
7
+ [end_description]
8
+
9
+ Copyright 2010-2013 Karsten Ahnert
10
+ Copyright 2010-2013 Mario Mulansky
11
+ Copyright 2012 Christoph Koke
12
+
13
+ Distributed under the Boost Software License, Version 1.0.
14
+ (See accompanying file LICENSE_1_0.txt or
15
+ copy at http://www.boost.org/LICENSE_1_0.txt)
16
+ */
17
+
18
+
19
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_DOPRI5_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_DOPRI5_HPP_INCLUDED
21
+
22
+
23
+ #include <boost/numeric/odeint/util/bind.hpp>
24
+
25
+ #include <boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp>
26
+ #include <boost/numeric/odeint/algebra/range_algebra.hpp>
27
+ #include <boost/numeric/odeint/algebra/default_operations.hpp>
28
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
29
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
30
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
31
+
32
+ #include <boost/numeric/odeint/util/state_wrapper.hpp>
33
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
34
+ #include <boost/numeric/odeint/util/resizer.hpp>
35
+ #include <boost/numeric/odeint/util/same_instance.hpp>
36
+
37
+ namespace boost {
38
+ namespace numeric {
39
+ namespace odeint {
40
+
41
+
42
+
43
+ template<
44
+ class State ,
45
+ class Value = double ,
46
+ class Deriv = State ,
47
+ class Time = Value ,
48
+ class Algebra = typename algebra_dispatcher< State >::algebra_type ,
49
+ class Operations = typename operations_dispatcher< State >::operations_type ,
50
+ class Resizer = initially_resizer
51
+ >
52
+ class runge_kutta_dopri5
53
+ #ifndef DOXYGEN_SKIP
54
+ : public explicit_error_stepper_fsal_base<
55
+ runge_kutta_dopri5< State , Value , Deriv , Time , Algebra , Operations , Resizer > ,
56
+ 5 , 5 , 4 , State , Value , Deriv , Time , Algebra , Operations , Resizer >
57
+ #else
58
+ : public explicit_error_stepper_fsal_base
59
+ #endif
60
+ {
61
+
62
+ public :
63
+
64
+ #ifndef DOXYGEN_SKIP
65
+ typedef explicit_error_stepper_fsal_base<
66
+ runge_kutta_dopri5< State , Value , Deriv , Time , Algebra , Operations , Resizer > ,
67
+ 5 , 5 , 4 , State , Value , Deriv , Time , Algebra , Operations , Resizer > stepper_base_type;
68
+ #else
69
+ typedef explicit_error_stepper_fsal_base< runge_kutta_dopri5< ... > , ... > stepper_base_type;
70
+ #endif
71
+
72
+ typedef typename stepper_base_type::state_type state_type;
73
+ typedef typename stepper_base_type::value_type value_type;
74
+ typedef typename stepper_base_type::deriv_type deriv_type;
75
+ typedef typename stepper_base_type::time_type time_type;
76
+ typedef typename stepper_base_type::algebra_type algebra_type;
77
+ typedef typename stepper_base_type::operations_type operations_type;
78
+ typedef typename stepper_base_type::resizer_type resizer_type;
79
+
80
+ #ifndef DOXYGEN_SKIP
81
+ typedef typename stepper_base_type::stepper_type stepper_type;
82
+ typedef typename stepper_base_type::wrapped_state_type wrapped_state_type;
83
+ typedef typename stepper_base_type::wrapped_deriv_type wrapped_deriv_type;
84
+ #endif // DOXYGEN_SKIP
85
+
86
+
87
+ runge_kutta_dopri5( const algebra_type &algebra = algebra_type() ) : stepper_base_type( algebra )
88
+ { }
89
+
90
+
91
+ template< class System , class StateIn , class DerivIn , class StateOut , class DerivOut >
92
+ void do_step_impl( System system , const StateIn &in , const DerivIn &dxdt_in , time_type t ,
93
+ StateOut &out , DerivOut &dxdt_out , time_type dt )
94
+ {
95
+ const value_type a2 = static_cast<value_type> ( 1 ) / static_cast<value_type>( 5 );
96
+ const value_type a3 = static_cast<value_type> ( 3 ) / static_cast<value_type> ( 10 );
97
+ const value_type a4 = static_cast<value_type> ( 4 ) / static_cast<value_type> ( 5 );
98
+ const value_type a5 = static_cast<value_type> ( 8 )/static_cast<value_type> ( 9 );
99
+
100
+ const value_type b21 = static_cast<value_type> ( 1 ) / static_cast<value_type> ( 5 );
101
+
102
+ const value_type b31 = static_cast<value_type> ( 3 ) / static_cast<value_type>( 40 );
103
+ const value_type b32 = static_cast<value_type> ( 9 ) / static_cast<value_type>( 40 );
104
+
105
+ const value_type b41 = static_cast<value_type> ( 44 ) / static_cast<value_type> ( 45 );
106
+ const value_type b42 = static_cast<value_type> ( -56 ) / static_cast<value_type> ( 15 );
107
+ const value_type b43 = static_cast<value_type> ( 32 ) / static_cast<value_type> ( 9 );
108
+
109
+ const value_type b51 = static_cast<value_type> ( 19372 ) / static_cast<value_type>( 6561 );
110
+ const value_type b52 = static_cast<value_type> ( -25360 ) / static_cast<value_type> ( 2187 );
111
+ const value_type b53 = static_cast<value_type> ( 64448 ) / static_cast<value_type>( 6561 );
112
+ const value_type b54 = static_cast<value_type> ( -212 ) / static_cast<value_type>( 729 );
113
+
114
+ const value_type b61 = static_cast<value_type> ( 9017 ) / static_cast<value_type>( 3168 );
115
+ const value_type b62 = static_cast<value_type> ( -355 ) / static_cast<value_type>( 33 );
116
+ const value_type b63 = static_cast<value_type> ( 46732 ) / static_cast<value_type>( 5247 );
117
+ const value_type b64 = static_cast<value_type> ( 49 ) / static_cast<value_type>( 176 );
118
+ const value_type b65 = static_cast<value_type> ( -5103 ) / static_cast<value_type>( 18656 );
119
+
120
+ const value_type c1 = static_cast<value_type> ( 35 ) / static_cast<value_type>( 384 );
121
+ const value_type c3 = static_cast<value_type> ( 500 ) / static_cast<value_type>( 1113 );
122
+ const value_type c4 = static_cast<value_type> ( 125 ) / static_cast<value_type>( 192 );
123
+ const value_type c5 = static_cast<value_type> ( -2187 ) / static_cast<value_type>( 6784 );
124
+ const value_type c6 = static_cast<value_type> ( 11 ) / static_cast<value_type>( 84 );
125
+
126
+ typename odeint::unwrap_reference< System >::type &sys = system;
127
+
128
+ m_k_x_tmp_resizer.adjust_size(in, [this](auto&& arg) { return this->resize_k_x_tmp_impl<StateIn>(std::forward<decltype(arg)>(arg)); });
129
+
130
+ //m_x_tmp = x + dt*b21*dxdt
131
+ stepper_base_type::m_algebra.for_each3( m_x_tmp.m_v , in , dxdt_in ,
132
+ typename operations_type::template scale_sum2< value_type , time_type >( 1.0 , dt*b21 ) );
133
+
134
+ sys( m_x_tmp.m_v , m_k2.m_v , t + dt*a2 );
135
+ // m_x_tmp = x + dt*b31*dxdt + dt*b32*m_k2
136
+ stepper_base_type::m_algebra.for_each4( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v ,
137
+ typename operations_type::template scale_sum3< value_type , time_type , time_type >( 1.0 , dt*b31 , dt*b32 ));
138
+
139
+ sys( m_x_tmp.m_v , m_k3.m_v , t + dt*a3 );
140
+ // m_x_tmp = x + dt * (b41*dxdt + b42*m_k2 + b43*m_k3)
141
+ stepper_base_type::m_algebra.for_each5( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v , m_k3.m_v ,
142
+ typename operations_type::template scale_sum4< value_type , time_type , time_type , time_type >( 1.0 , dt*b41 , dt*b42 , dt*b43 ));
143
+
144
+ sys( m_x_tmp.m_v, m_k4.m_v , t + dt*a4 );
145
+ stepper_base_type::m_algebra.for_each6( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v , m_k3.m_v , m_k4.m_v ,
146
+ typename operations_type::template scale_sum5< value_type , time_type , time_type , time_type , time_type >( 1.0 , dt*b51 , dt*b52 , dt*b53 , dt*b54 ));
147
+
148
+ sys( m_x_tmp.m_v , m_k5.m_v , t + dt*a5 );
149
+ stepper_base_type::m_algebra.for_each7( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v , m_k3.m_v , m_k4.m_v , m_k5.m_v ,
150
+ typename operations_type::template scale_sum6< value_type , time_type , time_type , time_type , time_type , time_type >( 1.0 , dt*b61 , dt*b62 , dt*b63 , dt*b64 , dt*b65 ));
151
+
152
+ sys( m_x_tmp.m_v , m_k6.m_v , t + dt );
153
+ stepper_base_type::m_algebra.for_each7( out , in , dxdt_in , m_k3.m_v , m_k4.m_v , m_k5.m_v , m_k6.m_v ,
154
+ typename operations_type::template scale_sum6< value_type , time_type , time_type , time_type , time_type , time_type >( 1.0 , dt*c1 , dt*c3 , dt*c4 , dt*c5 , dt*c6 ));
155
+
156
+ // the new derivative
157
+ sys( out , dxdt_out , t + dt );
158
+ }
159
+
160
+
161
+
162
+ template< class System , class StateIn , class DerivIn , class StateOut , class DerivOut , class Err >
163
+ void do_step_impl( System system , const StateIn &in , const DerivIn &dxdt_in , time_type t ,
164
+ StateOut &out , DerivOut &dxdt_out , time_type dt , Err &xerr )
165
+ {
166
+ const value_type c1 = static_cast<value_type> ( 35 ) / static_cast<value_type>( 384 );
167
+ const value_type c3 = static_cast<value_type> ( 500 ) / static_cast<value_type>( 1113 );
168
+ const value_type c4 = static_cast<value_type> ( 125 ) / static_cast<value_type>( 192 );
169
+ const value_type c5 = static_cast<value_type> ( -2187 ) / static_cast<value_type>( 6784 );
170
+ const value_type c6 = static_cast<value_type> ( 11 ) / static_cast<value_type>( 84 );
171
+
172
+ const value_type dc1 = c1 - static_cast<value_type> ( 5179 ) / static_cast<value_type>( 57600 );
173
+ const value_type dc3 = c3 - static_cast<value_type> ( 7571 ) / static_cast<value_type>( 16695 );
174
+ const value_type dc4 = c4 - static_cast<value_type> ( 393 ) / static_cast<value_type>( 640 );
175
+ const value_type dc5 = c5 - static_cast<value_type> ( -92097 ) / static_cast<value_type>( 339200 );
176
+ const value_type dc6 = c6 - static_cast<value_type> ( 187 ) / static_cast<value_type>( 2100 );
177
+ const value_type dc7 = static_cast<value_type>( -1 ) / static_cast<value_type> ( 40 );
178
+
179
+ /* ToDo: copy only if &dxdt_in == &dxdt_out ? */
180
+ if( same_instance( dxdt_in , dxdt_out ) )
181
+ {
182
+ m_dxdt_tmp_resizer.adjust_size(in, [this](auto&& arg) { return this->resize_dxdt_tmp_impl<StateIn>(std::forward<decltype(arg)>(arg)); });
183
+ boost::numeric::odeint::copy( dxdt_in , m_dxdt_tmp.m_v );
184
+ do_step_impl( system , in , dxdt_in , t , out , dxdt_out , dt );
185
+ //error estimate
186
+ stepper_base_type::m_algebra.for_each7( xerr , m_dxdt_tmp.m_v , m_k3.m_v , m_k4.m_v , m_k5.m_v , m_k6.m_v , dxdt_out ,
187
+ typename operations_type::template scale_sum6< time_type , time_type , time_type , time_type , time_type , time_type >( dt*dc1 , dt*dc3 , dt*dc4 , dt*dc5 , dt*dc6 , dt*dc7 ) );
188
+
189
+ }
190
+ else
191
+ {
192
+ do_step_impl( system , in , dxdt_in , t , out , dxdt_out , dt );
193
+ //error estimate
194
+ stepper_base_type::m_algebra.for_each7( xerr , dxdt_in , m_k3.m_v , m_k4.m_v , m_k5.m_v , m_k6.m_v , dxdt_out ,
195
+ typename operations_type::template scale_sum6< time_type , time_type , time_type , time_type , time_type , time_type >( dt*dc1 , dt*dc3 , dt*dc4 , dt*dc5 , dt*dc6 , dt*dc7 ) );
196
+
197
+ }
198
+
199
+ }
200
+
201
+
202
+ /*
203
+ * Calculates Dense-Output for Dopri5
204
+ *
205
+ * See Hairer, Norsett, Wanner: Solving Ordinary Differential Equations, Nonstiff Problems. I, p.191/192
206
+ *
207
+ * y(t+theta) = y(t) + h * sum_i^7 b_i(theta) * k_i
208
+ *
209
+ * A = theta^2 * ( 3 - 2 theta )
210
+ * B = theta^2 * ( theta - 1 )
211
+ * C = theta^2 * ( theta - 1 )^2
212
+ * D = theta * ( theta - 1 )^2
213
+ *
214
+ * b_1( theta ) = A * b_1 - C * X1( theta ) + D
215
+ * b_2( theta ) = 0
216
+ * b_3( theta ) = A * b_3 + C * X3( theta )
217
+ * b_4( theta ) = A * b_4 - C * X4( theta )
218
+ * b_5( theta ) = A * b_5 + C * X5( theta )
219
+ * b_6( theta ) = A * b_6 - C * X6( theta )
220
+ * b_7( theta ) = B + C * X7( theta )
221
+ *
222
+ * An alternative Method is described in:
223
+ *
224
+ * www-m2.ma.tum.de/homepages/simeon/numerik3/kap3.ps
225
+ */
226
+ template< class StateOut , class StateIn1 , class DerivIn1 , class StateIn2 , class DerivIn2 >
227
+ void calc_state( time_type t , StateOut &x ,
228
+ const StateIn1 &x_old , const DerivIn1 &deriv_old , time_type t_old ,
229
+ const StateIn2 & /* x_new */ , const DerivIn2 &deriv_new , time_type t_new ) const
230
+ {
231
+ const value_type b1 = static_cast<value_type> ( 35 ) / static_cast<value_type>( 384 );
232
+ const value_type b3 = static_cast<value_type> ( 500 ) / static_cast<value_type>( 1113 );
233
+ const value_type b4 = static_cast<value_type> ( 125 ) / static_cast<value_type>( 192 );
234
+ const value_type b5 = static_cast<value_type> ( -2187 ) / static_cast<value_type>( 6784 );
235
+ const value_type b6 = static_cast<value_type> ( 11 ) / static_cast<value_type>( 84 );
236
+
237
+ const time_type dt = ( t_new - t_old );
238
+ const value_type theta = ( t - t_old ) / dt;
239
+ const value_type X1 = static_cast< value_type >( 5 ) * ( static_cast< value_type >( 2558722523LL ) - static_cast< value_type >( 31403016 ) * theta ) / static_cast< value_type >( 11282082432LL );
240
+ const value_type X3 = static_cast< value_type >( 100 ) * ( static_cast< value_type >( 882725551 ) - static_cast< value_type >( 15701508 ) * theta ) / static_cast< value_type >( 32700410799LL );
241
+ const value_type X4 = static_cast< value_type >( 25 ) * ( static_cast< value_type >( 443332067 ) - static_cast< value_type >( 31403016 ) * theta ) / static_cast< value_type >( 1880347072LL ) ;
242
+ const value_type X5 = static_cast< value_type >( 32805 ) * ( static_cast< value_type >( 23143187 ) - static_cast< value_type >( 3489224 ) * theta ) / static_cast< value_type >( 199316789632LL );
243
+ const value_type X6 = static_cast< value_type >( 55 ) * ( static_cast< value_type >( 29972135 ) - static_cast< value_type >( 7076736 ) * theta ) / static_cast< value_type >( 822651844 );
244
+ const value_type X7 = static_cast< value_type >( 10 ) * ( static_cast< value_type >( 7414447 ) - static_cast< value_type >( 829305 ) * theta ) / static_cast< value_type >( 29380423 );
245
+
246
+ const value_type theta_m_1 = theta - static_cast< value_type >( 1 );
247
+ const value_type theta_sq = theta * theta;
248
+ const value_type A = theta_sq * ( static_cast< value_type >( 3 ) - static_cast< value_type >( 2 ) * theta );
249
+ const value_type B = theta_sq * theta_m_1;
250
+ const value_type C = theta_sq * theta_m_1 * theta_m_1;
251
+ const value_type D = theta * theta_m_1 * theta_m_1;
252
+
253
+ const value_type b1_theta = A * b1 - C * X1 + D;
254
+ const value_type b3_theta = A * b3 + C * X3;
255
+ const value_type b4_theta = A * b4 - C * X4;
256
+ const value_type b5_theta = A * b5 + C * X5;
257
+ const value_type b6_theta = A * b6 - C * X6;
258
+ const value_type b7_theta = B + C * X7;
259
+
260
+ // const state_type &k1 = *m_old_deriv;
261
+ // const state_type &k3 = dopri5().m_k3;
262
+ // const state_type &k4 = dopri5().m_k4;
263
+ // const state_type &k5 = dopri5().m_k5;
264
+ // const state_type &k6 = dopri5().m_k6;
265
+ // const state_type &k7 = *m_current_deriv;
266
+
267
+ stepper_base_type::m_algebra.for_each8( x , x_old , deriv_old , m_k3.m_v , m_k4.m_v , m_k5.m_v , m_k6.m_v , deriv_new ,
268
+ typename operations_type::template scale_sum7< value_type , time_type , time_type , time_type , time_type , time_type , time_type >( 1.0 , dt * b1_theta , dt * b3_theta , dt * b4_theta , dt * b5_theta , dt * b6_theta , dt * b7_theta ) );
269
+ }
270
+
271
+
272
+ template< class StateIn >
273
+ void adjust_size( const StateIn &x )
274
+ {
275
+ resize_k_x_tmp_impl( x );
276
+ resize_dxdt_tmp_impl( x );
277
+ stepper_base_type::adjust_size( x );
278
+ }
279
+
280
+
281
+ private:
282
+
283
+ template< class StateIn >
284
+ bool resize_k_x_tmp_impl( const StateIn &x )
285
+ {
286
+ bool resized = false;
287
+ resized |= adjust_size_by_resizeability( m_x_tmp , x , typename is_resizeable<state_type>::type() );
288
+ resized |= adjust_size_by_resizeability( m_k2 , x , typename is_resizeable<deriv_type>::type() );
289
+ resized |= adjust_size_by_resizeability( m_k3 , x , typename is_resizeable<deriv_type>::type() );
290
+ resized |= adjust_size_by_resizeability( m_k4 , x , typename is_resizeable<deriv_type>::type() );
291
+ resized |= adjust_size_by_resizeability( m_k5 , x , typename is_resizeable<deriv_type>::type() );
292
+ resized |= adjust_size_by_resizeability( m_k6 , x , typename is_resizeable<deriv_type>::type() );
293
+ return resized;
294
+ }
295
+
296
+ template< class StateIn >
297
+ bool resize_dxdt_tmp_impl( const StateIn &x )
298
+ {
299
+ return adjust_size_by_resizeability( m_dxdt_tmp , x , typename is_resizeable<deriv_type>::type() );
300
+ }
301
+
302
+
303
+
304
+ wrapped_state_type m_x_tmp;
305
+ wrapped_deriv_type m_k2 , m_k3 , m_k4 , m_k5 , m_k6 ;
306
+ wrapped_deriv_type m_dxdt_tmp;
307
+ resizer_type m_k_x_tmp_resizer;
308
+ resizer_type m_dxdt_tmp_resizer;
309
+ };
310
+
311
+
312
+
313
+ /************* DOXYGEN ************/
314
+ /**
315
+ * \class runge_kutta_dopri5
316
+ * \brief The Runge-Kutta Dormand-Prince 5 method.
317
+ *
318
+ * The Runge-Kutta Dormand-Prince 5 method is a very popular method for solving ODEs, see
319
+ * <a href=""></a>.
320
+ * The method is explicit and fulfills the Error Stepper concept. Step size control
321
+ * is provided but continuous output is available which make this method favourable for many applications.
322
+ *
323
+ * This class derives from explicit_error_stepper_fsal_base and inherits its interface via CRTP (current recurring
324
+ * template pattern). The method possesses the FSAL (first-same-as-last) property. See
325
+ * explicit_error_stepper_fsal_base for more details.
326
+ *
327
+ * \tparam State The state type.
328
+ * \tparam Value The value type.
329
+ * \tparam Deriv The type representing the time derivative of the state.
330
+ * \tparam Time The time representing the independent variable - the time.
331
+ * \tparam Algebra The algebra type.
332
+ * \tparam Operations The operations type.
333
+ * \tparam Resizer The resizer policy type.
334
+ */
335
+
336
+
337
+ /**
338
+ * \fn runge_kutta_dopri5::runge_kutta_dopri5( const algebra_type &algebra )
339
+ * \brief Constructs the runge_kutta_dopri5 class. This constructor can be used as a default
340
+ * constructor if the algebra has a default constructor.
341
+ * \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
342
+ */
343
+
344
+ /**
345
+ * \fn runge_kutta_dopri5::do_step_impl( System system , const StateIn &in , const DerivIn &dxdt_in , time_type t , StateOut &out , DerivOut &dxdt_out , time_type dt )
346
+ * \brief This method performs one step. The derivative `dxdt_in` of `in` at the time `t` is passed to the
347
+ * method. The result is updated out-of-place, hence the input is in `in` and the output in `out`. Furthermore,
348
+ * the derivative is update out-of-place, hence the input is assumed to be in `dxdt_in` and the output in
349
+ * `dxdt_out`.
350
+ * Access to this step functionality is provided by explicit_error_stepper_fsal_base and
351
+ * `do_step_impl` should not be called directly.
352
+ *
353
+ * \param system The system function to solve, hence the r.h.s. of the ODE. It must fulfill the
354
+ * Simple System concept.
355
+ * \param in The state of the ODE which should be solved. in is not modified in this method
356
+ * \param dxdt_in The derivative of x at t. dxdt_in is not modified by this method
357
+ * \param t The value of the time, at which the step should be performed.
358
+ * \param out The result of the step is written in out.
359
+ * \param dxdt_out The result of the new derivative at time t+dt.
360
+ * \param dt The step size.
361
+ */
362
+
363
+ /**
364
+ * \fn runge_kutta_dopri5::do_step_impl( System system , const StateIn &in , const DerivIn &dxdt_in , time_type t , StateOut &out , DerivOut &dxdt_out , time_type dt , Err &xerr )
365
+ * \brief This method performs one step. The derivative `dxdt_in` of `in` at the time `t` is passed to the
366
+ * method. The result is updated out-of-place, hence the input is in `in` and the output in `out`. Furthermore,
367
+ * the derivative is update out-of-place, hence the input is assumed to be in `dxdt_in` and the output in
368
+ * `dxdt_out`.
369
+ * Access to this step functionality is provided by explicit_error_stepper_fsal_base and
370
+ * `do_step_impl` should not be called directly.
371
+ * An estimation of the error is calculated.
372
+ *
373
+ * \param system The system function to solve, hence the r.h.s. of the ODE. It must fulfill the
374
+ * Simple System concept.
375
+ * \param in The state of the ODE which should be solved. in is not modified in this method
376
+ * \param dxdt_in The derivative of x at t. dxdt_in is not modified by this method
377
+ * \param t The value of the time, at which the step should be performed.
378
+ * \param out The result of the step is written in out.
379
+ * \param dxdt_out The result of the new derivative at time t+dt.
380
+ * \param dt The step size.
381
+ * \param xerr An estimation of the error.
382
+ */
383
+
384
+ /**
385
+ * \fn runge_kutta_dopri5::calc_state( time_type t , StateOut &x , const StateIn1 &x_old , const DerivIn1 &deriv_old , time_type t_old , const StateIn2 & , const DerivIn2 &deriv_new , time_type t_new ) const
386
+ * \brief This method is used for continuous output and it calculates the state `x` at a time `t` from the
387
+ * knowledge of two states `old_state` and `current_state` at time points `t_old` and `t_new`. It also uses
388
+ * internal variables to calculate the result. Hence this method must be called after two successful `do_step`
389
+ * calls.
390
+ */
391
+
392
+ /**
393
+ * \fn runge_kutta_dopri5::adjust_size( const StateIn &x )
394
+ * \brief Adjust the size of all temporaries in the stepper manually.
395
+ * \param x A state from which the size of the temporaries to be resized is deduced.
396
+ */
397
+
398
+ } // odeint
399
+ } // numeric
400
+ } // boost
401
+
402
+
403
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_DOPRI5_HPP_INCLUDED