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,374 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/runge_kutta_fehlberg87.hpp
4
+
5
+ [begin_description]
6
+ Implementation of the Runge-Kutta-Fehlberg stepper with the generic stepper.
7
+ [end_description]
8
+
9
+ Copyright 2011-2013 Mario Mulansky
10
+ Copyright 2012-2013 Karsten Ahnert
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_FEHLBERG87_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_FEHLBERG87_HPP_INCLUDED
20
+
21
+
22
+ #include <boost/fusion/container/vector.hpp>
23
+ #include <boost/fusion/container/generation/make_vector.hpp>
24
+
25
+ #include <boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp>
26
+ #include <boost/numeric/odeint/algebra/range_algebra.hpp>
27
+ #include <boost/numeric/odeint/algebra/default_operations.hpp>
28
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
29
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
30
+
31
+ #include <array>
32
+
33
+ #include <boost/numeric/odeint/util/state_wrapper.hpp>
34
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
35
+ #include <boost/numeric/odeint/util/resizer.hpp>
36
+
37
+
38
+
39
+
40
+ namespace boost {
41
+ namespace numeric {
42
+ namespace odeint {
43
+
44
+
45
+ #ifndef DOXYGEN_SKIP
46
+ template< class Value = double >
47
+ struct rk78_coefficients_a1 : std::array< Value , 1 >
48
+ {
49
+ rk78_coefficients_a1( void )
50
+ {
51
+ (*this)[0] = static_cast< Value >( 2 )/static_cast< Value >( 27 );
52
+ }
53
+ };
54
+
55
+ template< class Value = double >
56
+ struct rk78_coefficients_a2 : std::array< Value , 2 >
57
+ {
58
+ rk78_coefficients_a2( void )
59
+ {
60
+ (*this)[0] = static_cast< Value >( 1 )/static_cast< Value >( 36 );
61
+ (*this)[1] = static_cast< Value >( 1 )/static_cast< Value >( 12 );
62
+ }
63
+ };
64
+
65
+
66
+ template< class Value = double >
67
+ struct rk78_coefficients_a3 : std::array< Value , 3 >
68
+ {
69
+ rk78_coefficients_a3( void )
70
+ {
71
+ (*this)[0] = static_cast< Value >( 1 )/static_cast< Value >( 24 );
72
+ (*this)[1] = static_cast< Value >( 0 );
73
+ (*this)[2] = static_cast< Value >( 1 )/static_cast< Value >( 8 );
74
+ }
75
+ };
76
+
77
+ template< class Value = double >
78
+ struct rk78_coefficients_a4 : std::array< Value , 4 >
79
+ {
80
+ rk78_coefficients_a4( void )
81
+ {
82
+ (*this)[0] = static_cast< Value >( 5 )/static_cast< Value >( 12 );
83
+ (*this)[1] = static_cast< Value >( 0 );
84
+ (*this)[2] = static_cast< Value >( -25 )/static_cast< Value >( 16 );
85
+ (*this)[3] = static_cast< Value >( 25 )/static_cast< Value >( 16 );
86
+ }
87
+ };
88
+
89
+ template< class Value = double >
90
+ struct rk78_coefficients_a5 : std::array< Value , 5 >
91
+ {
92
+ rk78_coefficients_a5( void )
93
+ {
94
+ (*this)[0] = static_cast< Value >( 1 )/static_cast< Value >( 20 );
95
+ (*this)[1] = static_cast< Value >( 0 );
96
+ (*this)[2] = static_cast< Value >( 0 );
97
+ (*this)[3] = static_cast< Value >( 1 )/static_cast< Value >( 4 );
98
+ (*this)[4] = static_cast< Value >( 1 )/static_cast< Value >( 5 );
99
+ }
100
+ };
101
+
102
+
103
+ template< class Value = double >
104
+ struct rk78_coefficients_a6 : std::array< Value , 6 >
105
+ {
106
+ rk78_coefficients_a6( void )
107
+ {
108
+ (*this)[0] = static_cast< Value >( -25 )/static_cast< Value >( 108 );
109
+ (*this)[1] = static_cast< Value >( 0 );
110
+ (*this)[2] = static_cast< Value >( 0 );
111
+ (*this)[3] = static_cast< Value >( 125 )/static_cast< Value >( 108 );
112
+ (*this)[4] = static_cast< Value >( -65 )/static_cast< Value >( 27 );
113
+ (*this)[5] = static_cast< Value >( 125 )/static_cast< Value >( 54 );
114
+ }
115
+ };
116
+
117
+ template< class Value = double >
118
+ struct rk78_coefficients_a7 : std::array< Value , 7 >
119
+ {
120
+ rk78_coefficients_a7( void )
121
+ {
122
+ (*this)[0] = static_cast< Value >( 31 )/static_cast< Value >( 300 );
123
+ (*this)[1] = static_cast< Value >( 0 );
124
+ (*this)[2] = static_cast< Value >( 0 );
125
+ (*this)[3] = static_cast< Value >( 0 );
126
+ (*this)[4] = static_cast< Value >( 61 )/static_cast< Value >( 225 );
127
+ (*this)[5] = static_cast< Value >( -2 )/static_cast< Value >( 9 );
128
+ (*this)[6] = static_cast< Value >( 13 )/static_cast< Value >( 900 );
129
+ }
130
+ };
131
+
132
+ template< class Value = double >
133
+ struct rk78_coefficients_a8 : std::array< Value , 8 >
134
+ {
135
+ rk78_coefficients_a8( void )
136
+ {
137
+ (*this)[0] = static_cast< Value >( 2 );
138
+ (*this)[1] = static_cast< Value >( 0 );
139
+ (*this)[2] = static_cast< Value >( 0 );
140
+ (*this)[3] = static_cast< Value >( -53 )/static_cast< Value >( 6 );
141
+ (*this)[4] = static_cast< Value >( 704 )/static_cast< Value >( 45 );
142
+ (*this)[5] = static_cast< Value >( -107 )/static_cast< Value >( 9 );
143
+ (*this)[6] = static_cast< Value >( 67 )/static_cast< Value >( 90 );
144
+ (*this)[7] = static_cast< Value >( 3 );
145
+ }
146
+ };
147
+
148
+ template< class Value = double >
149
+ struct rk78_coefficients_a9 : std::array< Value , 9 >
150
+ {
151
+ rk78_coefficients_a9( void )
152
+ {
153
+ (*this)[0] = static_cast< Value >( -91 )/static_cast< Value >( 108 );
154
+ (*this)[1] = static_cast< Value >( 0 );
155
+ (*this)[2] = static_cast< Value >( 0 );
156
+ (*this)[3] = static_cast< Value >( 23 )/static_cast< Value >( 108 );
157
+ (*this)[4] = static_cast< Value >( -976 )/static_cast< Value >( 135 );
158
+ (*this)[5] = static_cast< Value >( 311 )/static_cast< Value >( 54 );
159
+ (*this)[6] = static_cast< Value >( -19 )/static_cast< Value >( 60 );
160
+ (*this)[7] = static_cast< Value >( 17 )/static_cast< Value >( 6 );
161
+ (*this)[8] = static_cast< Value >( -1 )/static_cast< Value >( 12 );
162
+ }
163
+ };
164
+
165
+ template< class Value = double >
166
+ struct rk78_coefficients_a10 : std::array< Value , 10 >
167
+ {
168
+ rk78_coefficients_a10( void )
169
+ {
170
+ (*this)[0] = static_cast< Value >( 2383 )/static_cast< Value >( 4100 );
171
+ (*this)[1] = static_cast< Value >( 0 );
172
+ (*this)[2] = static_cast< Value >( 0 );
173
+ (*this)[3] = static_cast< Value >( -341 )/static_cast< Value >( 164 );
174
+ (*this)[4] = static_cast< Value >( 4496 )/static_cast< Value >( 1025 );
175
+ (*this)[5] = static_cast< Value >( -301 )/static_cast< Value >( 82 );
176
+ (*this)[6] = static_cast< Value >( 2133 )/static_cast< Value >( 4100 );
177
+ (*this)[7] = static_cast< Value >( 45 )/static_cast< Value >( 82 );
178
+ (*this)[8] = static_cast< Value >( 45 )/static_cast< Value >( 164 );
179
+ (*this)[9] = static_cast< Value >( 18 )/static_cast< Value >( 41 );
180
+ }
181
+ };
182
+
183
+ template< class Value = double >
184
+ struct rk78_coefficients_a11 : std::array< Value , 11 >
185
+ {
186
+ rk78_coefficients_a11( void )
187
+ {
188
+ (*this)[0] = static_cast< Value >( 3 )/static_cast< Value >( 205 );
189
+ (*this)[1] = static_cast< Value >( 0 );
190
+ (*this)[2] = static_cast< Value >( 0 );
191
+ (*this)[3] = static_cast< Value >( 0 );
192
+ (*this)[4] = static_cast< Value >( 0 );
193
+ (*this)[5] = static_cast< Value >( -6 )/static_cast< Value >( 41 );
194
+ (*this)[6] = static_cast< Value >( -3 )/static_cast< Value >( 205 );
195
+ (*this)[7] = static_cast< Value >( -3 )/static_cast< Value >( 41 );
196
+ (*this)[8] = static_cast< Value >( 3 )/static_cast< Value >( 41 );
197
+ (*this)[9] = static_cast< Value >( 6 )/static_cast< Value >( 41 );
198
+ (*this)[10] = static_cast< Value >( 0 );
199
+ }
200
+ };
201
+
202
+ template< class Value = double >
203
+ struct rk78_coefficients_a12 : std::array< Value , 12 >
204
+ {
205
+ rk78_coefficients_a12( void )
206
+ {
207
+ (*this)[0] = static_cast< Value >( -1777 )/static_cast< Value >( 4100 );
208
+ (*this)[1] = static_cast< Value >( 0 );
209
+ (*this)[2] = static_cast< Value >( 0 );
210
+ (*this)[3] = static_cast< Value >( -341 )/static_cast< Value >( 164 );
211
+ (*this)[4] = static_cast< Value >( 4496 )/static_cast< Value >( 1025 );
212
+ (*this)[5] = static_cast< Value >( -289 )/static_cast< Value >( 82 );
213
+ (*this)[6] = static_cast< Value >( 2193 )/static_cast< Value >( 4100 );
214
+ (*this)[7] = static_cast< Value >( 51 )/static_cast< Value >( 82 );
215
+ (*this)[8] = static_cast< Value >( 33 )/static_cast< Value >( 164 );
216
+ (*this)[9] = static_cast< Value >( 12 )/static_cast< Value >( 41 );
217
+ (*this)[10] = static_cast< Value >( 0 );
218
+ (*this)[11] = static_cast< Value >( 1 );
219
+ }
220
+ };
221
+
222
+ template< class Value = double >
223
+ struct rk78_coefficients_b : std::array< Value , 13 >
224
+ {
225
+ rk78_coefficients_b( void )
226
+ {
227
+ (*this)[0] = static_cast< Value >( 0 );
228
+ (*this)[1] = static_cast< Value >( 0 );
229
+ (*this)[2] = static_cast< Value >( 0 );
230
+ (*this)[3] = static_cast< Value >( 0 );
231
+ (*this)[4] = static_cast< Value >( 0 );
232
+ (*this)[5] = static_cast< Value >( 34 )/static_cast<Value>( 105 );
233
+ (*this)[6] = static_cast< Value >( 9 )/static_cast<Value>( 35 );
234
+ (*this)[7] = static_cast< Value >( 9 )/static_cast<Value>( 35 );
235
+ (*this)[8] = static_cast< Value >( 9 )/static_cast<Value>( 280 );
236
+ (*this)[9] = static_cast< Value >( 9 )/static_cast<Value>( 280 );
237
+ (*this)[10] = static_cast< Value >( 0 );
238
+ (*this)[11] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
239
+ (*this)[12] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
240
+ }
241
+ };
242
+
243
+ template< class Value = double >
244
+ struct rk78_coefficients_db : std::array< Value , 13 >
245
+ {
246
+ rk78_coefficients_db( void )
247
+ {
248
+ (*this)[0] = static_cast< Value >( 0 ) - static_cast< Value >( 41 )/static_cast<Value>( 840 );
249
+ (*this)[1] = static_cast< Value >( 0 );
250
+ (*this)[2] = static_cast< Value >( 0 );
251
+ (*this)[3] = static_cast< Value >( 0 );
252
+ (*this)[4] = static_cast< Value >( 0 );
253
+ (*this)[5] = static_cast< Value >( 0 );
254
+ (*this)[6] = static_cast< Value >( 0 );
255
+ (*this)[7] = static_cast< Value >( 0 );
256
+ (*this)[8] = static_cast< Value >( 0 );
257
+ (*this)[9] = static_cast< Value >( 0 );
258
+ (*this)[10] = static_cast< Value >( 0 ) - static_cast< Value >( 41 )/static_cast<Value>( 840 );
259
+ (*this)[11] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
260
+ (*this)[12] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
261
+ }
262
+ };
263
+
264
+
265
+ template< class Value = double >
266
+ struct rk78_coefficients_c : std::array< Value , 13 >
267
+ {
268
+ rk78_coefficients_c( void )
269
+ {
270
+ (*this)[0] = static_cast< Value >( 0 );
271
+ (*this)[1] = static_cast< Value >( 2 )/static_cast< Value >( 27 );
272
+ (*this)[2] = static_cast< Value >( 1 )/static_cast< Value >( 9 );
273
+ (*this)[3] = static_cast< Value >( 1 )/static_cast<Value>( 6 );
274
+ (*this)[4] = static_cast< Value >( 5 )/static_cast<Value>( 12 );
275
+ (*this)[5] = static_cast< Value >( 1 )/static_cast<Value>( 2 );
276
+ (*this)[6] = static_cast< Value >( 5 )/static_cast<Value>( 6 );
277
+ (*this)[7] = static_cast< Value >( 1 )/static_cast<Value>( 6 );
278
+ (*this)[8] = static_cast< Value >( 2 )/static_cast<Value>( 3 );
279
+ (*this)[9] = static_cast< Value >( 1 )/static_cast<Value>( 3 );
280
+ (*this)[10] = static_cast< Value >( 1 );
281
+ (*this)[11] = static_cast< Value >( 0 );
282
+ (*this)[12] = static_cast< Value >( 1 );
283
+ }
284
+ };
285
+ #endif // DOXYGEN_SKIP
286
+
287
+
288
+
289
+
290
+
291
+ template<
292
+ class State ,
293
+ class Value = double ,
294
+ class Deriv = State ,
295
+ class Time = Value ,
296
+ class Algebra = typename algebra_dispatcher< State >::algebra_type ,
297
+ class Operations = typename operations_dispatcher< State >::operations_type ,
298
+ class Resizer = initially_resizer
299
+ >
300
+ #ifndef DOXYGEN_SKIP
301
+ class runge_kutta_fehlberg78 : public explicit_error_generic_rk< 13 , 8 , 8 , 7 , State , Value , Deriv , Time ,
302
+ Algebra , Operations , Resizer >
303
+ #else
304
+ class runge_kutta_fehlberg78 : public explicit_error_generic_rk
305
+ #endif
306
+ {
307
+
308
+ public:
309
+ #ifndef DOXYGEN_SKIP
310
+ typedef explicit_error_generic_rk< 13 , 8 , 8 , 7 , State , Value , Deriv , Time ,
311
+ Algebra , Operations , Resizer > stepper_base_type;
312
+ #endif
313
+ typedef typename stepper_base_type::state_type state_type;
314
+ typedef typename stepper_base_type::value_type value_type;
315
+ typedef typename stepper_base_type::deriv_type deriv_type;
316
+ typedef typename stepper_base_type::time_type time_type;
317
+ typedef typename stepper_base_type::algebra_type algebra_type;
318
+ typedef typename stepper_base_type::operations_type operations_type;
319
+ typedef typename stepper_base_type::resizer_type resizer_type;
320
+
321
+ #ifndef DOXYGEN_SKIP
322
+ typedef typename stepper_base_type::stepper_type stepper_type;
323
+ typedef typename stepper_base_type::wrapped_state_type wrapped_state_type;
324
+ typedef typename stepper_base_type::wrapped_deriv_type wrapped_deriv_type;
325
+ #endif // DOXYGEN_SKIP
326
+
327
+
328
+ runge_kutta_fehlberg78( const algebra_type &algebra = algebra_type() ) : stepper_base_type(
329
+ boost::fusion::make_vector( rk78_coefficients_a1<Value>() , rk78_coefficients_a2<Value>() , rk78_coefficients_a3<Value>() ,
330
+ rk78_coefficients_a4<Value>() , rk78_coefficients_a5<Value>() , rk78_coefficients_a6<Value>() ,
331
+ rk78_coefficients_a7<Value>() , rk78_coefficients_a8<Value>() , rk78_coefficients_a9<Value>() ,
332
+ rk78_coefficients_a10<Value>() , rk78_coefficients_a11<Value>() , rk78_coefficients_a12<Value>() ) ,
333
+ rk78_coefficients_b<Value>() , rk78_coefficients_db<Value>() , rk78_coefficients_c<Value>() , algebra )
334
+ { }
335
+ };
336
+
337
+
338
+
339
+ /************* DOXYGEN *************/
340
+
341
+ /**
342
+ * \class runge_kutta_fehlberg78
343
+ * \brief The Runge-Kutta Fehlberg 78 method.
344
+ *
345
+ * The Runge-Kutta Fehlberg 78 method is a standard method for high-precision applications.
346
+ * The method is explicit and fulfills the Error Stepper concept. Step size control
347
+ * is provided but continuous output is not available for this method.
348
+ *
349
+ * This class derives from explicit_error_stepper_base and inherits its interface via CRTP (current recurring template pattern).
350
+ * Furthermore, it derivs from explicit_error_generic_rk which is a generic Runge-Kutta algorithm with error estimation.
351
+ * For more details see explicit_error_stepper_base and explicit_error_generic_rk.
352
+ *
353
+ * \tparam State The state type.
354
+ * \tparam Value The value type.
355
+ * \tparam Deriv The type representing the time derivative of the state.
356
+ * \tparam Time The time representing the independent variable - the time.
357
+ * \tparam Algebra The algebra type.
358
+ * \tparam Operations The operations type.
359
+ * \tparam Resizer The resizer policy type.
360
+ */
361
+
362
+
363
+ /**
364
+ * \fn runge_kutta_fehlberg78::runge_kutta_fehlberg78( const algebra_type &algebra )
365
+ * \brief Constructs the runge_kutta_cash_fehlberg78 class. This constructor can be used as a default
366
+ * constructor if the algebra has a default constructor.
367
+ * \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
368
+ */
369
+
370
+ }
371
+ }
372
+ }
373
+
374
+ #endif //BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_FEHLBERG87_HPP_INCLUDED
@@ -0,0 +1,66 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/stepper_categories.hpp
4
+
5
+ [begin_description]
6
+ Definition of all stepper categories.
7
+ [end_description]
8
+
9
+ Copyright 2010-2011 Mario Mulansky
10
+ Copyright 2010-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_STEPPER_CATEGORIES_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED
20
+
21
+ namespace boost {
22
+ namespace numeric {
23
+ namespace odeint {
24
+
25
+
26
+ /*
27
+ * Tags to specify stepper types
28
+ *
29
+ * These tags are used by integrate() to choose which integration method is used
30
+ */
31
+
32
+ struct stepper_tag {};
33
+ // struct explicit_stepper_tag : stepper_tag {};
34
+ // struct implicit_stepper_tag : stepper_tag {};
35
+
36
+
37
+ struct error_stepper_tag : stepper_tag {};
38
+ struct explicit_error_stepper_tag : error_stepper_tag {};
39
+ struct explicit_error_stepper_fsal_tag : error_stepper_tag {};
40
+
41
+ struct controlled_stepper_tag {};
42
+ struct explicit_controlled_stepper_tag : controlled_stepper_tag {};
43
+ struct explicit_controlled_stepper_fsal_tag : controlled_stepper_tag {};
44
+
45
+ struct dense_output_stepper_tag {};
46
+
47
+
48
+ template< class tag > struct base_tag ;
49
+ template< > struct base_tag< stepper_tag > { typedef stepper_tag type; };
50
+ template< > struct base_tag< error_stepper_tag > { typedef stepper_tag type; };
51
+ template< > struct base_tag< explicit_error_stepper_tag > { typedef stepper_tag type; };
52
+ template< > struct base_tag< explicit_error_stepper_fsal_tag > { typedef stepper_tag type; };
53
+
54
+ template< > struct base_tag< controlled_stepper_tag > { typedef controlled_stepper_tag type; };
55
+ template< > struct base_tag< explicit_controlled_stepper_tag > { typedef controlled_stepper_tag type; };
56
+ template< > struct base_tag< explicit_controlled_stepper_fsal_tag > { typedef controlled_stepper_tag type; };
57
+
58
+ template< > struct base_tag< dense_output_stepper_tag > { typedef dense_output_stepper_tag type; };
59
+
60
+
61
+ } // odeint
62
+ } // numeric
63
+ } // boost
64
+
65
+
66
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED
@@ -0,0 +1,136 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/stepper/symplectic_euler.hpp
4
+
5
+ [begin_description]
6
+ Implementation of the symplectic Euler for separable Hamiltonian systems.
7
+ [end_description]
8
+
9
+ Copyright 2011-2013 Karsten Ahnert
10
+ Copyright 2011-2013 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_SYMPLECTIC_EULER_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_STEPPER_SYMPLECTIC_EULER_HPP_INCLUDED
20
+
21
+
22
+ #include <boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp>
23
+
24
+ #include <boost/numeric/odeint/algebra/range_algebra.hpp>
25
+ #include <boost/numeric/odeint/algebra/default_operations.hpp>
26
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
27
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
28
+
29
+ #include <array>
30
+
31
+ namespace boost {
32
+ namespace numeric {
33
+ namespace odeint {
34
+
35
+
36
+ #ifndef DOXYGEN_SKIP
37
+ namespace detail {
38
+ namespace symplectic_euler_coef {
39
+
40
+ template< class Value >
41
+ struct coef_a_type : public std::array< Value , 1 >
42
+ {
43
+ coef_a_type( void )
44
+ {
45
+ (*this)[0] = static_cast< Value >( 1 );
46
+ }
47
+ };
48
+
49
+ template< class Value >
50
+ struct coef_b_type : public std::array< Value , 1 >
51
+ {
52
+ coef_b_type( void )
53
+ {
54
+ (*this)[0] = static_cast< Value >( 1 );
55
+ }
56
+ };
57
+
58
+ } // namespace symplectic_euler_coef
59
+ } // namespace detail
60
+ #endif
61
+
62
+
63
+
64
+ template<
65
+ class Coor ,
66
+ class Momentum = Coor ,
67
+ class Value = double ,
68
+ class CoorDeriv = Coor ,
69
+ class MomentumDeriv = Coor ,
70
+ class Time = Value ,
71
+ class Algebra = typename algebra_dispatcher< Coor >::algebra_type ,
72
+ class Operations = typename operations_dispatcher< Coor >::operations_type ,
73
+ class Resizer = initially_resizer
74
+ >
75
+ #ifndef DOXYGEN_SKIP
76
+ class symplectic_euler :
77
+ public symplectic_nystroem_stepper_base
78
+ <
79
+ 1 , 1 ,
80
+ Coor , Momentum , Value , CoorDeriv , MomentumDeriv , Time , Algebra , Operations , Resizer
81
+ >
82
+ #else
83
+ class symplectic_euler : public symplectic_nystroem_stepper_base
84
+ #endif
85
+ {
86
+ public:
87
+
88
+ #ifndef DOXYGEN_SKIP
89
+ typedef symplectic_nystroem_stepper_base<
90
+ 1 , 1 , Coor , Momentum , Value , CoorDeriv , MomentumDeriv , Time , Algebra , Operations , Resizer > stepper_base_type;
91
+ #endif
92
+ typedef typename stepper_base_type::algebra_type algebra_type;
93
+ typedef typename stepper_base_type::value_type value_type;
94
+
95
+
96
+ symplectic_euler( const algebra_type &algebra = algebra_type() )
97
+ : stepper_base_type( detail::symplectic_euler_coef::coef_a_type< value_type >() ,
98
+ detail::symplectic_euler_coef::coef_b_type< value_type >() ,
99
+ algebra )
100
+ { }
101
+ };
102
+
103
+
104
+ /*************** DOXYGEN ***************/
105
+
106
+ /**
107
+ * \class symplectic_euler
108
+ * \brief Implementation of the symplectic Euler method.
109
+ *
110
+ * The method is of first order and has one stage. It is described HERE.
111
+ *
112
+ * \tparam Order The order of the stepper.
113
+ * \tparam Coor The type representing the coordinates q.
114
+ * \tparam Momentum The type representing the coordinates p.
115
+ * \tparam Value The basic value type. Should be something like float, double or a high-precision type.
116
+ * \tparam CoorDeriv The type representing the time derivative of the coordinate dq/dt.
117
+ * \tparam MomemtnumDeriv The type representing the time derivative of the momentum dp/dt.
118
+ * \tparam Time The type representing the time t.
119
+ * \tparam Algebra The algebra.
120
+ * \tparam Operations The operations.
121
+ * \tparam Resizer The resizer policy.
122
+ */
123
+
124
+ /**
125
+ * \fn symplectic_euler::symplectic_euler( const algebra_type &algebra )
126
+ * \brief Constructs the symplectic_euler. This constructor can be used as a default
127
+ * constructor if the algebra has a default constructor.
128
+ * \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
129
+ */
130
+
131
+ } // namespace odeint
132
+ } // namespace numeric
133
+ } // namespace boost
134
+
135
+
136
+ #endif // BOOST_NUMERIC_ODEINT_STEPPER_SYMPLECTIC_EULER_HPP_INCLUDED