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,168 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp
4
+
5
+ [begin_description]
6
+ Definition of the coefficients for the Adams-Bashforth method.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 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_STEPPER_DETAIL_ADAMS_BASHFORTH_COEFFICIENTS_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_COEFFICIENTS_HPP_INCLUDED
20
+
21
+ #include <array>
22
+
23
+
24
+ namespace boost {
25
+ namespace numeric {
26
+ namespace odeint {
27
+ namespace detail {
28
+
29
+ template< class Value , size_t Steps >
30
+ class adams_bashforth_coefficients ;
31
+
32
+ template< class Value >
33
+ class adams_bashforth_coefficients< Value , 1 > : public std::array< Value , 1 >
34
+ {
35
+ public:
36
+ adams_bashforth_coefficients( void )
37
+ : std::array< Value , 1 >()
38
+ {
39
+ (*this)[0] = static_cast< Value >( 1 );
40
+ }
41
+ };
42
+
43
+
44
+ template< class Value >
45
+ class adams_bashforth_coefficients< Value , 2 > : public std::array< Value , 2 >
46
+ {
47
+ public:
48
+ adams_bashforth_coefficients( void )
49
+ : std::array< Value , 2 >()
50
+ {
51
+ (*this)[0] = static_cast< Value >( 3 ) / static_cast< Value >( 2 );
52
+ (*this)[1] = -static_cast< Value >( 1 ) / static_cast< Value >( 2 );
53
+ }
54
+ };
55
+
56
+
57
+ template< class Value >
58
+ class adams_bashforth_coefficients< Value , 3 > : public std::array< Value , 3 >
59
+ {
60
+ public:
61
+ adams_bashforth_coefficients( void )
62
+ : std::array< Value , 3 >()
63
+ {
64
+ (*this)[0] = static_cast< Value >( 23 ) / static_cast< Value >( 12 );
65
+ (*this)[1] = -static_cast< Value >( 4 ) / static_cast< Value >( 3 );
66
+ (*this)[2] = static_cast< Value >( 5 ) / static_cast< Value >( 12 );
67
+ }
68
+ };
69
+
70
+
71
+ template< class Value >
72
+ class adams_bashforth_coefficients< Value , 4 > : public std::array< Value , 4 >
73
+ {
74
+ public:
75
+ adams_bashforth_coefficients( void )
76
+ : std::array< Value , 4 >()
77
+ {
78
+ (*this)[0] = static_cast< Value >( 55 ) / static_cast< Value >( 24 );
79
+ (*this)[1] = -static_cast< Value >( 59 ) / static_cast< Value >( 24 );
80
+ (*this)[2] = static_cast< Value >( 37 ) / static_cast< Value >( 24 );
81
+ (*this)[3] = -static_cast< Value >( 3 ) / static_cast< Value >( 8 );
82
+ }
83
+ };
84
+
85
+
86
+ template< class Value >
87
+ class adams_bashforth_coefficients< Value , 5 > : public std::array< Value , 5 >
88
+ {
89
+ public:
90
+ adams_bashforth_coefficients( void )
91
+ : std::array< Value , 5 >()
92
+ {
93
+ (*this)[0] = static_cast< Value >( 1901 ) / static_cast< Value >( 720 );
94
+ (*this)[1] = -static_cast< Value >( 1387 ) / static_cast< Value >( 360 );
95
+ (*this)[2] = static_cast< Value >( 109 ) / static_cast< Value >( 30 );
96
+ (*this)[3] = -static_cast< Value >( 637 ) / static_cast< Value >( 360 );
97
+ (*this)[4] = static_cast< Value >( 251 ) / static_cast< Value >( 720 );
98
+ }
99
+ };
100
+
101
+
102
+ template< class Value >
103
+ class adams_bashforth_coefficients< Value , 6 > : public std::array< Value , 6 >
104
+ {
105
+ public:
106
+ adams_bashforth_coefficients( void )
107
+ : std::array< Value , 6 >()
108
+ {
109
+ (*this)[0] = static_cast< Value >( 4277 ) / static_cast< Value >( 1440 );
110
+ (*this)[1] = -static_cast< Value >( 2641 ) / static_cast< Value >( 480 );
111
+ (*this)[2] = static_cast< Value >( 4991 ) / static_cast< Value >( 720 );
112
+ (*this)[3] = -static_cast< Value >( 3649 ) / static_cast< Value >( 720 );
113
+ (*this)[4] = static_cast< Value >( 959 ) / static_cast< Value >( 480 );
114
+ (*this)[5] = -static_cast< Value >( 95 ) / static_cast< Value >( 288 );
115
+ }
116
+ };
117
+
118
+
119
+ template< class Value >
120
+ class adams_bashforth_coefficients< Value , 7 > : public std::array< Value , 7 >
121
+ {
122
+ public:
123
+ adams_bashforth_coefficients( void )
124
+ : std::array< Value , 7 >()
125
+ {
126
+ (*this)[0] = static_cast< Value >( 198721 ) / static_cast< Value >( 60480 );
127
+ (*this)[1] = -static_cast< Value >( 18637 ) / static_cast< Value >( 2520 );
128
+ (*this)[2] = static_cast< Value >( 235183 ) / static_cast< Value >( 20160 );
129
+ (*this)[3] = -static_cast< Value >( 10754 ) / static_cast< Value >( 945 );
130
+ (*this)[4] = static_cast< Value >( 135713 ) / static_cast< Value >( 20160 );
131
+ (*this)[5] = -static_cast< Value >( 5603 ) / static_cast< Value >( 2520 );
132
+ (*this)[6] = static_cast< Value >( 19087 ) / static_cast< Value >( 60480 );
133
+ }
134
+ };
135
+
136
+
137
+ template< class Value >
138
+ class adams_bashforth_coefficients< Value , 8 > : public std::array< Value , 8 >
139
+ {
140
+ public:
141
+ adams_bashforth_coefficients( void )
142
+ : std::array< Value , 8 >()
143
+ {
144
+ (*this)[0] = static_cast< Value >( 16083 ) / static_cast< Value >( 4480 );
145
+ (*this)[1] = -static_cast< Value >( 1152169 ) / static_cast< Value >( 120960 );
146
+ (*this)[2] = static_cast< Value >( 242653 ) / static_cast< Value >( 13440 );
147
+ (*this)[3] = -static_cast< Value >( 296053 ) / static_cast< Value >( 13440 );
148
+ (*this)[4] = static_cast< Value >( 2102243 ) / static_cast< Value >( 120960 );
149
+ (*this)[5] = -static_cast< Value >( 115747 ) / static_cast< Value >( 13440 );
150
+ (*this)[6] = static_cast< Value >( 32863 ) / static_cast< Value >( 13440 );
151
+ (*this)[7] = -static_cast< Value >( 5257 ) / static_cast< Value >( 17280 );
152
+ }
153
+ };
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+ } // detail
162
+ } // odeint
163
+ } // numeric
164
+ } // boost
165
+
166
+
167
+
168
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_COEFFICIENTS_HPP_INCLUDED
@@ -0,0 +1,148 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp
4
+
5
+ [begin_description]
6
+ Algebra caller for the Adams Moulton method.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 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_ADAMS_MOULTON_CALL_ALGEBRA_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_CALL_ALGEBRA_HPP_INCLUDED
20
+
21
+ #include <cstddef>
22
+
23
+ namespace boost {
24
+ namespace numeric {
25
+ namespace odeint {
26
+ namespace detail {
27
+
28
+ template< size_t Step , class Algebra , class Operations >
29
+ struct adams_moulton_call_algebra;
30
+
31
+ template< class Algebra , class Operations >
32
+ struct adams_moulton_call_algebra< 1 , Algebra , Operations >
33
+ {
34
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
35
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage& /* steps */ , const Coefficients &coef , Time dt ) const
36
+ {
37
+ typedef typename Coefficients::value_type value_type;
38
+ algebra.for_each3( out , in , dxdt , typename Operations::template scale_sum2< value_type , Time >( 1.0 , dt * coef[0] ) );
39
+ }
40
+ };
41
+
42
+
43
+ template< class Algebra , class Operations >
44
+ struct adams_moulton_call_algebra< 2 , Algebra , Operations >
45
+ {
46
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
47
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
48
+ {
49
+ typedef typename Coefficients::value_type value_type;
50
+ algebra.for_each4( out , in , dxdt , steps[0].m_v ,
51
+ typename Operations::template scale_sum3< value_type , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] ) );
52
+ }
53
+ };
54
+
55
+
56
+ template< class Algebra , class Operations >
57
+ struct adams_moulton_call_algebra< 3 , Algebra , Operations >
58
+ {
59
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
60
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
61
+ {
62
+ typedef typename Coefficients::value_type value_type;
63
+ algebra.for_each5( out , in , dxdt , steps[0].m_v , steps[1].m_v ,
64
+ typename Operations::template scale_sum4< value_type , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] ) );
65
+ }
66
+ };
67
+
68
+
69
+ template< class Algebra , class Operations >
70
+ struct adams_moulton_call_algebra< 4 , Algebra , Operations >
71
+ {
72
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
73
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
74
+ {
75
+ typedef typename Coefficients::value_type value_type;
76
+ algebra.for_each6( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v ,
77
+ typename Operations::template scale_sum5< value_type , Time , Time , Time >(
78
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] ) );
79
+ }
80
+ };
81
+
82
+
83
+ template< class Algebra , class Operations >
84
+ struct adams_moulton_call_algebra< 5 , Algebra , Operations >
85
+ {
86
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
87
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
88
+ {
89
+ typedef typename Coefficients::value_type value_type;
90
+ algebra.for_each7( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v ,
91
+ typename Operations::template scale_sum6< value_type , Time , Time , Time , Time >(
92
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] ) );
93
+ }
94
+ };
95
+
96
+
97
+ template< class Algebra , class Operations >
98
+ struct adams_moulton_call_algebra< 6 , Algebra , Operations >
99
+ {
100
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
101
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
102
+ {
103
+ typedef typename Coefficients::value_type value_type;
104
+ algebra.for_each8( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v ,
105
+ typename Operations::template scale_sum7< value_type , Time , Time , Time , Time , Time >(
106
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] ) );
107
+ }
108
+ };
109
+
110
+
111
+ template< class Algebra , class Operations >
112
+ struct adams_moulton_call_algebra< 7 , Algebra , Operations >
113
+ {
114
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
115
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
116
+ {
117
+ typedef typename Coefficients::value_type value_type;
118
+ algebra.for_each9( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v ,
119
+ typename Operations::template scale_sum8< value_type , Time , Time , Time , Time , Time , Time >(
120
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] ) );
121
+ }
122
+ };
123
+
124
+
125
+ template< class Algebra , class Operations >
126
+ struct adams_moulton_call_algebra< 8 , Algebra , Operations >
127
+ {
128
+ template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
129
+ void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
130
+ {
131
+ typedef typename Coefficients::value_type value_type;
132
+ algebra.for_each10( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v , steps[6].m_v ,
133
+ typename Operations::template scale_sum9< value_type , Time , Time , Time , Time , Time , Time , Time >(
134
+ 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] , dt * coef[7] ) );
135
+ }
136
+ };
137
+
138
+
139
+
140
+
141
+ } // detail
142
+ } // odeint
143
+ } // numeric
144
+ } // boost
145
+
146
+
147
+
148
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_CALL_ALGEBRA_HPP_INCLUDED
@@ -0,0 +1,168 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp
4
+
5
+ [begin_description]
6
+ Coefficients for the Adams Moulton method.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 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_STEPPER_DETAIL_ADAMS_MOULTON_COEFFICIENTS_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_COEFFICIENTS_HPP_INCLUDED
20
+
21
+
22
+ #include <array>
23
+
24
+
25
+ namespace boost {
26
+ namespace numeric {
27
+ namespace odeint {
28
+ namespace detail {
29
+
30
+ template< class Value , size_t Steps >
31
+ class adams_moulton_coefficients ;
32
+
33
+ template< class Value >
34
+ class adams_moulton_coefficients< Value , 1 > : public std::array< Value , 1 >
35
+ {
36
+ public:
37
+ adams_moulton_coefficients( void )
38
+ : std::array< Value , 1 >()
39
+ {
40
+ (*this)[0] = static_cast< Value >( 1 );
41
+ }
42
+ };
43
+
44
+
45
+ template< class Value >
46
+ class adams_moulton_coefficients< Value , 2 > : public std::array< Value , 2 >
47
+ {
48
+ public:
49
+ adams_moulton_coefficients( void )
50
+ : std::array< Value , 2 >()
51
+ {
52
+ (*this)[0] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
53
+ (*this)[1] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
54
+ }
55
+ };
56
+
57
+
58
+ template< class Value >
59
+ class adams_moulton_coefficients< Value , 3 > : public std::array< Value , 3 >
60
+ {
61
+ public:
62
+ adams_moulton_coefficients( void )
63
+ : std::array< Value , 3 >()
64
+ {
65
+ (*this)[0] = static_cast< Value >( 5 ) / static_cast< Value >( 12 );
66
+ (*this)[1] = static_cast< Value >( 2 ) / static_cast< Value >( 3 );
67
+ (*this)[2] = -static_cast< Value >( 1 ) / static_cast< Value >( 12 );
68
+ }
69
+ };
70
+
71
+
72
+ template< class Value >
73
+ class adams_moulton_coefficients< Value , 4 > : public std::array< Value , 4 >
74
+ {
75
+ public:
76
+ adams_moulton_coefficients( void )
77
+ : std::array< Value , 4 >()
78
+ {
79
+ (*this)[0] = static_cast< Value >( 3 ) / static_cast< Value >( 8 );
80
+ (*this)[1] = static_cast< Value >( 19 ) / static_cast< Value >( 24 );
81
+ (*this)[2] = -static_cast< Value >( 5 ) / static_cast< Value >( 24 );
82
+ (*this)[3] = static_cast< Value >( 1 ) / static_cast< Value >( 24 );
83
+ }
84
+ };
85
+
86
+
87
+ template< class Value >
88
+ class adams_moulton_coefficients< Value , 5 > : public std::array< Value , 5 >
89
+ {
90
+ public:
91
+ adams_moulton_coefficients( void )
92
+ : std::array< Value , 5 >()
93
+ {
94
+ (*this)[0] = static_cast< Value >( 251 ) / static_cast< Value >( 720 );
95
+ (*this)[1] = static_cast< Value >( 323 ) / static_cast< Value >( 360 );
96
+ (*this)[2] = -static_cast< Value >( 11 ) / static_cast< Value >( 30 );
97
+ (*this)[3] = static_cast< Value >( 53 ) / static_cast< Value >( 360 );
98
+ (*this)[4] = -static_cast< Value >( 19 ) / static_cast< Value >( 720 );
99
+ }
100
+ };
101
+
102
+
103
+ template< class Value >
104
+ class adams_moulton_coefficients< Value , 6 > : public std::array< Value , 6 >
105
+ {
106
+ public:
107
+ adams_moulton_coefficients( void )
108
+ : std::array< Value , 6 >()
109
+ {
110
+ (*this)[0] = static_cast< Value >( 95 ) / static_cast< Value >( 288 );
111
+ (*this)[1] = static_cast< Value >( 1427 ) / static_cast< Value >( 1440 );
112
+ (*this)[2] = -static_cast< Value >( 133 ) / static_cast< Value >( 240 );
113
+ (*this)[3] = static_cast< Value >( 241 ) / static_cast< Value >( 720 );
114
+ (*this)[4] = -static_cast< Value >( 173 ) / static_cast< Value >( 1440 );
115
+ (*this)[5] = static_cast< Value >( 3 ) / static_cast< Value >( 160 );
116
+ }
117
+ };
118
+
119
+ template< class Value >
120
+ class adams_moulton_coefficients< Value , 7 > : public std::array< Value , 7 >
121
+ {
122
+ public:
123
+ adams_moulton_coefficients( void )
124
+ : std::array< Value , 7 >()
125
+ {
126
+ (*this)[0] = static_cast< Value >( 19087 ) / static_cast< Value >( 60480 );
127
+ (*this)[1] = static_cast< Value >( 2713 ) / static_cast< Value >( 2520 );
128
+ (*this)[2] = -static_cast< Value >( 15487 ) / static_cast< Value >( 20160 );
129
+ (*this)[3] = static_cast< Value >( 586 ) / static_cast< Value >( 945 );
130
+ (*this)[4] = -static_cast< Value >( 6737 ) / static_cast< Value >( 20160 );
131
+ (*this)[5] = static_cast< Value >( 263 ) / static_cast< Value >( 2520 );
132
+ (*this)[6] = -static_cast< Value >( 863 ) / static_cast< Value >( 60480 );
133
+ }
134
+ };
135
+
136
+
137
+ template< class Value >
138
+ class adams_moulton_coefficients< Value , 8 > : public std::array< Value , 8 >
139
+ {
140
+ public:
141
+ adams_moulton_coefficients( void )
142
+ : std::array< Value , 8 >()
143
+ {
144
+ (*this)[0] = static_cast< Value >( 5257 ) / static_cast< Value >( 17280 );
145
+ (*this)[1] = static_cast< Value >( 139849 ) / static_cast< Value >( 120960 );
146
+ (*this)[2] = -static_cast< Value >( 4511 ) / static_cast< Value >( 4480 );
147
+ (*this)[3] = static_cast< Value >( 123133 ) / static_cast< Value >( 120960 );
148
+ (*this)[4] = -static_cast< Value >( 88547 ) / static_cast< Value >( 120960 );
149
+ (*this)[5] = static_cast< Value >( 1537 ) / static_cast< Value >( 4480 );
150
+ (*this)[6] = -static_cast< Value >( 11351 ) / static_cast< Value >( 120960 );
151
+ (*this)[7] = static_cast< Value >( 275 ) / static_cast< Value >( 24192 );
152
+ }
153
+ };
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+ } // detail
162
+ } // odeint
163
+ } // numeric
164
+ } // boost
165
+
166
+
167
+
168
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_COEFFICIENTS_HPP_INCLUDED
@@ -0,0 +1,207 @@
1
+ /*
2
+ boost/numeric/odeint/stepper/detail/adaptive_adams_coefficients.hpp
3
+
4
+ [begin_description]
5
+ Calculation of the coefficients for the adaptive adams 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_ADAPTIVE_ADAMS_COEFFICIENTS_HPP_INCLUDED
16
+ #define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAPTIVE_ADAMS_COEFFICIENTS_HPP_INCLUDED
17
+
18
+ #include <boost/numeric/odeint/stepper/detail/rotating_buffer.hpp>
19
+
20
+ #include <boost/numeric/odeint/util/state_wrapper.hpp>
21
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
22
+ #include <boost/numeric/odeint/util/resizer.hpp>
23
+
24
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
25
+ #include <boost/numeric/odeint/util/bind.hpp>
26
+
27
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
28
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
29
+
30
+ #include <array>
31
+
32
+ namespace boost {
33
+ namespace numeric {
34
+ namespace odeint {
35
+ namespace detail {
36
+
37
+ template<
38
+ size_t Steps,
39
+ class Deriv,
40
+ class Value = double,
41
+ class Time = double,
42
+ class Algebra = typename algebra_dispatcher< Deriv >::algebra_type,
43
+ class Operations = typename operations_dispatcher< Deriv >::operations_type,
44
+ class Resizer = initially_resizer
45
+ >
46
+ class adaptive_adams_coefficients
47
+ {
48
+ public:
49
+ static const size_t steps = Steps;
50
+
51
+ typedef unsigned short order_type;
52
+ static const order_type order_value = steps;
53
+
54
+ typedef Value value_type;
55
+ typedef Deriv deriv_type;
56
+ typedef Time time_type;
57
+
58
+ typedef state_wrapper< deriv_type > wrapped_deriv_type;
59
+ typedef rotating_buffer< time_type , steps+1 > time_storage_type;
60
+
61
+ typedef Algebra algebra_type;
62
+ typedef Operations operations_type;
63
+ typedef Resizer resizer_type;
64
+
65
+ typedef adaptive_adams_coefficients< Steps , Deriv , Value , Time , Algebra , Operations , Resizer > aac_type;
66
+
67
+ adaptive_adams_coefficients( const algebra_type &algebra = algebra_type())
68
+ :m_eo(1), m_steps_init(1), beta(), phi(), m_ns(0), m_time_storage(),
69
+ m_algebra(algebra),
70
+ m_phi_resizer()
71
+ {
72
+ for (size_t i=0; i<order_value+2; ++i)
73
+ {
74
+ c[i] = 1.0/(i+1);
75
+ c[c_size+i] = 1.0/((i+1)*(i+2));
76
+ }
77
+
78
+ g[0] = c[0];
79
+ g[1] = c[c_size];
80
+
81
+ beta[0][0] = 1;
82
+ beta[1][0] = 1;
83
+
84
+ gs[0] = 1.0;
85
+ gs[1] = -1.0/2;
86
+ gs[2] = -1.0/12;
87
+ gs[3] = -1.0/24;
88
+ gs[4] = -19.0/720;
89
+ gs[5] = -3.0/160;
90
+ gs[6] = -863.0/60480;
91
+ gs[7] = -275.0/24192;
92
+ gs[8] = -33953.0/3628800;
93
+ gs[9] = 35.0/4436;
94
+ gs[10] = 40.0/5891;
95
+ gs[11] = 37.0/6250;
96
+ gs[12] = 25.0/4771;
97
+ gs[13] = 40.0/8547;
98
+ };
99
+
100
+ void predict(time_type t, time_type dt)
101
+ {
102
+ using std::abs;
103
+
104
+ m_time_storage[0] = t;
105
+
106
+ if (abs(m_time_storage[0] - m_time_storage[1] - dt) > 1e-16 || m_eo >= m_ns)
107
+ {
108
+ m_ns = 0;
109
+ }
110
+ else if (m_ns < order_value + 2)
111
+ {
112
+ m_ns++;
113
+ }
114
+
115
+ for(size_t i=1+m_ns; i<m_eo+1 && i<m_steps_init; ++i)
116
+ {
117
+ time_type diff = m_time_storage[0] - m_time_storage[i];
118
+ beta[0][i] = beta[0][i-1]*(m_time_storage[0] + dt - m_time_storage[i-1])/diff;
119
+ }
120
+
121
+ for(size_t i=2+m_ns; i<m_eo+2 && i<m_steps_init+1; ++i)
122
+ {
123
+ time_type diff = m_time_storage[0] + dt - m_time_storage[i-1];
124
+ for(size_t j=0; j<m_eo+1-i+1; ++j)
125
+ {
126
+ c[c_size*i+j] = c[c_size*(i-1)+j] - c[c_size*(i-1)+j+1]*dt/diff;
127
+ }
128
+
129
+ g[i] = c[c_size*i];
130
+ }
131
+ };
132
+
133
+ void do_step(const deriv_type &dxdt, const int o = 0)
134
+ {
135
+ m_phi_resizer.adjust_size(dxdt, [this](auto&& arg) { return this->resize_phi_impl<deriv_type>(std::forward<decltype(arg)>(arg)); });
136
+
137
+ phi[o][0].m_v = dxdt;
138
+
139
+ for(size_t i=1; i<m_eo+3 && i<m_steps_init+2 && i<order_value+2; ++i)
140
+ {
141
+ if (o == 0)
142
+ {
143
+ this->m_algebra.for_each3(phi[o][i].m_v, phi[o][i-1].m_v, phi[o+1][i-1].m_v,
144
+ typename Operations::template scale_sum2<value_type, value_type>(1.0, -beta[o][i-1]));
145
+ }
146
+ else
147
+ {
148
+ this->m_algebra.for_each2(phi[o][i].m_v, phi[o][i-1].m_v,
149
+ typename Operations::template scale_sum1<value_type>(1.0));
150
+ }
151
+ }
152
+ };
153
+
154
+ void confirm()
155
+ {
156
+ beta.rotate();
157
+ phi.rotate();
158
+ m_time_storage.rotate();
159
+
160
+ if(m_steps_init < order_value+1)
161
+ {
162
+ ++m_steps_init;
163
+ }
164
+ };
165
+
166
+ void reset() { m_eo = 1; m_steps_init = 1; };
167
+
168
+ size_t m_eo;
169
+ size_t m_steps_init;
170
+
171
+ rotating_buffer<std::array<value_type, order_value+1>, 2> beta; // beta[0] = beta(n)
172
+ rotating_buffer<std::array<wrapped_deriv_type, order_value+2>, 3> phi; // phi[0] = phi(n+1)
173
+ std::array<value_type, order_value + 2> g;
174
+ std::array<value_type, 14> gs;
175
+
176
+ private:
177
+ template< class StateType >
178
+ bool resize_phi_impl( const StateType &x )
179
+ {
180
+ bool resized( false );
181
+
182
+ for(size_t i=0; i<(order_value + 2); ++i)
183
+ {
184
+ resized |= adjust_size_by_resizeability( phi[0][i], x, typename is_resizeable<deriv_type>::type() );
185
+ resized |= adjust_size_by_resizeability( phi[1][i], x, typename is_resizeable<deriv_type>::type() );
186
+ resized |= adjust_size_by_resizeability( phi[2][i], x, typename is_resizeable<deriv_type>::type() );
187
+ }
188
+ return resized;
189
+ };
190
+
191
+ size_t m_ns;
192
+
193
+ time_storage_type m_time_storage;
194
+ static const size_t c_size = order_value + 2;
195
+ std::array<value_type, c_size*c_size> c;
196
+
197
+ algebra_type m_algebra;
198
+
199
+ resizer_type m_phi_resizer;
200
+ };
201
+
202
+ } // detail
203
+ } // odeint
204
+ } // numeric
205
+ } // boost
206
+
207
+ #endif