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,121 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp
4
+
5
+ [begin_description]
6
+ Default Integrate adaptive implementation.
7
+ [end_description]
8
+
9
+ Copyright 2009-2011 Karsten Ahnert
10
+ Copyright 2009-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_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
20
+
21
+ #include <stdexcept>
22
+
23
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
24
+ #include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
25
+ #include <boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp>
26
+ #include <boost/numeric/odeint/iterator/adaptive_time_iterator.hpp>
27
+ #include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
28
+ #include <boost/numeric/odeint/util/bind.hpp>
29
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
30
+ #include <boost/numeric/odeint/util/copy.hpp>
31
+
32
+ #include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
33
+
34
+ namespace boost {
35
+ namespace numeric {
36
+ namespace odeint {
37
+ namespace detail {
38
+
39
+ // forward declaration
40
+ template< class Stepper , class System , class State , class Time , class Observer>
41
+ size_t integrate_const(
42
+ Stepper stepper , System system , State &start_state ,
43
+ Time start_time , Time end_time , Time dt ,
44
+ Observer observer , stepper_tag );
45
+
46
+ /*
47
+ * integrate_adaptive for simple stepper is basically an integrate_const + some last step
48
+ */
49
+ template< class Stepper , class System , class State , class Time , class Observer >
50
+ size_t integrate_adaptive(
51
+ Stepper stepper , System system , State &start_state ,
52
+ Time start_time , Time end_time , Time dt ,
53
+ Observer observer , stepper_tag
54
+ )
55
+ {
56
+ size_t steps = detail::integrate_const( stepper , system , start_state , start_time ,
57
+ end_time , dt , observer , stepper_tag() );
58
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
59
+ typename odeint::unwrap_reference< Stepper >::type &st = stepper;
60
+
61
+ Time end = start_time + dt*steps;
62
+ if( less_with_sign( end , end_time , dt ) )
63
+ { //make a last step to end exactly at end_time
64
+ st.do_step( system , start_state , end , end_time - end );
65
+ steps++;
66
+ obs( start_state , end_time );
67
+ }
68
+ return steps;
69
+ }
70
+
71
+
72
+ /*
73
+ * classical integrate adaptive
74
+ */
75
+ template< class Stepper , class System , class State , class Time , class Observer >
76
+ size_t integrate_adaptive(
77
+ Stepper stepper , System system , State &start_state ,
78
+ Time &start_time , Time end_time , Time &dt ,
79
+ Observer observer , controlled_stepper_tag
80
+ )
81
+ {
82
+ size_t obs_calls = 0;
83
+
84
+ boost::for_each( make_adaptive_time_range( stepper , system , start_state ,
85
+ start_time , end_time , dt ) ,
86
+ obs_caller< Observer >( obs_calls , observer ) );
87
+
88
+ return obs_calls-1;
89
+ }
90
+
91
+
92
+ /*
93
+ * integrate adaptive for dense output steppers
94
+ *
95
+ * step size control is used if the stepper supports it
96
+ */
97
+ template< class Stepper , class System , class State , class Time , class Observer >
98
+ size_t integrate_adaptive(
99
+ Stepper stepper , System system , State &start_state ,
100
+ Time start_time , Time end_time , Time dt ,
101
+ Observer observer , dense_output_stepper_tag )
102
+ {
103
+ size_t obs_calls = 0;
104
+
105
+ boost::for_each( make_adaptive_time_range( stepper , system , start_state ,
106
+ start_time , end_time , dt ) ,
107
+ obs_caller< Observer >( obs_calls , observer ) );
108
+
109
+ return obs_calls-1;
110
+ }
111
+
112
+
113
+
114
+
115
+ } // namespace detail
116
+ } // namespace odeint
117
+ } // namespace numeric
118
+ } // namespace boost
119
+
120
+
121
+ #endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
@@ -0,0 +1,111 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/integrate/detail/integrate_const.hpp
4
+
5
+ [begin_description]
6
+ integrate const implementation
7
+ [end_description]
8
+
9
+ Copyright 2009-2012 Karsten Ahnert
10
+ Copyright 2009-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
+ #ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_CONST_HPP_INCLUDED
18
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_CONST_HPP_INCLUDED
19
+
20
+ #include <boost/range/algorithm/for_each.hpp>
21
+
22
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
23
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
24
+ #include <boost/numeric/odeint/util/unit_helper.hpp>
25
+ #include <boost/numeric/odeint/iterator/const_step_time_iterator.hpp>
26
+ #include <boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp>
27
+ #include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
28
+ #include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
29
+
30
+ namespace boost {
31
+ namespace numeric {
32
+ namespace odeint {
33
+ namespace detail {
34
+
35
+ // forward declaration
36
+ template< class Stepper , class System , class State , class Time , class Observer >
37
+ size_t integrate_adaptive(
38
+ Stepper stepper , System system , State &start_state ,
39
+ Time &start_time , Time end_time , Time &dt ,
40
+ Observer observer , controlled_stepper_tag
41
+ );
42
+
43
+
44
+ template< class Stepper , class System , class State , class Time , class Observer >
45
+ size_t integrate_const(
46
+ Stepper stepper , System system , State &start_state ,
47
+ Time start_time , Time end_time , Time dt ,
48
+ Observer observer , stepper_tag
49
+ )
50
+ {
51
+ size_t obs_calls = 0;
52
+
53
+ boost::for_each( make_const_step_time_range( stepper , system , start_state ,
54
+ start_time , end_time , dt ) ,
55
+ // should we use traits<Stepper>::state_type here instead of State? NO!
56
+ obs_caller< Observer >( obs_calls , observer ) );
57
+
58
+ // step integration steps gives step+1 observer calls
59
+ return obs_calls-1;
60
+ }
61
+
62
+
63
+
64
+ template< class Stepper , class System , class State , class Time , class Observer >
65
+ size_t integrate_const(
66
+ Stepper stepper , System system , State &start_state ,
67
+ Time start_time , Time end_time , Time dt ,
68
+ Observer observer , controlled_stepper_tag
69
+ )
70
+ {
71
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
72
+
73
+ Time time = start_time;
74
+ const Time time_step = dt;
75
+ int step = 0;
76
+
77
+ while( less_eq_with_sign( static_cast<Time>(time+time_step) , end_time , dt ) )
78
+ {
79
+ obs( start_state , time );
80
+ detail::integrate_adaptive( stepper , system , start_state , time , time+time_step , dt ,
81
+ null_observer() , controlled_stepper_tag() );
82
+ // direct computation of the time avoids error propagation happening when using time += dt
83
+ // we need clumsy type analysis to get boost units working here
84
+ ++step;
85
+ time = start_time + static_cast< typename unit_value_type<Time>::type >(step) * time_step;
86
+ }
87
+ obs( start_state , time );
88
+
89
+ return step;
90
+ }
91
+
92
+
93
+ template< class Stepper , class System , class State , class Time , class Observer >
94
+ size_t integrate_const(
95
+ Stepper stepper , System system , State &start_state ,
96
+ Time start_time , Time end_time , Time dt ,
97
+ Observer observer , dense_output_stepper_tag
98
+ )
99
+ {
100
+ size_t obs_calls = 0;
101
+
102
+ boost::for_each( make_const_step_time_range( stepper , system , start_state ,
103
+ start_time , end_time , dt ) ,
104
+ obs_caller< Observer >( obs_calls , observer ) );
105
+ return obs_calls-1;
106
+ }
107
+
108
+
109
+ } } } }
110
+
111
+ #endif
@@ -0,0 +1,107 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp
4
+
5
+ [begin_description]
6
+ integrate steps implementation
7
+ [end_description]
8
+
9
+ Copyright 2009-2012 Karsten Ahnert
10
+ Copyright 2009-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
+ #ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
18
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
19
+
20
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
21
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
22
+ #include <boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp>
23
+ #include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
24
+ #include <boost/numeric/odeint/iterator/n_step_time_iterator.hpp>
25
+ #include <boost/numeric/odeint/util/unit_helper.hpp>
26
+
27
+ #include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
28
+
29
+ namespace boost {
30
+ namespace numeric {
31
+ namespace odeint {
32
+ namespace detail {
33
+
34
+ // forward declaration
35
+ template< class Stepper , class System , class State , class Time , class Observer >
36
+ size_t integrate_adaptive(
37
+ Stepper stepper , System system , State &start_state ,
38
+ Time &start_time , Time end_time , Time &dt ,
39
+ Observer observer , controlled_stepper_tag
40
+ );
41
+
42
+
43
+ /* basic version */
44
+ template< class Stepper , class System , class State , class Time , class Observer>
45
+ Time integrate_n_steps(
46
+ Stepper stepper , System system , State &start_state ,
47
+ Time start_time , Time dt , size_t num_of_steps ,
48
+ Observer observer , stepper_tag )
49
+ {
50
+ // ToDo: is there a better way to extract the final time?
51
+ Time t = start_time; // Assignment is only here to avoid warnings.
52
+ boost::for_each( make_n_step_time_range( stepper , system , start_state ,
53
+ start_time , dt , num_of_steps ) ,
54
+ obs_caller_time< Observer , Time >( t , observer ) );
55
+ return t;
56
+ }
57
+
58
+
59
+ /* controlled version */
60
+ template< class Stepper , class System , class State , class Time , class Observer>
61
+ Time integrate_n_steps(
62
+ Stepper stepper , System system , State &start_state ,
63
+ Time start_time , Time dt , size_t num_of_steps ,
64
+ Observer observer , controlled_stepper_tag )
65
+ {
66
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
67
+
68
+ Time time = start_time;
69
+ Time time_step = dt;
70
+
71
+ for( size_t step = 0; step < num_of_steps ; ++step )
72
+ {
73
+ obs( start_state , time );
74
+ detail::integrate_adaptive( stepper , system , start_state , time , static_cast<Time>(time+time_step) , dt ,
75
+ null_observer() , controlled_stepper_tag() );
76
+ // direct computation of the time avoids error propagation happening when using time += dt
77
+ // we need clumsy type analysis to get boost units working here
78
+ time = start_time + static_cast< typename unit_value_type<Time>::type >(step+1) * time_step;
79
+ }
80
+ obs( start_state , time );
81
+
82
+ return time;
83
+ }
84
+
85
+
86
+ /* dense output version */
87
+ template< class Stepper , class System , class State , class Time , class Observer>
88
+ Time integrate_n_steps(
89
+ Stepper stepper , System system , State &start_state ,
90
+ Time start_time , Time dt , size_t num_of_steps ,
91
+ Observer observer , dense_output_stepper_tag )
92
+ {
93
+ // ToDo: is there a better way to extract the final time?
94
+ Time t = start_time; // Assignment is only here to avoid warnings.
95
+ boost::for_each( make_n_step_time_range( stepper , system , start_state ,
96
+ start_time , dt , num_of_steps ) ,
97
+ obs_caller_time< Observer , Time >( t , observer ) );
98
+ return t;
99
+ }
100
+
101
+
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ #endif /* BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED */
@@ -0,0 +1,67 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/integrate/detail/integrate_times.hpp
4
+
5
+ [begin_description]
6
+ Default integrate times implementation.
7
+ [end_description]
8
+
9
+ Copyright 2009-2012 Karsten Ahnert
10
+ Copyright 2009-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_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
20
+
21
+ #include <stdexcept>
22
+
23
+ #include <boost/config.hpp>
24
+ #include <boost/range/algorithm/for_each.hpp>
25
+
26
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
27
+ #include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
28
+ #include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
29
+ #include <boost/numeric/odeint/iterator/times_time_iterator.hpp>
30
+ #include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
31
+
32
+ namespace boost {
33
+ namespace numeric {
34
+ namespace odeint {
35
+ namespace detail {
36
+
37
+
38
+
39
+ /*
40
+ * integrate_times for all steppers
41
+ */
42
+ template< class Stepper , class System , class State , class TimeIterator , class Time , class Observer , class StepperTag >
43
+ size_t integrate_times(
44
+ Stepper stepper , System system , State &start_state ,
45
+ TimeIterator start_time , TimeIterator end_time , Time dt ,
46
+ Observer observer , StepperTag
47
+ )
48
+ {
49
+ size_t obs_calls = 0;
50
+
51
+ boost::for_each( make_times_time_range( stepper , system , start_state ,
52
+ start_time , end_time , dt ) ,
53
+ // should we use traits<Stepper>::state_type here instead of State? NO!
54
+ obs_caller< Observer >( obs_calls , observer ) );
55
+
56
+ // step integration steps gives step+1 observer calls
57
+ return obs_calls-1;
58
+ }
59
+
60
+
61
+ } // namespace detail
62
+ } // namespace odeint
63
+ } // namespace numeric
64
+ } // namespace boost
65
+
66
+
67
+ #endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
@@ -0,0 +1,111 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/integrate/integrate.hpp
4
+
5
+ [begin_description]
6
+ Convenience methods which choose the stepper for the current ODE.
7
+ [end_description]
8
+
9
+ Copyright 2009-2011 Karsten Ahnert
10
+ Copyright 2009-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_INTEGRATE_INTEGRATE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_HPP_INCLUDED
20
+
21
+ #include <boost/utility/enable_if.hpp>
22
+
23
+ #include <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp>
24
+ #include <boost/numeric/odeint/stepper/controlled_runge_kutta.hpp>
25
+ #include <boost/numeric/odeint/iterator/integrate/null_observer.hpp>
26
+ #include <boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp>
27
+
28
+ // for has_value_type trait
29
+ #include <boost/numeric/odeint/algebra/detail/extract_value_type.hpp>
30
+
31
+
32
+ namespace boost {
33
+ namespace numeric {
34
+ namespace odeint {
35
+
36
+
37
+ /*
38
+ * ToDo :
39
+ *
40
+ * determine type of dxdt for units
41
+ *
42
+ */
43
+ template< class System , class State , class Time , class Observer >
44
+ typename boost::enable_if< typename has_value_type<State>::type , size_t >::type
45
+ integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
46
+ {
47
+ typedef controlled_runge_kutta< runge_kutta_dopri5< State , typename State::value_type , State , Time > > stepper_type;
48
+ return integrate_adaptive( stepper_type() , system , start_state , start_time , end_time , dt , observer );
49
+ }
50
+
51
+
52
+
53
+ /*
54
+ * the two overloads are needed in order to solve the forwarding problem
55
+ */
56
+ template< class System , class State , class Time >
57
+ size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
58
+ {
59
+ return integrate( system , start_state , start_time , end_time , dt , null_observer() );
60
+ }
61
+
62
+
63
+ /**
64
+ * \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
65
+ * \brief Integrates the ODE.
66
+ *
67
+ * Integrates the ODE given by system from start_time to end_time starting
68
+ * with start_state as initial condition and dt as initial time step.
69
+ * This function uses a dense output dopri5 stepper and performs an adaptive
70
+ * integration with step size control, thus dt changes during the integration.
71
+ * This method uses standard error bounds of 1E-6.
72
+ * After each step, the observer is called.
73
+ *
74
+ * \param system The system function to solve, hence the r.h.s. of the
75
+ * ordinary differential equation.
76
+ * \param start_state The initial state.
77
+ * \param start_time Start time of the integration.
78
+ * \param end_time End time of the integration.
79
+ * \param dt Initial step size, will be adjusted during the integration.
80
+ * \param observer Observer that will be called after each time step.
81
+ * \return The number of steps performed.
82
+ */
83
+
84
+
85
+ /**
86
+ * \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
87
+ * \brief Integrates the ODE without observer calls.
88
+ *
89
+ * Integrates the ODE given by system from start_time to end_time starting
90
+ * with start_state as initial condition and dt as initial time step.
91
+ * This function uses a dense output dopri5 stepper and performs an adaptive
92
+ * integration with step size control, thus dt changes during the integration.
93
+ * This method uses standard error bounds of 1E-6.
94
+ * No observer is called.
95
+ *
96
+ * \param system The system function to solve, hence the r.h.s. of the
97
+ * ordinary differential equation.
98
+ * \param start_state The initial state.
99
+ * \param start_time Start time of the integration.
100
+ * \param end_time End time of the integration.
101
+ * \param dt Initial step size, will be adjusted during the integration.
102
+ * \return The number of steps performed.
103
+ */
104
+
105
+ } // namespace odeint
106
+ } // namespace numeric
107
+ } // namespace boost
108
+
109
+
110
+
111
+ #endif // BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_HPP_INCLUDED
@@ -0,0 +1,127 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/integrate/integrate_adaptive.hpp
4
+
5
+ [begin_description]
6
+ Adaptive integration of ODEs.
7
+ [end_description]
8
+
9
+ Copyright 2009-2011 Karsten Ahnert
10
+ Copyright 2009-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_INTEGRATE_INTEGRATE_ADAPTIVE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_ADAPTIVE_HPP_INCLUDED
20
+
21
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
22
+ #include <boost/numeric/odeint/iterator/integrate/null_observer.hpp>
23
+ #include <boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp>
24
+
25
+ namespace boost {
26
+ namespace numeric {
27
+ namespace odeint {
28
+
29
+
30
+ /*
31
+ * the two overloads are needed in order to solve the forwarding problem
32
+ */
33
+ template< class Stepper , class System , class State , class Time , class Observer >
34
+ size_t integrate_adaptive(
35
+ Stepper stepper , System system , State &start_state ,
36
+ Time start_time , Time end_time , Time dt ,
37
+ Observer observer )
38
+ {
39
+ typedef typename odeint::unwrap_reference< Stepper >::type::stepper_category stepper_category;
40
+ return detail::integrate_adaptive(
41
+ stepper , system , start_state ,
42
+ start_time , end_time , dt ,
43
+ observer , stepper_category() );
44
+
45
+ /*
46
+ * Suggestion for a new extendable version:
47
+ *
48
+ * integrator_adaptive< Stepper , System, State , Time , Observer , typename Stepper::stepper_category > integrator;
49
+ * return integrator.run( stepper , system , start_state , start_time , end_time , dt , observer );
50
+ */
51
+ }
52
+
53
+ /**
54
+ * \brief Second version to solve the forwarding problem,
55
+ * can be called with Boost.Range as start_state.
56
+ */
57
+ template< class Stepper , class System , class State , class Time , class Observer >
58
+ size_t integrate_adaptive(
59
+ Stepper stepper , System system , const State &start_state ,
60
+ Time start_time , Time end_time , Time dt ,
61
+ Observer observer )
62
+ {
63
+ typedef typename odeint::unwrap_reference< Stepper >::type::stepper_category stepper_category;
64
+ return detail::integrate_adaptive(
65
+ stepper , system , start_state ,
66
+ start_time , end_time , dt ,
67
+ observer , stepper_category() );
68
+ }
69
+
70
+
71
+
72
+
73
+ /**
74
+ * \brief integrate_adaptive without an observer.
75
+ */
76
+ template< class Stepper , class System , class State , class Time >
77
+ size_t integrate_adaptive(
78
+ Stepper stepper , System system , State &start_state ,
79
+ Time start_time , Time end_time , Time dt )
80
+ {
81
+ return integrate_adaptive( stepper , system , start_state , start_time , end_time , dt , null_observer() );
82
+ }
83
+
84
+ /**
85
+ * \brief Second version to solve the forwarding problem,
86
+ * can be called with Boost.Range as start_state.
87
+ */
88
+ template< class Stepper , class System , class State , class Time >
89
+ size_t integrate_adaptive(
90
+ Stepper stepper , System system , const State &start_state ,
91
+ Time start_time , Time end_time , Time dt )
92
+ {
93
+ return integrate_adaptive( stepper , system , start_state , start_time , end_time , dt , null_observer() );
94
+ }
95
+
96
+
97
+ /************* DOXYGEN ************/
98
+
99
+ /**
100
+ * \fn integrate_adaptive( Stepper stepper , System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
101
+ * \brief Integrates the ODE with adaptive step size.
102
+ *
103
+ * This function integrates the ODE given by system with the given stepper.
104
+ * The observer is called after each step. If the stepper has no error
105
+ * control, the step size remains constant and the observer is called at
106
+ * equidistant time points t0+n*dt. If the stepper is a ControlledStepper,
107
+ * the step size is adjusted and the observer is called in non-equidistant
108
+ * intervals.
109
+ *
110
+ * \param stepper The stepper to be used for numerical integration.
111
+ * \param system Function/Functor defining the rhs of the ODE.
112
+ * \param start_state The initial condition x0.
113
+ * \param start_time The initial time t0.
114
+ * \param end_time The final integration time tend.
115
+ * \param dt The time step between observer calls, _not_ necessarily the
116
+ * time step of the integration.
117
+ * \param observer Function/Functor called at equidistant time intervals.
118
+ * \return The number of steps performed.
119
+ */
120
+
121
+ } // namespace odeint
122
+ } // namespace numeric
123
+ } // namespace boost
124
+
125
+
126
+
127
+ #endif // BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_ADAPTIVE_HPP_INCLUDED