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,240 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/rosenbrock4_controller.hpp
4
+
5
+ [begin_description]
6
+ Controller for the Rosenbrock4 method.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 Karsten Ahnert
10
+ Copyright 2011-2012 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_ROSENBROCK4_CONTROLLER_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_CONTROLLER_HPP_INCLUDED
21
+
22
+ #include <boost/config.hpp>
23
+ #include <boost/numeric/odeint/util/bind.hpp>
24
+
25
+ #include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
26
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
27
+
28
+ #include <boost/numeric/odeint/util/copy.hpp>
29
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
30
+ #include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
31
+
32
+ #include <boost/numeric/odeint/stepper/rosenbrock4.hpp>
33
+
34
+ namespace boost {
35
+ namespace numeric {
36
+ namespace odeint {
37
+
38
+ template< class Stepper >
39
+ class rosenbrock4_controller
40
+ {
41
+ private:
42
+
43
+
44
+ public:
45
+
46
+ typedef Stepper stepper_type;
47
+ typedef typename stepper_type::value_type value_type;
48
+ typedef typename stepper_type::state_type state_type;
49
+ typedef typename stepper_type::wrapped_state_type wrapped_state_type;
50
+ typedef typename stepper_type::time_type time_type;
51
+ typedef typename stepper_type::deriv_type deriv_type;
52
+ typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
53
+ typedef typename stepper_type::resizer_type resizer_type;
54
+ typedef controlled_stepper_tag stepper_category;
55
+
56
+ typedef rosenbrock4_controller< Stepper > controller_type;
57
+
58
+
59
+ rosenbrock4_controller( value_type atol = 1.0e-6 , value_type rtol = 1.0e-6 ,
60
+ const stepper_type &stepper = stepper_type() )
61
+ : m_stepper( stepper ) , m_atol( atol ) , m_rtol( rtol ) ,
62
+ m_max_dt( static_cast<time_type>(0) ) ,
63
+ m_first_step( true ) , m_err_old( 0.0 ) , m_dt_old( 0.0 ) ,
64
+ m_last_rejected( false )
65
+ { }
66
+
67
+ rosenbrock4_controller( value_type atol, value_type rtol, time_type max_dt,
68
+ const stepper_type &stepper = stepper_type() )
69
+ : m_stepper( stepper ) , m_atol( atol ) , m_rtol( rtol ) , m_max_dt( max_dt ) ,
70
+ m_first_step( true ) , m_err_old( 0.0 ) , m_dt_old( 0.0 ) ,
71
+ m_last_rejected( false )
72
+ { }
73
+
74
+ value_type error( const state_type &x , const state_type &xold , const state_type &xerr )
75
+ {
76
+ BOOST_USING_STD_MAX();
77
+ using std::abs;
78
+ using std::sqrt;
79
+
80
+ const size_t n = x.size();
81
+ value_type err = 0.0 , sk = 0.0;
82
+ for( size_t i=0 ; i<n ; ++i )
83
+ {
84
+ sk = m_atol + m_rtol * max BOOST_PREVENT_MACRO_SUBSTITUTION ( abs( xold[i] ) , abs( x[i] ) );
85
+ err += xerr[i] * xerr[i] / sk / sk;
86
+ }
87
+ return sqrt( err / value_type( n ) );
88
+ }
89
+
90
+ value_type last_error( void ) const
91
+ {
92
+ return m_err_old;
93
+ }
94
+
95
+
96
+
97
+
98
+ template< class System >
99
+ boost::numeric::odeint::controlled_step_result
100
+ try_step( System sys , state_type &x , time_type &t , time_type &dt )
101
+ {
102
+ m_xnew_resizer.adjust_size(x, [this](auto&& arg) { return this->resize_m_xnew<state_type>(std::forward<decltype(arg)>(arg)); });
103
+ boost::numeric::odeint::controlled_step_result res = try_step( sys , x , t , m_xnew.m_v , dt );
104
+ if( res == success )
105
+ {
106
+ boost::numeric::odeint::copy( m_xnew.m_v , x );
107
+ }
108
+ return res;
109
+ }
110
+
111
+
112
+ template< class System >
113
+ boost::numeric::odeint::controlled_step_result
114
+ try_step( System sys , const state_type &x , time_type &t , state_type &xout , time_type &dt )
115
+ {
116
+ if( m_max_dt != static_cast<time_type>(0) && detail::less_with_sign(m_max_dt, dt, dt) )
117
+ {
118
+ // given step size is bigger then max_dt
119
+ // set limit and return fail
120
+ dt = m_max_dt;
121
+ return fail;
122
+ }
123
+
124
+ BOOST_USING_STD_MIN();
125
+ BOOST_USING_STD_MAX();
126
+ using std::pow;
127
+
128
+ static const value_type safe = 0.9 , fac1 = 5.0 , fac2 = 1.0 / 6.0;
129
+
130
+ m_xerr_resizer.adjust_size(x, [this](auto&& arg) { return this->resize_m_xerr<state_type>(std::forward<decltype(arg)>(arg)); });
131
+
132
+ m_stepper.do_step( sys , x , t , xout , dt , m_xerr.m_v );
133
+ value_type err = error( xout , x , m_xerr.m_v );
134
+
135
+ value_type fac = max BOOST_PREVENT_MACRO_SUBSTITUTION (
136
+ fac2 , min BOOST_PREVENT_MACRO_SUBSTITUTION (
137
+ fac1 ,
138
+ static_cast< value_type >( pow( err , 0.25 ) / safe ) ) );
139
+ value_type dt_new = dt / fac;
140
+ if ( err <= 1.0 )
141
+ {
142
+ if( m_first_step )
143
+ {
144
+ m_first_step = false;
145
+ }
146
+ else
147
+ {
148
+ value_type fac_pred = ( m_dt_old / dt ) * pow( err * err / m_err_old , 0.25 ) / safe;
149
+ fac_pred = max BOOST_PREVENT_MACRO_SUBSTITUTION (
150
+ fac2 , min BOOST_PREVENT_MACRO_SUBSTITUTION ( fac1 , fac_pred ) );
151
+ fac = max BOOST_PREVENT_MACRO_SUBSTITUTION ( fac , fac_pred );
152
+ dt_new = dt / fac;
153
+ }
154
+
155
+ m_dt_old = dt;
156
+ m_err_old = max BOOST_PREVENT_MACRO_SUBSTITUTION ( static_cast< value_type >( 0.01 ) , err );
157
+ if( m_last_rejected )
158
+ dt_new = ( dt >= 0.0 ?
159
+ min BOOST_PREVENT_MACRO_SUBSTITUTION ( dt_new , dt ) :
160
+ max BOOST_PREVENT_MACRO_SUBSTITUTION ( dt_new , dt ) );
161
+ t += dt;
162
+ // limit step size to max_dt
163
+ if( m_max_dt != static_cast<time_type>(0) )
164
+ {
165
+ dt = detail::min_abs(m_max_dt, dt_new);
166
+ } else {
167
+ dt = dt_new;
168
+ }
169
+ m_last_rejected = false;
170
+ return success;
171
+ }
172
+ else
173
+ {
174
+ dt = dt_new;
175
+ m_last_rejected = true;
176
+ return fail;
177
+ }
178
+ }
179
+
180
+
181
+ template< class StateType >
182
+ void adjust_size( const StateType &x )
183
+ {
184
+ resize_m_xerr( x );
185
+ resize_m_xnew( x );
186
+ }
187
+
188
+
189
+
190
+ stepper_type& stepper( void )
191
+ {
192
+ return m_stepper;
193
+ }
194
+
195
+ const stepper_type& stepper( void ) const
196
+ {
197
+ return m_stepper;
198
+ }
199
+
200
+
201
+
202
+
203
+ protected:
204
+
205
+ template< class StateIn >
206
+ bool resize_m_xerr( const StateIn &x )
207
+ {
208
+ return adjust_size_by_resizeability( m_xerr , x , typename is_resizeable<state_type>::type() );
209
+ }
210
+
211
+ template< class StateIn >
212
+ bool resize_m_xnew( const StateIn &x )
213
+ {
214
+ return adjust_size_by_resizeability( m_xnew , x , typename is_resizeable<state_type>::type() );
215
+ }
216
+
217
+
218
+ stepper_type m_stepper;
219
+ resizer_type m_xerr_resizer;
220
+ resizer_type m_xnew_resizer;
221
+ wrapped_state_type m_xerr;
222
+ wrapped_state_type m_xnew;
223
+ value_type m_atol , m_rtol;
224
+ time_type m_max_dt;
225
+ bool m_first_step;
226
+ value_type m_err_old , m_dt_old;
227
+ bool m_last_rejected;
228
+ };
229
+
230
+
231
+
232
+
233
+
234
+
235
+ } // namespace odeint
236
+ } // namespace numeric
237
+ } // namespace boost
238
+
239
+
240
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_CONTROLLER_HPP_INCLUDED
@@ -0,0 +1,204 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp
4
+
5
+ [begin_description]
6
+ Dense output for Rosenbrock 4.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 Karsten Ahnert
10
+ Copyright 2011-2015 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_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
21
+
22
+
23
+ #include <utility>
24
+
25
+ #include <boost/numeric/odeint/util/bind.hpp>
26
+
27
+ #include <boost/numeric/odeint/stepper/rosenbrock4_controller.hpp>
28
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
29
+
30
+ #include <boost/numeric/odeint/integrate/max_step_checker.hpp>
31
+
32
+
33
+ namespace boost {
34
+ namespace numeric {
35
+ namespace odeint {
36
+
37
+ template< class ControlledStepper >
38
+ class rosenbrock4_dense_output
39
+ {
40
+
41
+ public:
42
+
43
+ typedef ControlledStepper controlled_stepper_type;
44
+ typedef typename unwrap_reference< controlled_stepper_type >::type unwrapped_controlled_stepper_type;
45
+ typedef typename unwrapped_controlled_stepper_type::stepper_type stepper_type;
46
+ typedef typename stepper_type::value_type value_type;
47
+ typedef typename stepper_type::state_type state_type;
48
+ typedef typename stepper_type::wrapped_state_type wrapped_state_type;
49
+ typedef typename stepper_type::time_type time_type;
50
+ typedef typename stepper_type::deriv_type deriv_type;
51
+ typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
52
+ typedef typename stepper_type::resizer_type resizer_type;
53
+ typedef dense_output_stepper_tag stepper_category;
54
+
55
+ typedef rosenbrock4_dense_output< ControlledStepper > dense_output_stepper_type;
56
+
57
+ rosenbrock4_dense_output( const controlled_stepper_type &stepper = controlled_stepper_type() )
58
+ : m_stepper( stepper ) ,
59
+ m_x1() , m_x2() ,
60
+ m_current_state_x1( true ) ,
61
+ m_t() , m_t_old() , m_dt()
62
+ {
63
+ }
64
+
65
+
66
+
67
+ template< class StateType >
68
+ void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
69
+ {
70
+ m_resizer.adjust_size(x0, [this](auto&& arg) { return this->resize_impl<StateType>(std::forward<decltype(arg)>(arg)); });
71
+ get_current_state() = x0;
72
+ m_t = t0;
73
+ m_dt = dt0;
74
+ }
75
+
76
+ template< class System >
77
+ std::pair< time_type , time_type > do_step( System system )
78
+ {
79
+ unwrapped_controlled_stepper_type &stepper = m_stepper;
80
+ failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
81
+ controlled_step_result res = fail;
82
+ m_t_old = m_t;
83
+ do
84
+ {
85
+ res = stepper.try_step( system , get_current_state() , m_t , get_old_state() , m_dt );
86
+ fail_checker(); // check for overflow of failed steps
87
+ }
88
+ while( res == fail );
89
+ stepper.stepper().prepare_dense_output();
90
+ this->toggle_current_state();
91
+ return std::make_pair( m_t_old , m_t );
92
+ }
93
+
94
+
95
+ /*
96
+ * The two overloads are needed in order to solve the forwarding problem.
97
+ */
98
+ template< class StateOut >
99
+ void calc_state( time_type t , StateOut &x )
100
+ {
101
+ unwrapped_controlled_stepper_type &stepper = m_stepper;
102
+ stepper.stepper().calc_state( t , x , get_old_state() , m_t_old , get_current_state() , m_t );
103
+ }
104
+
105
+ template< class StateOut >
106
+ void calc_state( time_type t , const StateOut &x )
107
+ {
108
+ unwrapped_controlled_stepper_type &stepper = m_stepper;
109
+ stepper.stepper().calc_state( t , x , get_old_state() , m_t_old , get_current_state() , m_t );
110
+ }
111
+
112
+
113
+ template< class StateType >
114
+ void adjust_size( const StateType &x )
115
+ {
116
+ unwrapped_controlled_stepper_type &stepper = m_stepper;
117
+ stepper.adjust_size( x );
118
+ resize_impl( x );
119
+ }
120
+
121
+
122
+
123
+
124
+ const state_type& current_state( void ) const
125
+ {
126
+ return get_current_state();
127
+ }
128
+
129
+ time_type current_time( void ) const
130
+ {
131
+ return m_t;
132
+ }
133
+
134
+ const state_type& previous_state( void ) const
135
+ {
136
+ return get_old_state();
137
+ }
138
+
139
+ time_type previous_time( void ) const
140
+ {
141
+ return m_t_old;
142
+ }
143
+
144
+ time_type current_time_step( void ) const
145
+ {
146
+ return m_dt;
147
+ }
148
+
149
+
150
+
151
+
152
+ private:
153
+
154
+ state_type& get_current_state( void )
155
+ {
156
+ return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
157
+ }
158
+
159
+ const state_type& get_current_state( void ) const
160
+ {
161
+ return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
162
+ }
163
+
164
+ state_type& get_old_state( void )
165
+ {
166
+ return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
167
+ }
168
+
169
+ const state_type& get_old_state( void ) const
170
+ {
171
+ return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
172
+ }
173
+
174
+ void toggle_current_state( void )
175
+ {
176
+ m_current_state_x1 = ! m_current_state_x1;
177
+ }
178
+
179
+
180
+ template< class StateIn >
181
+ bool resize_impl( const StateIn &x )
182
+ {
183
+ bool resized = false;
184
+ resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
185
+ resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
186
+ return resized;
187
+ }
188
+
189
+
190
+ controlled_stepper_type m_stepper;
191
+ resizer_type m_resizer;
192
+ wrapped_state_type m_x1 , m_x2;
193
+ bool m_current_state_x1;
194
+ time_type m_t , m_t_old , m_dt;
195
+ };
196
+
197
+
198
+
199
+ } // namespace odeint
200
+ } // namespace numeric
201
+ } // namespace boost
202
+
203
+
204
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
@@ -0,0 +1,181 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/runge_kutta4.hpp
4
+
5
+ [begin_description]
6
+ Implementation of the classical Runge-Kutta stepper with the generic stepper.
7
+ [end_description]
8
+
9
+ Copyright 2011-2013 Mario Mulansky
10
+ Copyright 2011-2013 Karsten Ahnert
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_RUNGE_KUTTA4_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA4_HPP_INCLUDED
20
+
21
+
22
+
23
+
24
+ #include <boost/fusion/container/vector.hpp>
25
+ #include <boost/fusion/container/generation/make_vector.hpp>
26
+
27
+ #include <boost/numeric/odeint/stepper/explicit_generic_rk.hpp>
28
+ #include <boost/numeric/odeint/algebra/range_algebra.hpp>
29
+ #include <boost/numeric/odeint/algebra/default_operations.hpp>
30
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
31
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
32
+
33
+ #include <array>
34
+
35
+ #include <boost/numeric/odeint/util/resizer.hpp>
36
+
37
+
38
+
39
+ namespace boost {
40
+ namespace numeric {
41
+ namespace odeint {
42
+
43
+ #ifndef DOXYGEN_SKIP
44
+ template< class Value = double >
45
+ struct rk4_coefficients_a1 : std::array< Value , 1 >
46
+ {
47
+ rk4_coefficients_a1( void )
48
+ {
49
+ (*this)[0] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
50
+ }
51
+ };
52
+
53
+ template< class Value = double >
54
+ struct rk4_coefficients_a2 : std::array< Value , 2 >
55
+ {
56
+ rk4_coefficients_a2( void )
57
+ {
58
+ (*this)[0] = static_cast<Value>(0);
59
+ (*this)[1] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
60
+ }
61
+ };
62
+
63
+
64
+ template< class Value = double >
65
+ struct rk4_coefficients_a3 : std::array< Value , 3 >
66
+ {
67
+ rk4_coefficients_a3( void )
68
+ {
69
+ (*this)[0] = static_cast<Value>(0);
70
+ (*this)[1] = static_cast<Value>(0);
71
+ (*this)[2] = static_cast<Value>(1);
72
+ }
73
+ };
74
+
75
+ template< class Value = double >
76
+ struct rk4_coefficients_b : std::array< Value , 4 >
77
+ {
78
+ rk4_coefficients_b( void )
79
+ {
80
+ (*this)[0] = static_cast<Value>(1)/static_cast<Value>(6);
81
+ (*this)[1] = static_cast<Value>(1)/static_cast<Value>(3);
82
+ (*this)[2] = static_cast<Value>(1)/static_cast<Value>(3);
83
+ (*this)[3] = static_cast<Value>(1)/static_cast<Value>(6);
84
+ }
85
+ };
86
+
87
+ template< class Value = double >
88
+ struct rk4_coefficients_c : std::array< Value , 4 >
89
+ {
90
+ rk4_coefficients_c( void )
91
+ {
92
+ (*this)[0] = static_cast<Value>(0);
93
+ (*this)[1] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
94
+ (*this)[2] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
95
+ (*this)[3] = static_cast<Value>(1);
96
+ }
97
+ };
98
+ #endif
99
+
100
+
101
+
102
+ template<
103
+ class State ,
104
+ class Value = double ,
105
+ class Deriv = State ,
106
+ class Time = Value ,
107
+ class Algebra = typename algebra_dispatcher< State >::algebra_type ,
108
+ class Operations = typename operations_dispatcher< State >::operations_type ,
109
+ class Resizer = initially_resizer
110
+ >
111
+ #ifndef DOXYGEN_SKIP
112
+ class runge_kutta4 : public explicit_generic_rk< 4 , 4 , State , Value , Deriv , Time ,
113
+ Algebra , Operations , Resizer >
114
+ #else
115
+ class runge_kutta4 : public explicit_generic_rk
116
+ #endif
117
+ {
118
+
119
+ public:
120
+
121
+ #ifndef DOXYGEN_SKIP
122
+ typedef explicit_generic_rk< 4 , 4 , State , Value , Deriv , Time ,
123
+ Algebra , Operations , Resizer > stepper_base_type;
124
+ #endif
125
+ typedef typename stepper_base_type::state_type state_type;
126
+ typedef typename stepper_base_type::value_type value_type;
127
+ typedef typename stepper_base_type::deriv_type deriv_type;
128
+ typedef typename stepper_base_type::time_type time_type;
129
+ typedef typename stepper_base_type::algebra_type algebra_type;
130
+ typedef typename stepper_base_type::operations_type operations_type;
131
+ typedef typename stepper_base_type::resizer_type resizer_type;
132
+
133
+ #ifndef DOXYGEN_SKIP
134
+ typedef typename stepper_base_type::wrapped_state_type wrapped_state_type;
135
+ typedef typename stepper_base_type::wrapped_deriv_type wrapped_deriv_type;
136
+ typedef typename stepper_base_type::stepper_type stepper_type;
137
+ #endif
138
+
139
+ runge_kutta4( const algebra_type &algebra = algebra_type() ) : stepper_base_type(
140
+ boost::fusion::make_vector( rk4_coefficients_a1<Value>() , rk4_coefficients_a2<Value>() , rk4_coefficients_a3<Value>() ) ,
141
+ rk4_coefficients_b<Value>() , rk4_coefficients_c<Value>() , algebra )
142
+ { }
143
+
144
+ };
145
+
146
+ /**
147
+ * \class runge_kutta4
148
+ * \brief The classical Runge-Kutta stepper of fourth order.
149
+ *
150
+ * The Runge-Kutta method of fourth order is one standard method for
151
+ * solving ordinary differential equations and is widely used, see also
152
+ * <a href="http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods">en.wikipedia.org/wiki/Runge-Kutta_methods</a>
153
+ * The method is explicit and fulfills the Stepper concept. Step size control
154
+ * or continuous output are not provided.
155
+ *
156
+ * This class derives from explicit_stepper_base and inherits its interface via CRTP (current recurring template pattern).
157
+ * Furthermore, it derivs from explicit_generic_rk which is a generic Runge-Kutta algorithm. For more details see
158
+ * explicit_stepper_base and explicit_generic_rk.
159
+ *
160
+ * \tparam State The state type.
161
+ * \tparam Value The value type.
162
+ * \tparam Deriv The type representing the time derivative of the state.
163
+ * \tparam Time The time representing the independent variable - the time.
164
+ * \tparam Algebra The algebra type.
165
+ * \tparam Operations The operations type.
166
+ * \tparam Resizer The resizer policy type.
167
+ */
168
+
169
+ /**
170
+ * \fn runge_kutta4::runge_kutta4( const algebra_type &algebra = algebra_type() )
171
+ * \brief Constructs the runge_kutta4 class. This constructor can be used as a default
172
+ * constructor if the algebra has a default constructor.
173
+ * \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
174
+ */
175
+
176
+ }
177
+ }
178
+ }
179
+
180
+
181
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA4_HPP_INCLUDED