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,161 @@
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 2012-2015 Mario Mulansky
10
+ Copyright 2012 Christoph Koke
11
+ Copyright 2012 Karsten Ahnert
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
+ #ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
20
+
21
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
22
+ #include <boost/numeric/odeint/stepper/stepper_categories.hpp>
23
+ #include <boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp>
24
+ #include <boost/numeric/odeint/util/unit_helper.hpp>
25
+
26
+ #include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
27
+
28
+ namespace boost {
29
+ namespace numeric {
30
+ namespace odeint {
31
+ namespace detail {
32
+
33
+ // forward declaration
34
+ template< class Stepper , class System , class State , class Time , class Observer >
35
+ size_t integrate_adaptive_checked(
36
+ Stepper stepper , System system , State &start_state ,
37
+ Time &start_time , Time end_time , Time &dt ,
38
+ Observer observer, controlled_stepper_tag
39
+ );
40
+
41
+
42
+ /* basic version */
43
+ template< class Stepper , class System , class State , class Time , class Observer>
44
+ Time integrate_n_steps(
45
+ Stepper stepper , System system , State &start_state ,
46
+ Time start_time , Time dt , size_t num_of_steps ,
47
+ Observer observer , stepper_tag )
48
+ {
49
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
50
+ typename odeint::unwrap_reference< Stepper >::type &st = stepper;
51
+
52
+ Time time = start_time;
53
+
54
+ for( size_t step = 0; step < num_of_steps ; ++step )
55
+ {
56
+ obs( start_state , time );
57
+ st.do_step( system , start_state , time , dt );
58
+ // direct computation of the time avoids error propagation happening when using time += dt
59
+ // we need clumsy type analysis to get boost units working here
60
+ time = start_time + static_cast< typename unit_value_type<Time>::type >( step+1 ) * dt;
61
+ }
62
+ obs( start_state , time );
63
+
64
+ return time;
65
+ }
66
+
67
+
68
+ /* controlled version */
69
+ template< class Stepper , class System , class State , class Time , class Observer >
70
+ Time integrate_n_steps(
71
+ Stepper stepper , System system , State &start_state ,
72
+ Time start_time , Time dt , size_t num_of_steps ,
73
+ Observer observer , controlled_stepper_tag )
74
+ {
75
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
76
+
77
+ Time time = start_time;
78
+ Time time_step = dt;
79
+
80
+ for( size_t step = 0; step < num_of_steps ; ++step )
81
+ {
82
+ obs( start_state , time );
83
+ // integrate_adaptive_checked uses the given checker to throw if an overflow occurs
84
+ detail::integrate_adaptive(stepper, system, start_state, time, static_cast<Time>(time + time_step), dt,
85
+ null_observer(), controlled_stepper_tag());
86
+ // direct computation of the time avoids error propagation happening when using time += dt
87
+ // we need clumsy type analysis to get boost units working here
88
+ time = start_time + static_cast< typename unit_value_type<Time>::type >(step+1) * time_step;
89
+ }
90
+ obs( start_state , time );
91
+
92
+ return time;
93
+ }
94
+
95
+
96
+ /* dense output version */
97
+ template< class Stepper , class System , class State , class Time , class Observer >
98
+ Time integrate_n_steps(
99
+ Stepper stepper , System system , State &start_state ,
100
+ Time start_time , Time dt , size_t num_of_steps ,
101
+ Observer observer , dense_output_stepper_tag )
102
+ {
103
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
104
+ typename odeint::unwrap_reference< Stepper >::type &st = stepper;
105
+
106
+ Time time = start_time;
107
+ const Time end_time = start_time + static_cast< typename unit_value_type<Time>::type >(num_of_steps) * dt;
108
+
109
+ st.initialize( start_state , time , dt );
110
+
111
+ size_t step = 0;
112
+
113
+ while( step < num_of_steps )
114
+ {
115
+ while( less_with_sign( time , st.current_time() , st.current_time_step() ) )
116
+ {
117
+ st.calc_state( time , start_state );
118
+ obs( start_state , time );
119
+ ++step;
120
+ // direct computation of the time avoids error propagation happening when using time += dt
121
+ // we need clumsy type analysis to get boost units working here
122
+ time = start_time + static_cast< typename unit_value_type<Time>::type >(step) * dt;
123
+ }
124
+
125
+ // we have not reached the end, do another real step
126
+ if( less_with_sign( static_cast<Time>(st.current_time()+st.current_time_step()) ,
127
+ end_time ,
128
+ st.current_time_step() ) )
129
+ {
130
+ st.do_step( system );
131
+ }
132
+ else if( less_with_sign( st.current_time() , end_time , st.current_time_step() ) )
133
+ { // do the last step ending exactly on the end point
134
+ st.initialize( st.current_state() , st.current_time() , static_cast<Time>(end_time - st.current_time()) );
135
+ st.do_step( system );
136
+ }
137
+ }
138
+
139
+ // make sure we really end exactly where we should end
140
+ while( st.current_time() < end_time )
141
+ {
142
+ if( less_with_sign( end_time ,
143
+ static_cast<Time>(st.current_time()+st.current_time_step()) ,
144
+ st.current_time_step() ) )
145
+ st.initialize( st.current_state() , st.current_time() , static_cast<Time>(end_time - st.current_time()) );
146
+ st.do_step( system );
147
+ }
148
+
149
+ // observation at final point
150
+ obs( st.current_state() , end_time );
151
+
152
+ return time;
153
+ }
154
+
155
+
156
+ }
157
+ }
158
+ }
159
+ }
160
+
161
+ #endif /* BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED */
@@ -0,0 +1,179 @@
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 2011-2015 Mario Mulansky
10
+ Copyright 2012 Karsten Ahnert
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_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
21
+
22
+ #include <stdexcept>
23
+
24
+ #include <boost/config.hpp>
25
+ #include <boost/throw_exception.hpp>
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/integrate/max_step_checker.hpp>
30
+
31
+
32
+ namespace boost {
33
+ namespace numeric {
34
+ namespace odeint {
35
+ namespace detail {
36
+
37
+
38
+
39
+ /*
40
+ * integrate_times for simple stepper
41
+ */
42
+ template<class Stepper, class System, class State, class TimeIterator, class Time, class Observer>
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 , stepper_tag
47
+ )
48
+ {
49
+ typedef typename odeint::unwrap_reference< Stepper >::type stepper_type;
50
+ typedef typename odeint::unwrap_reference< Observer >::type observer_type;
51
+
52
+ stepper_type &st = stepper;
53
+ observer_type &obs = observer;
54
+ typedef typename unit_value_type<Time>::type time_type;
55
+
56
+ size_t steps = 0;
57
+ Time current_dt = dt;
58
+ while( true )
59
+ {
60
+ Time current_time = *start_time++;
61
+ obs( start_state , current_time );
62
+ if( start_time == end_time )
63
+ break;
64
+ while( less_with_sign( current_time , static_cast<time_type>(*start_time) , current_dt ) )
65
+ {
66
+ current_dt = min_abs( dt , *start_time - current_time );
67
+ st.do_step( system , start_state , current_time , current_dt );
68
+ current_time += current_dt;
69
+ steps++;
70
+ }
71
+ }
72
+ return steps;
73
+ }
74
+
75
+ /*
76
+ * integrate_times for controlled stepper
77
+ */
78
+ template< class Stepper , class System , class State , class TimeIterator , class Time , class Observer >
79
+ size_t integrate_times(
80
+ Stepper stepper , System system , State &start_state ,
81
+ TimeIterator start_time , TimeIterator end_time , Time dt ,
82
+ Observer observer , controlled_stepper_tag
83
+ )
84
+ {
85
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
86
+ typename odeint::unwrap_reference< Stepper >::type &st = stepper;
87
+ typedef typename unit_value_type<Time>::type time_type;
88
+
89
+ failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
90
+ size_t steps = 0;
91
+ while( true )
92
+ {
93
+ Time current_time = *start_time++;
94
+ obs( start_state , current_time );
95
+ if( start_time == end_time )
96
+ break;
97
+ while( less_with_sign( current_time , static_cast<time_type>(*start_time) , dt ) )
98
+ {
99
+ // adjust stepsize to end up exactly at the observation point
100
+ Time current_dt = min_abs( dt , *start_time - current_time );
101
+ if( st.try_step( system , start_state , current_time , current_dt ) == success )
102
+ {
103
+ ++steps;
104
+ // successful step -> reset the fail counter, see #173
105
+ fail_checker.reset();
106
+ // continue with the original step size if dt was reduced due to observation
107
+ dt = max_abs( dt , current_dt );
108
+ }
109
+ else
110
+ {
111
+ fail_checker(); // check for possible overflow of failed steps in step size adjustment
112
+ dt = current_dt;
113
+ }
114
+ }
115
+ }
116
+ return steps;
117
+ }
118
+
119
+ /*
120
+ * integrate_times for dense output stepper
121
+ */
122
+ template< class Stepper , class System , class State , class TimeIterator , class Time , class Observer >
123
+ size_t integrate_times(
124
+ Stepper stepper , System system , State &start_state ,
125
+ TimeIterator start_time , TimeIterator end_time , Time dt ,
126
+ Observer observer , dense_output_stepper_tag
127
+ )
128
+ {
129
+ typename odeint::unwrap_reference< Observer >::type &obs = observer;
130
+ typename odeint::unwrap_reference< Stepper >::type &st = stepper;
131
+
132
+ typedef typename unit_value_type<Time>::type time_type;
133
+
134
+ if( start_time == end_time )
135
+ return 0;
136
+
137
+ TimeIterator last_time_iterator = end_time;
138
+ --last_time_iterator;
139
+ Time last_time_point = static_cast<time_type>(*last_time_iterator);
140
+
141
+ st.initialize( start_state , *start_time , dt );
142
+ obs( start_state , *start_time++ );
143
+
144
+ size_t count = 0;
145
+ while( start_time != end_time )
146
+ {
147
+ while( ( start_time != end_time ) && less_eq_with_sign( static_cast<time_type>(*start_time) , st.current_time() , st.current_time_step() ) )
148
+ {
149
+ st.calc_state( *start_time , start_state );
150
+ obs( start_state , *start_time );
151
+ start_time++;
152
+ }
153
+
154
+ // we have not reached the end, do another real step
155
+ if( less_eq_with_sign( st.current_time() + st.current_time_step() ,
156
+ last_time_point ,
157
+ st.current_time_step() ) )
158
+ {
159
+ st.do_step( system );
160
+ ++count;
161
+ }
162
+ else if( start_time != end_time )
163
+ { // do the last step ending exactly on the end point
164
+ st.initialize( st.current_state() , st.current_time() , last_time_point - st.current_time() );
165
+ st.do_step( system );
166
+ ++count;
167
+ }
168
+ }
169
+ return count;
170
+ }
171
+
172
+
173
+ } // namespace detail
174
+ } // namespace odeint
175
+ } // namespace numeric
176
+ } // namespace boost
177
+
178
+
179
+ #endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
@@ -0,0 +1,133 @@
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 2011-2013 Karsten Ahnert
10
+ Copyright 2011-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_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/integrate/null_observer.hpp>
26
+ #include <boost/numeric/odeint/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
+ template< class Value , class System , class State , class Time , class Observer >
52
+ size_t
53
+ integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
54
+ {
55
+ typedef controlled_runge_kutta< runge_kutta_dopri5< State , Value , State , Time > > stepper_type;
56
+ return integrate_adaptive( stepper_type() , system , start_state , start_time , end_time , dt , observer );
57
+ }
58
+
59
+
60
+
61
+
62
+ /*
63
+ * the two overloads are needed in order to solve the forwarding problem
64
+ */
65
+ template< class System , class State , class Time >
66
+ size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
67
+ {
68
+ return integrate( system , start_state , start_time , end_time , dt , null_observer() );
69
+ }
70
+
71
+ template< class Value , class System , class State , class Time >
72
+ size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
73
+ {
74
+ return integrate< Value >( system , start_state , start_time , end_time , dt , null_observer() );
75
+ }
76
+
77
+
78
+
79
+ /**
80
+ * \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
81
+ * \brief Integrates the ODE.
82
+ *
83
+ * Integrates the ODE given by system from start_time to end_time starting
84
+ * with start_state as initial condition and dt as initial time step.
85
+ * This function uses a dense output dopri5 stepper and performs an adaptive
86
+ * integration with step size control, thus dt changes during the integration.
87
+ * This method uses standard error bounds of 1E-6.
88
+ * After each step, the observer is called.
89
+ *
90
+ * \attention A second version of this function template exists which explicitly
91
+ * expects the value type as template parameter, i.e. integrate< double >( sys , x , t0 , t1 , dt , obs );
92
+ *
93
+ * \param system The system function to solve, hence the r.h.s. of the
94
+ * ordinary differential equation.
95
+ * \param start_state The initial state.
96
+ * \param start_time Start time of the integration.
97
+ * \param end_time End time of the integration.
98
+ * \param dt Initial step size, will be adjusted during the integration.
99
+ * \param observer Observer that will be called after each time step.
100
+ * \return The number of steps performed.
101
+ */
102
+
103
+
104
+ /**
105
+ * \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
106
+ * \brief Integrates the ODE without observer calls.
107
+ *
108
+ * Integrates the ODE given by system from start_time to end_time starting
109
+ * with start_state as initial condition and dt as initial time step.
110
+ * This function uses a dense output dopri5 stepper and performs an adaptive
111
+ * integration with step size control, thus dt changes during the integration.
112
+ * This method uses standard error bounds of 1E-6.
113
+ * No observer is called.
114
+ *
115
+ * \attention A second version of this function template exists which explicitly
116
+ * expects the value type as template parameter, i.e. integrate< double >( sys , x , t0 , t1 , dt );
117
+ *
118
+ * \param system The system function to solve, hence the r.h.s. of the
119
+ * ordinary differential equation.
120
+ * \param start_state The initial state.
121
+ * \param start_time Start time of the integration.
122
+ * \param end_time End time of the integration.
123
+ * \param dt Initial step size, will be adjusted during the integration.
124
+ * \return The number of steps performed.
125
+ */
126
+
127
+ } // namespace odeint
128
+ } // namespace numeric
129
+ } // namespace boost
130
+
131
+
132
+
133
+ #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 2011-2013 Karsten Ahnert
10
+ Copyright 2011-2015 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/integrate/null_observer.hpp>
23
+ #include <boost/numeric/odeint/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