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,252 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp
4
+
5
+ [begin_description]
6
+ Operations caller for the generic Runge Kutta method.
7
+ [end_description]
8
+
9
+ Copyright 2011 Mario Mulansky
10
+ Copyright 2011-2012 Karsten Ahnert
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_GENERIC_RK_OPERATIONS_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_GENERIC_RK_OPERATIONS_HPP_INCLUDED
20
+
21
+
22
+ namespace boost {
23
+ namespace numeric {
24
+ namespace odeint {
25
+ namespace detail {
26
+
27
+ template< size_t StageNumber , class Operations , class Fac , class Time >
28
+ struct generic_rk_scale_sum;
29
+
30
+ template< class Operations , class Fac , class Time >
31
+ struct generic_rk_scale_sum< 1 , Operations , Fac , Time > : public Operations::template scale_sum2< Fac , Time >
32
+ {
33
+ generic_rk_scale_sum( const std::array<Fac,1> &a , Time dt ) : Operations::template scale_sum2< Fac , Time >( 1.0 , a[0]*dt )
34
+ { }
35
+
36
+ typedef void result_type;
37
+ };
38
+
39
+
40
+ template< class Operations , class Fac , class Time >
41
+ struct generic_rk_scale_sum< 2 , Operations , Fac , Time > : public Operations::template scale_sum3< Fac , Time >
42
+ {
43
+ generic_rk_scale_sum( const std::array<Fac,2> &a , Time dt )
44
+ : Operations::template scale_sum3< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt )
45
+ { }
46
+
47
+ typedef void result_type;
48
+ };
49
+
50
+ template< class Operations , class Fac , class Time >
51
+ struct generic_rk_scale_sum< 3 , Operations , Fac , Time > : public Operations::template scale_sum4< Fac , Time >
52
+ {
53
+ generic_rk_scale_sum( const std::array<Fac,3> &a , Time dt )
54
+ : Operations::template scale_sum4< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt )
55
+ { }
56
+
57
+ typedef void result_type;
58
+ };
59
+
60
+ template< class Operations , class Fac , class Time >
61
+ struct generic_rk_scale_sum< 4 , Operations , Fac , Time > : public Operations::template scale_sum5< Fac , Time >
62
+ {
63
+ generic_rk_scale_sum( const std::array<Fac,4> &a , Time dt )
64
+ : Operations::template scale_sum5< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt )
65
+ { }
66
+
67
+ typedef void result_type;
68
+ };
69
+
70
+ template< class Operations , class Fac , class Time >
71
+ struct generic_rk_scale_sum< 5 , Operations , Fac , Time > : public Operations::template scale_sum6< Fac , Time >
72
+ {
73
+ generic_rk_scale_sum( const std::array<Fac,5> &a , Time dt )
74
+ : Operations::template scale_sum6< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt )
75
+ { }
76
+
77
+ typedef void result_type;
78
+ };
79
+
80
+ template< class Operations , class Fac , class Time >
81
+ struct generic_rk_scale_sum< 6 , Operations , Fac , Time > : public Operations::template scale_sum7< Fac , Time >
82
+ {
83
+ generic_rk_scale_sum( const std::array<Fac,6> &a , Time dt )
84
+ : Operations::template scale_sum7< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt , a[5]*dt )
85
+ { }
86
+
87
+ typedef void result_type;
88
+ };
89
+
90
+ template< class Operations , class Fac , class Time >
91
+ struct generic_rk_scale_sum< 7 , Operations , Fac , Time > : public Operations::template scale_sum8< Fac , Time >
92
+ {
93
+ generic_rk_scale_sum( const std::array<Fac,7> &a , Time dt )
94
+ : Operations::template scale_sum8< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt , a[5]*dt , a[6]*dt )
95
+ { }
96
+
97
+ typedef void result_type;
98
+ };
99
+
100
+ template< class Operations , class Fac , class Time >
101
+ struct generic_rk_scale_sum< 8 , Operations , Fac , Time > : public Operations::template scale_sum9< Fac , Time >
102
+ {
103
+ generic_rk_scale_sum( const std::array<Fac,8> &a , Time dt )
104
+ : Operations::template scale_sum9< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt ,
105
+ a[5]*dt , a[6]*dt , a[7]*dt )
106
+ { }
107
+
108
+ typedef void result_type;
109
+ };
110
+
111
+ template< class Operations , class Fac , class Time >
112
+ struct generic_rk_scale_sum< 9 , Operations , Fac , Time > : public Operations::template scale_sum10< Fac , Time >
113
+ {
114
+ generic_rk_scale_sum( const std::array<Fac,9> &a , Time dt )
115
+ : Operations::template scale_sum10< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt ,
116
+ a[5]*dt , a[6]*dt , a[7]*dt , a[8]*dt )
117
+ { }
118
+
119
+ typedef void result_type;
120
+ };
121
+
122
+ template< class Operations , class Fac , class Time >
123
+ struct generic_rk_scale_sum< 10 , Operations , Fac , Time > : public Operations::template scale_sum11< Fac , Time >
124
+ {
125
+ generic_rk_scale_sum( const std::array<Fac,10> &a , Time dt )
126
+ : Operations::template scale_sum11< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt ,
127
+ a[5]*dt , a[6]*dt , a[7]*dt , a[8]*dt , a[9]*dt )
128
+ { }
129
+
130
+ typedef void result_type;
131
+ };
132
+
133
+ template< class Operations , class Fac , class Time >
134
+ struct generic_rk_scale_sum< 11 , Operations , Fac , Time > : public Operations::template scale_sum12< Fac , Time >
135
+ {
136
+ generic_rk_scale_sum( const std::array<Fac,11> &a , Time dt )
137
+ : Operations::template scale_sum12< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt ,
138
+ a[5]*dt , a[6]*dt , a[7]*dt , a[8]*dt , a[9]*dt , a[10]*dt )
139
+ { }
140
+
141
+ typedef void result_type;
142
+ };
143
+
144
+ template< class Operations , class Fac , class Time >
145
+ struct generic_rk_scale_sum< 12 , Operations , Fac , Time > : public Operations::template scale_sum13< Fac , Time >
146
+ {
147
+ generic_rk_scale_sum( const std::array<Fac,12> &a , Time dt )
148
+ : Operations::template scale_sum13< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt ,
149
+ a[5]*dt , a[6]*dt , a[7]*dt , a[8]*dt , a[9]*dt , a[10]*dt , a[11]*dt )
150
+ { }
151
+
152
+ typedef void result_type;
153
+ };
154
+
155
+ template< class Operations , class Fac , class Time >
156
+ struct generic_rk_scale_sum< 13 , Operations , Fac , Time > : public Operations::template scale_sum14< Fac , Time >
157
+ {
158
+ generic_rk_scale_sum( const std::array<Fac,13> &a , Time dt )
159
+ : Operations::template scale_sum14< Fac , Time >( 1.0 , a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt ,
160
+ a[5]*dt , a[6]*dt , a[7]*dt , a[8]*dt , a[9]*dt , a[10]*dt , a[11]*dt , a[12]*dt )
161
+ { }
162
+
163
+ typedef void result_type;
164
+ };
165
+
166
+
167
+ // for error estimates
168
+ template< size_t StageNumber , class Operations , class Fac , class Time >
169
+ struct generic_rk_scale_sum_err;
170
+
171
+ template< class Operations , class Fac , class Time >
172
+ struct generic_rk_scale_sum_err< 1 , Operations , Fac , Time > : public Operations::template scale_sum1< Time >
173
+ {
174
+ generic_rk_scale_sum_err( const std::array<Fac,1> &a , Time dt ) : Operations::template scale_sum1< Time >( a[0]*dt )
175
+ { }
176
+
177
+ typedef void result_type;
178
+ };
179
+
180
+
181
+ template< class Operations , class Fac , class Time >
182
+ struct generic_rk_scale_sum_err< 2 , Operations , Fac , Time > : public Operations::template scale_sum2< Time >
183
+ {
184
+ generic_rk_scale_sum_err( const std::array<Fac,2> &a , Time dt )
185
+ : Operations::template scale_sum2< Time >( a[0]*dt , a[1]*dt )
186
+ { }
187
+
188
+ typedef void result_type;
189
+ };
190
+
191
+ template< class Operations , class Fac , class Time >
192
+ struct generic_rk_scale_sum_err< 3 , Operations , Fac , Time > : public Operations::template scale_sum3< Time >
193
+ {
194
+ generic_rk_scale_sum_err( const std::array<Fac,3> &a , Time dt )
195
+ : Operations::template scale_sum3< Time >( a[0]*dt , a[1]*dt , a[2]*dt )
196
+ { }
197
+
198
+ typedef void result_type;
199
+ };
200
+
201
+ template< class Operations , class Fac , class Time >
202
+ struct generic_rk_scale_sum_err< 4 , Operations , Fac , Time > : public Operations::template scale_sum4< Time >
203
+ {
204
+ generic_rk_scale_sum_err( const std::array<Fac,4> &a , Time dt )
205
+ : Operations::template scale_sum4< Time >( a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt )
206
+ { }
207
+
208
+ typedef void result_type;
209
+ };
210
+
211
+ template< class Operations , class Fac , class Time >
212
+ struct generic_rk_scale_sum_err< 5 , Operations , Fac , Time > : public Operations::template scale_sum5< Fac >
213
+ {
214
+ generic_rk_scale_sum_err( const std::array<Fac,5> &a , Time dt )
215
+ : Operations::template scale_sum5< Time >( a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt )
216
+ { }
217
+
218
+ typedef void result_type;
219
+ };
220
+
221
+
222
+ template< class Operations , class Fac , class Time >
223
+ struct generic_rk_scale_sum_err< 6 , Operations , Fac , Time > : public Operations::template scale_sum6< Time >
224
+ {
225
+ generic_rk_scale_sum_err( const std::array<Fac,6> &a , Time dt )
226
+ : Operations::template scale_sum6< Time >( a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt , a[5]*dt )
227
+ { }
228
+
229
+ typedef void result_type;
230
+ };
231
+
232
+
233
+ // for rk87
234
+ template< class Operations , class Fac , class Time >
235
+ struct generic_rk_scale_sum_err< 13 , Operations , Fac , Time > : public Operations::template scale_sum13< Time >
236
+ {
237
+ generic_rk_scale_sum_err( const std::array<Fac,13> &a , Time dt )
238
+ : Operations::template scale_sum13< Time >( a[0]*dt , a[1]*dt , a[2]*dt , a[3]*dt , a[4]*dt , a[5]*dt ,
239
+ a[6]*dt , a[7]*dt , a[8]*dt , a[9]*dt , a[10]*dt , a[11]*dt , a[12]*dt )
240
+ { }
241
+
242
+ typedef void result_type;
243
+ };
244
+
245
+
246
+ }
247
+ }
248
+ }
249
+ }
250
+
251
+
252
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_GENERIC_RK_OPERATIONS_HPP_INCLUDED
@@ -0,0 +1,199 @@
1
+ /*
2
+ boost/numeric/odeint/stepper/detail/pid_step_adjuster.hpp
3
+
4
+ [begin_description]
5
+ Implementation of the stepsize controller for the controlled adams bashforth moulton stepper.
6
+ [end_description]
7
+
8
+ Copyright 2017 Valentin Noah Hartmann
9
+
10
+ Distributed under the Boost Software License, Version 1.0.
11
+ (See accompanying file LICENSE_1_0.txt or
12
+ copy at http://www.boost.org/LICENSE_1_0.txt)
13
+ */
14
+
15
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_PID_STEP_ADJUSTER_HPP_INCLUDED
16
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_PID_STEP_ADJUSTER_HPP_INCLUDED
17
+
18
+ #include <boost/numeric/odeint/stepper/detail/rotating_buffer.hpp>
19
+ #include <boost/numeric/odeint/stepper/detail/pid_step_adjuster_coefficients.hpp>
20
+
21
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
22
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
23
+
24
+ #include <math.h>
25
+
26
+ namespace boost {
27
+ namespace numeric {
28
+ namespace odeint {
29
+ namespace detail {
30
+
31
+ template<
32
+ class Value = double,
33
+ class Time = double
34
+ >
35
+ struct pid_op
36
+ {
37
+ public:
38
+ typedef Value value_type;
39
+ typedef Time time_type;
40
+
41
+ const double beta1;
42
+ const double beta2;
43
+ const double beta3;
44
+ const double alpha1;
45
+ const double alpha2;
46
+
47
+ const time_type dt1;
48
+ const time_type dt2;
49
+ const time_type dt3;
50
+
51
+ const size_t m_steps;
52
+
53
+ pid_op(const size_t steps, const double _dt1, const double _dt2, const double _dt3,
54
+ const double b1 = 1, const double b2 = 0, const double b3 = 0, const double a1 = 0, const double a2 = 0)
55
+ :beta1(b1), beta2(b2), beta3(b3), alpha1(a1), alpha2(a2),
56
+ dt1(_dt1), dt2(_dt2), dt3(_dt3),
57
+ m_steps(steps)
58
+ {};
59
+
60
+ template<class T1, class T2, class T3, class T4>
61
+ void operator()(T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4)
62
+ {
63
+ using std::abs;
64
+
65
+ t1 = adapted_pow(abs(t2), -beta1/(m_steps + 1)) *
66
+ adapted_pow(abs(t3), -beta2/(m_steps + 1)) *
67
+ adapted_pow(abs(t4), -beta3/(m_steps + 1)) *
68
+ adapted_pow(abs(dt1/dt2), -alpha1/(m_steps + 1))*
69
+ adapted_pow(abs(dt2/dt3), -alpha2/(m_steps + 1));
70
+
71
+ t1 = 1/t1;
72
+ };
73
+
74
+ template<class T1, class T2>
75
+ void operator()(T1 &t1, const T2 &t2)
76
+ {
77
+ using std::abs;
78
+
79
+ t1 = adapted_pow(abs(t2), -beta1/(m_steps + 1));
80
+
81
+ t1 = 1/t1;
82
+ };
83
+
84
+ private:
85
+ template<class T>
86
+ inline value_type adapted_pow(T base, double exp)
87
+ {
88
+ if(exp == 0)
89
+ {
90
+ return 1;
91
+ }
92
+ else if (exp > 0)
93
+ {
94
+ return pow(base, exp);
95
+ }
96
+ else
97
+ {
98
+ return 1/pow(base, -exp);
99
+ }
100
+ };
101
+ };
102
+
103
+ template<
104
+ class State,
105
+ class Value = double,
106
+ class Deriv = State,
107
+ class Time = double,
108
+ class Algebra = typename algebra_dispatcher< State >::algebra_type,
109
+ class Operations = typename operations_dispatcher< Deriv >::operations_type,
110
+ size_t Type = BASIC
111
+ >
112
+ struct pid_step_adjuster
113
+ {
114
+ public:
115
+ static double threshold() { return 0.9; };
116
+
117
+ typedef State state_type;
118
+ typedef Value value_type;
119
+ typedef Deriv deriv_type;
120
+ typedef Time time_type;
121
+
122
+ typedef Algebra algebra_type;
123
+ typedef Operations operations_type;
124
+
125
+ typedef rotating_buffer<state_type, 3> error_storage_type;
126
+ typedef rotating_buffer<time_type, 3> time_storage_type;
127
+ typedef pid_step_adjuster_coefficients<Type> coeff_type;
128
+
129
+ pid_step_adjuster(double abs_tol = 1e-6, double rel_tol = 1e-6, time_type dtmax = 1.0)
130
+ :m_dtmax(dtmax), m_error_storage(), m_dt_storage(), m_init(0),
131
+ m_abs_tol(abs_tol), m_rel_tol(rel_tol)
132
+ {};
133
+
134
+ time_type adjust_stepsize(const size_t steps, time_type dt, state_type &err, const state_type &x, const deriv_type &dxdt)
135
+ {
136
+ using std::abs;
137
+ m_algebra.for_each3( err , x , dxdt ,
138
+ typename operations_type::template rel_error< value_type >( m_abs_tol , m_rel_tol , 1.0 , 1.0 * abs(get_unit_value( dt )) ) );
139
+
140
+ m_error_storage[0] = err;
141
+ m_dt_storage[0] = dt;
142
+
143
+ if(m_init >= 2)
144
+ {
145
+ m_algebra.for_each4(err, m_error_storage[0], m_error_storage[1], m_error_storage[2],
146
+ pid_op<>(steps, m_dt_storage[0], m_dt_storage[1], m_dt_storage[2],
147
+ m_coeff[0], m_coeff[1], m_coeff[2], m_coeff[3], m_coeff[4]));
148
+ }
149
+ else
150
+ {
151
+ m_algebra.for_each2(err, m_error_storage[0],
152
+ pid_op<>(steps, m_dt_storage[0], m_dt_storage[1], m_dt_storage[2], 0.7));
153
+ }
154
+
155
+ value_type ratio = 1 / m_algebra.norm_inf(err);
156
+
157
+ value_type kappa = 1.0;
158
+ ratio = 1.0 + kappa*atan((ratio - 1) / kappa);
159
+
160
+ if(ratio*dt >= m_dtmax)
161
+ {
162
+ ratio = m_dtmax / dt;
163
+ }
164
+
165
+ if(ratio >= threshold())
166
+ {
167
+ m_error_storage.rotate();
168
+ m_dt_storage.rotate();
169
+
170
+ ++m_init;
171
+ }
172
+ else
173
+ {
174
+ m_init = 0;
175
+ }
176
+
177
+ return dt * static_cast<time_type>(ratio);
178
+ };
179
+
180
+ private:
181
+ algebra_type m_algebra;
182
+
183
+ time_type m_dtmax;
184
+ error_storage_type m_error_storage;
185
+ time_storage_type m_dt_storage;
186
+
187
+ size_t m_init;
188
+ double m_abs_tol;
189
+ double m_rel_tol;
190
+
191
+ coeff_type m_coeff;
192
+ };
193
+
194
+ } // detail
195
+ } // odeint
196
+ } // numeric
197
+ } // boost
198
+
199
+ #endif
@@ -0,0 +1,180 @@
1
+ /*
2
+ boost/numeric/odeint/stepper/detail/pid_step_adjuster_coefficients.hpp
3
+
4
+ [begin_description]
5
+ Coefficients for the PID stepsize controller.
6
+ [end_description]
7
+
8
+ Copyright 2017 Valentin Noah Hartmann
9
+
10
+ Distributed under the Boost Software License, Version 1.0.
11
+ (See accompanying file LICENSE_1_0.txt or
12
+ copy at http://www.boost.org/LICENSE_1_0.txt)
13
+ */
14
+
15
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_PID_STEP_ADJUSTER_COEFFICIENTS_HPP_INCLUDED
16
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_PID_STEP_ADJUSTER_COEFFICIENTS_HPP_INCLUDED
17
+
18
+ #include <array>
19
+
20
+ namespace boost {
21
+ namespace numeric {
22
+ namespace odeint {
23
+ namespace detail {
24
+
25
+ enum adjuster_type{
26
+ BASIC,
27
+ H0211,
28
+ H211b,
29
+ H211PI,
30
+ H0312,
31
+ H312b,
32
+ H312PID,
33
+ H0321,
34
+ H321
35
+ };
36
+
37
+ template<int Type>
38
+ class pid_step_adjuster_coefficients;
39
+
40
+ template<>
41
+ class pid_step_adjuster_coefficients<BASIC> : public std::array<double, 5>
42
+ {
43
+ public:
44
+ pid_step_adjuster_coefficients()
45
+ : std::array<double, 5>()
46
+ {
47
+ (*this)[0] = 1.0;
48
+ (*this)[1] = 0.0;
49
+ (*this)[2] = 0.0;
50
+ (*this)[3] = 0.0;
51
+ (*this)[4] = 0.0;
52
+ }
53
+ };
54
+
55
+ template<>
56
+ class pid_step_adjuster_coefficients<H0211> : public std::array<double, 5>
57
+ {
58
+ public:
59
+ pid_step_adjuster_coefficients()
60
+ : std::array<double, 5>()
61
+ {
62
+ (*this)[0] = 1.0 / 2.0;
63
+ (*this)[1] = 1.0 / 2.0;
64
+ (*this)[2] = 0.0;
65
+ (*this)[3] = 1.0 / 2.0;
66
+ (*this)[4] = 0.0;
67
+ }
68
+ };
69
+
70
+ template<>
71
+ class pid_step_adjuster_coefficients<H211b> : public std::array<double, 5>
72
+ {
73
+ public:
74
+ pid_step_adjuster_coefficients()
75
+ : std::array<double, 5>()
76
+ {
77
+ (*this)[0] = 1.0 / 5.0;
78
+ (*this)[1] = 2.0 / 5.0;
79
+ (*this)[2] = 0.0;
80
+ (*this)[3] = 1.0 / 5.0;
81
+ (*this)[4] = 0.0;
82
+ }
83
+ };
84
+
85
+ template<>
86
+ class pid_step_adjuster_coefficients<H211PI> : public std::array<double, 5>
87
+ {
88
+ public:
89
+ pid_step_adjuster_coefficients()
90
+ : std::array<double, 5>()
91
+ {
92
+ (*this)[0] = 1.0 / 6.0;
93
+ (*this)[1] = 2.0 / 6.0;
94
+ (*this)[2] = 0.0;
95
+ (*this)[3] = 0.0;
96
+ (*this)[4] = 0.0;
97
+ }
98
+ };
99
+
100
+ template<>
101
+ class pid_step_adjuster_coefficients<H0312> : public std::array<double, 5>
102
+ {
103
+ public:
104
+ pid_step_adjuster_coefficients()
105
+ : std::array<double, 5>()
106
+ {
107
+ (*this)[0] = 1.0 / 4.0;
108
+ (*this)[1] = 2.0 / 2.0;
109
+ (*this)[2] = 1.0 / 4.0;
110
+ (*this)[3] = 3.0 / 4.0;
111
+ (*this)[4] = 1.0 / 4.0;
112
+ }
113
+ };
114
+
115
+ template<>
116
+ class pid_step_adjuster_coefficients<H312b> : public std::array<double, 5>
117
+ {
118
+ public:
119
+ pid_step_adjuster_coefficients()
120
+ : std::array<double, 5>()
121
+ {
122
+ (*this)[0] = 1.0 / 6.0;
123
+ (*this)[1] = 2.0 / 6.0;
124
+ (*this)[2] = 1.0 / 6.0;
125
+ (*this)[3] = 3.0 / 6.0;
126
+ (*this)[4] = 1.0 / 6.0;
127
+ }
128
+ };
129
+
130
+ template<>
131
+ class pid_step_adjuster_coefficients<H312PID> : public std::array<double, 5>
132
+ {
133
+ public:
134
+ pid_step_adjuster_coefficients()
135
+ : std::array<double, 5>()
136
+ {
137
+ (*this)[0] = 1.0 / 18.0;
138
+ (*this)[1] = 2.0 / 9.0;
139
+ (*this)[2] = 1.0 / 18.0;
140
+ (*this)[3] = 0.0;
141
+ (*this)[4] = 0.0;
142
+ }
143
+ };
144
+
145
+ template<>
146
+ class pid_step_adjuster_coefficients<H0321> : public std::array<double, 5>
147
+ {
148
+ public:
149
+ pid_step_adjuster_coefficients()
150
+ : std::array<double, 5>()
151
+ {
152
+ (*this)[0] = 5.0 / 4.0;
153
+ (*this)[1] = 1.0 / 2.0;
154
+ (*this)[2] = -3.0 / 4.0;
155
+ (*this)[3] = -1.0 / 4.0;
156
+ (*this)[4] = -3.0 / 4.0;
157
+ }
158
+ };
159
+
160
+ template<>
161
+ class pid_step_adjuster_coefficients<H321> : public std::array<double, 5>
162
+ {
163
+ public:
164
+ pid_step_adjuster_coefficients()
165
+ : std::array<double, 5>()
166
+ {
167
+ (*this)[0] = 1.0 / 3.0;
168
+ (*this)[1] = 1.0 / 18.0;
169
+ (*this)[2] = -5.0 / 18.0;
170
+ (*this)[3] = -5.0 / 16.0;
171
+ (*this)[4] = -1.0 / 6.0;
172
+ }
173
+ };
174
+
175
+ } // detail
176
+ } // odeint
177
+ } // numeric
178
+ } // boost
179
+
180
+ #endif
@@ -0,0 +1,84 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/detail/rotating_buffer.hpp
4
+
5
+ [begin_description]
6
+ Implemetation of a rotating (cyclic) buffer for use in the Adam Bashforth stepper
7
+ [end_description]
8
+
9
+ Copyright 2011 Karsten Ahnert
10
+ Copyright 2011 Mario Mulansky
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ROTATING_BUFFER_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ROTATING_BUFFER_HPP_INCLUDED
20
+
21
+ #include <array>
22
+
23
+ namespace boost {
24
+ namespace numeric {
25
+ namespace odeint {
26
+ namespace detail {
27
+
28
+ template< class T , size_t N >
29
+ class rotating_buffer
30
+ {
31
+ public:
32
+
33
+ typedef T value_type;
34
+ const static size_t dim = N;
35
+
36
+ rotating_buffer( void ) : m_first( 0 )
37
+ { }
38
+
39
+ size_t size( void ) const
40
+ {
41
+ return dim;
42
+ }
43
+
44
+ value_type& operator[]( size_t i )
45
+ {
46
+ return m_data[ get_index( i ) ];
47
+ }
48
+
49
+ const value_type& operator[]( size_t i ) const
50
+ {
51
+ return m_data[ get_index( i ) ];
52
+ }
53
+
54
+ void rotate( void )
55
+ {
56
+ if( m_first == 0 )
57
+ m_first = dim-1;
58
+ else
59
+ --m_first;
60
+ }
61
+
62
+ protected:
63
+
64
+ value_type m_data[N];
65
+
66
+ private:
67
+
68
+ size_t get_index( size_t i ) const
69
+ {
70
+ return ( ( i + m_first ) % dim );
71
+ }
72
+
73
+ size_t m_first;
74
+
75
+ };
76
+
77
+
78
+ } // detail
79
+ } // odeint
80
+ } // numeric
81
+ } // boost
82
+
83
+
84
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ROTATING_BUFFER_HPP_INCLUDED