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,30 @@
1
+ // (C) Copyright Matt Borland 2021 - 2023.
2
+ // Use, modification and distribution are subject to the
3
+ // Boost Software License, Version 1.0. (See accompanying file
4
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+ //
6
+ // We deliberately use assert in here:
7
+ //
8
+ // boost-no-inspect
9
+
10
+ #ifndef BOOST_NUMERIC_ODEINT_TOOLS_ASSERT_HPP
11
+ #define BOOST_NUMERIC_ODEINT_TOOLS_ASSERT_HPP
12
+
13
+ #include <boost/numeric/odeint/tools/is_standalone.hpp>
14
+
15
+ #ifndef BOOST_NUMERIC_ODEINT_STANDALONE
16
+
17
+ #include <boost/assert.hpp>
18
+
19
+ #define BOOST_NUMERIC_ODEINT_ASSERT(expr) BOOST_ASSERT(expr)
20
+ #define BOOST_NUMERIC_ODEINT_ASSERT_MSG(expr, msg) BOOST_ASSERT_MSG(expr, msg)
21
+
22
+ #else // Standalone mode so we use cassert
23
+
24
+ #include <cassert>
25
+ #define BOOST_NUMERIC_ODEINT_ASSERT(expr) assert(expr)
26
+ #define BOOST_NUMERIC_ODEINT_ASSERT_MSG(expr, msg) assert((expr)&&(msg))
27
+
28
+ #endif
29
+
30
+ #endif //BOOST_NUMERIC_ODEINT_TOOLS_ASSERT_HPP
@@ -0,0 +1,21 @@
1
+ // Copyright Matt Borland 2021.
2
+ // Use, modification and distribution are subject to the
3
+ // Boost Software License, Version 1.0. (See accompanying file
4
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ #ifndef BOOST_NUMERIC_ODEINT_TOOLS_IS_STANDALONE_HPP
7
+ #define BOOST_NUMERIC_ODEINT_TOOLS_IS_STANDALONE_HPP
8
+
9
+ // If one or more of our required dependencies are missing assume we are
10
+ // in standalone mode
11
+
12
+ #ifdef __has_include
13
+ #if !__has_include(<boost/config.hpp>) || !__has_include(<boost/assert.hpp>) || !__has_include(<boost/lexical_cast.hpp>) || \
14
+ !__has_include(<boost/throw_exception.hpp>) || !__has_include(<boost/predef/other/endian.h>)
15
+ # ifndef BOOST_NUMERIC_ODEINT_STANDALONE
16
+ # define BOOST_NUMERIC_ODEINT_STANDALONE
17
+ # endif
18
+ #endif
19
+ #endif
20
+
21
+ #endif //BOOST_NUMERIC_ODEINT_TOOLS_IS_STANDALONE_HPP
@@ -0,0 +1,39 @@
1
+ // Copyright Matt Borland 2021 - 2023.
2
+ // Use, modification and distribution are subject to the
3
+ // Boost Software License, Version 1.0. (See accompanying file
4
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ #ifndef BOOST_NUMERIC_ODEINT_TOOLS_TRAITS
7
+ #define BOOST_NUMERIC_ODEINT_TOOLS_TRAITS
8
+
9
+ #include <type_traits>
10
+
11
+ namespace boost {
12
+ namespace numeric {
13
+ namespace odeint {
14
+ namespace detail {
15
+
16
+ #define BOOST_NUMERIC_ODEINT_HAS_NAMED_TRAIT(trait, name) \
17
+ template <typename T> \
18
+ class trait \
19
+ { \
20
+ private: \
21
+ using yes = char; \
22
+ struct no { char x[2]; }; \
23
+ \
24
+ template <typename U> \
25
+ static yes test(typename U::name* = nullptr); \
26
+ \
27
+ template <typename U> \
28
+ static no test(...); \
29
+ \
30
+ public: \
31
+ static constexpr bool value = (sizeof(test<T>(0)) == sizeof(char)); \
32
+ };
33
+
34
+ } //namespace detail
35
+ } //namespace odeint
36
+ } //namespace numeric
37
+ } //namespace boost
38
+
39
+ #endif //BOOST_NUMERIC_ODEINT_TOOLS_TRAITS
@@ -0,0 +1,35 @@
1
+ /*
2
+ * [begin_description]
3
+ * Boost bind pull the placeholders, _1, _2, ... into global
4
+ * namespace. This can conflict with the C++03 TR1 and C++11
5
+ * std::placeholders. This header provides a workaround for
6
+ * this problem.
7
+ * [end_description]
8
+ *
9
+ * Copyright 2012 Christoph Koke
10
+ * Copyright 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
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
18
+ #define BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
19
+
20
+ #include <functional>
21
+
22
+ namespace boost {
23
+ namespace numeric {
24
+ namespace odeint {
25
+ namespace detail {
26
+
27
+ using std::bind;
28
+ using namespace std::placeholders;
29
+
30
+ } //namespace detail
31
+ } //namespace odeint
32
+ } //namespace numeric
33
+ } //namespace boost
34
+
35
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
@@ -0,0 +1,88 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/copy.hpp
4
+
5
+ [begin_description]
6
+ Copy abstraction for the usage in the steppers.
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_UTIL_COPY_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_COPY_HPP_INCLUDED
20
+
21
+ #include <type_traits>
22
+
23
+ #include <boost/range/algorithm/copy.hpp>
24
+
25
+ #include <boost/utility/enable_if.hpp>
26
+
27
+ #include <boost/numeric/odeint/util/detail/is_range.hpp>
28
+
29
+ namespace boost {
30
+ namespace numeric {
31
+ namespace odeint {
32
+
33
+ namespace detail {
34
+
35
+ template< class Container1 , class Container2 >
36
+ void do_copying( const Container1 &from , Container2 &to , std::integral_constant<bool, true>)
37
+ {
38
+ boost::range::copy( from , boost::begin( to ) );
39
+ }
40
+
41
+ template< class Container1 , class Container2 >
42
+ void do_copying( const Container1 &from , Container2 &to , std::integral_constant<bool, false>)
43
+ {
44
+ to = from;
45
+ }
46
+
47
+ } // namespace detail
48
+
49
+
50
+
51
+ /*
52
+ * Default implementation of the copy operation used the assign operator
53
+ * gsl_vector must copied differently
54
+ */
55
+ template< class Container1 , class Container2 , class Enabler = void >
56
+ struct copy_impl_sfinae
57
+ {
58
+ static void copy( const Container1 &from , Container2 &to )
59
+ {
60
+ typedef typename boost::numeric::odeint::detail::is_range< Container1 >::type is_range_type;
61
+ detail::do_copying( from , to , is_range_type() );
62
+ }
63
+
64
+ };
65
+
66
+ template< class Container1, class Container2 >
67
+ struct copy_impl
68
+ {
69
+ static void copy( const Container1 &from , Container2 &to )
70
+ {
71
+ copy_impl_sfinae< Container1 , Container2 >::copy( from , to );
72
+ }
73
+ };
74
+
75
+ // ToDo: allow also to copy INTO a range, not only from a range! Needs "const Container2 &to"
76
+ template< class Container1 , class Container2 >
77
+ void copy( const Container1 &from , Container2 &to )
78
+ {
79
+ copy_impl< Container1 , Container2 >::copy( from , to );
80
+ }
81
+
82
+
83
+ } // namespace odeint
84
+ } // namespace numeric
85
+ } // namespace boost
86
+
87
+
88
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_COPY_HPP_INCLUDED
@@ -0,0 +1,127 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/detail/is_range.hpp
4
+
5
+ [begin_description]
6
+ is_range implementation. Taken from the boost::range library.
7
+ [end_description]
8
+
9
+ Copyright 2011-2013 Karsten Ahnert
10
+ Copyright 2011-2013 Thorsten Ottosen
11
+
12
+
13
+
14
+ Distributed under the Boost Software License, Version 1.0.
15
+ (See accompanying file LICENSE_1_0.txt or
16
+ copy at http://www.boost.org/LICENSE_1_0.txt)
17
+ */
18
+
19
+
20
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED
21
+ #define BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED
22
+
23
+
24
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
25
+ # pragma once
26
+ #endif
27
+
28
+ #include <cstddef>
29
+ #include <type_traits>
30
+ #include <boost/range/config.hpp>
31
+ #include <boost/numeric/odeint/tools/traits.hpp>
32
+
33
+ namespace boost {
34
+ namespace numeric {
35
+ namespace odeint {
36
+
37
+ namespace detail {
38
+
39
+ BOOST_NUMERIC_ODEINT_HAS_NAMED_TRAIT(has_iterator, iterator);
40
+ BOOST_NUMERIC_ODEINT_HAS_NAMED_TRAIT(has_const_iterator, const_iterator);
41
+
42
+ template< typename Range >
43
+ struct is_range : std::integral_constant<bool, (has_iterator<Range>::value && has_const_iterator<Range>::value)>
44
+ {
45
+ };
46
+
47
+ //////////////////////////////////////////////////////////////////////////
48
+ // pair
49
+ //////////////////////////////////////////////////////////////////////////
50
+
51
+ template< typename iteratorT >
52
+ struct is_range< std::pair<iteratorT,iteratorT> > : std::integral_constant<bool, true>
53
+ {
54
+ };
55
+
56
+ template< typename iteratorT >
57
+ struct is_range< const std::pair<iteratorT,iteratorT> > : std::integral_constant<bool, true>
58
+ {
59
+ };
60
+
61
+ //////////////////////////////////////////////////////////////////////////
62
+ // array
63
+ //////////////////////////////////////////////////////////////////////////
64
+
65
+ template< typename elementT, std::size_t sz >
66
+ struct is_range< elementT[sz] > : std::integral_constant<bool, true>
67
+ {
68
+ };
69
+
70
+ template< typename elementT, std::size_t sz >
71
+ struct is_range< const elementT[sz] > : std::integral_constant<bool, true>
72
+ {
73
+ };
74
+
75
+ //////////////////////////////////////////////////////////////////////////
76
+ // string
77
+ //////////////////////////////////////////////////////////////////////////
78
+
79
+ template<>
80
+ struct is_range< char* > : std::integral_constant<bool, true>
81
+ {
82
+ };
83
+
84
+ template<>
85
+ struct is_range< wchar_t* > : std::integral_constant<bool, true>
86
+ {
87
+ };
88
+
89
+ template<>
90
+ struct is_range< const char* > : std::integral_constant<bool, true>
91
+ {
92
+ };
93
+
94
+ template<>
95
+ struct is_range< const wchar_t* > : std::integral_constant<bool, true>
96
+ {
97
+ };
98
+
99
+ template<>
100
+ struct is_range< char* const > : std::integral_constant<bool, true>
101
+ {
102
+ };
103
+
104
+ template<>
105
+ struct is_range< wchar_t* const > : std::integral_constant<bool, true>
106
+ {
107
+ };
108
+
109
+ template<>
110
+ struct is_range< const char* const > : std::integral_constant<bool, true>
111
+ {
112
+ };
113
+
114
+ template<>
115
+ struct is_range< const wchar_t* const > : std::integral_constant<bool, true>
116
+ {
117
+ };
118
+
119
+ } // namespace detail
120
+
121
+ } // namespace odeint
122
+ } // namespace numeric
123
+ } // namespace boost
124
+
125
+
126
+
127
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED
@@ -0,0 +1,78 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/detail/less_with_sign.hpp
4
+
5
+ [begin_description]
6
+ Helper function to compare times taking into account the sign of dt
7
+ [end_description]
8
+
9
+ Copyright 2012-2015 Mario Mulansky
10
+ Copyright 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
+ #ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_LESS_WITH_SIGN_HPP_INCLUDED
18
+ #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_LESS_WITH_SIGN_HPP_INCLUDED
19
+
20
+ #include <limits>
21
+
22
+ #include <boost/numeric/odeint/util/unit_helper.hpp>
23
+
24
+ namespace boost {
25
+ namespace numeric {
26
+ namespace odeint {
27
+ namespace detail {
28
+
29
+ /**
30
+ * return t1 < t2 if dt > 0 and t1 > t2 if dt < 0 with epsilon accuracy
31
+ */
32
+ template< typename T >
33
+ bool less_with_sign( T t1 , T t2 , T dt )
34
+ {
35
+ if( get_unit_value(dt) > 0 )
36
+ //return t1 < t2;
37
+ return t2-t1 > std::numeric_limits<T>::epsilon();
38
+ else
39
+ //return t1 > t2;
40
+ return t1-t2 > std::numeric_limits<T>::epsilon();
41
+ }
42
+
43
+ /**
44
+ * return t1 <= t2 if dt > 0 and t1 => t2 if dt < 0 with epsilon accuracy
45
+ */
46
+ template< typename T >
47
+ bool less_eq_with_sign( T t1 , T t2 , T dt )
48
+ {
49
+ if( get_unit_value(dt) > 0 )
50
+ return t1-t2 <= std::numeric_limits<T>::epsilon();
51
+ else
52
+ return t2-t1 <= std::numeric_limits<T>::epsilon();
53
+ }
54
+
55
+ template< typename T >
56
+ T min_abs( T t1 , T t2 )
57
+ {
58
+ BOOST_USING_STD_MIN();
59
+ BOOST_USING_STD_MAX();
60
+ if( get_unit_value(t1)>0 )
61
+ return min BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
62
+ else
63
+ return max BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
64
+ }
65
+
66
+ template< typename T >
67
+ T max_abs( T t1 , T t2 )
68
+ {
69
+ BOOST_USING_STD_MIN();
70
+ BOOST_USING_STD_MAX();
71
+ if( get_unit_value(t1)>0 )
72
+ return max BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
73
+ else
74
+ return min BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
75
+ }
76
+ } } } }
77
+
78
+ #endif
@@ -0,0 +1,42 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/is_pair.hpp
4
+
5
+ [begin_description]
6
+ Metafunction to determine if a type is a std::pair<>.
7
+ [end_description]
8
+
9
+ Copyright 2011 Karsten Ahnert
10
+ Copyright 2011 Mario Mulansky
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_IS_PAIR_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_IS_PAIR_HPP_INCLUDED
20
+
21
+ #include <type_traits>
22
+
23
+ namespace boost {
24
+ namespace numeric {
25
+ namespace odeint {
26
+
27
+ template< class T >
28
+ struct is_pair : public std::integral_constant<bool, false>
29
+ {
30
+ };
31
+
32
+ template< class T1 , class T2 >
33
+ struct is_pair< std::pair< T1 , T2 > > : public std::integral_constant<bool, true>
34
+ {
35
+ };
36
+
37
+ } // namespace odeint
38
+ } // namespace numeric
39
+ } // namespace boost
40
+
41
+
42
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_IS_PAIR_HPP_INCLUDED
@@ -0,0 +1,84 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/is_resizeable.hpp
4
+
5
+ [begin_description]
6
+ Metafunction to determine if a state type can resized. For usage in the steppers.
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_UTIL_IS_RESIZEABLE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_IS_RESIZEABLE_HPP_INCLUDED
20
+
21
+
22
+ #include <vector>
23
+ #include <type_traits>
24
+
25
+ #include <boost/type_traits/integral_constant.hpp>
26
+ #include <boost/type_traits/remove_reference.hpp>
27
+ #include <boost/fusion/include/front.hpp>
28
+ #include <boost/fusion/include/is_sequence.hpp>
29
+
30
+ #include <boost/mpl/find_if.hpp>
31
+ #include <boost/mpl/end.hpp>
32
+ #include <boost/mpl/placeholders.hpp>
33
+ #include <boost/mpl/if.hpp>
34
+ #include <boost/type_traits/is_same.hpp>
35
+
36
+ namespace boost {
37
+ namespace numeric {
38
+ namespace odeint {
39
+
40
+ /*
41
+ * by default any type is not resizable
42
+ */
43
+ template< typename Container , typename Enabler = void >
44
+ struct is_resizeable_sfinae : std::false_type {};
45
+
46
+ template< typename Container >
47
+ struct is_resizeable : is_resizeable_sfinae< Container > {};
48
+
49
+
50
+
51
+ /*
52
+ * specialization for std::vector
53
+ */
54
+ template< class V, class A >
55
+ struct is_resizeable< std::vector< V , A > > : std::true_type {};
56
+
57
+
58
+ /*
59
+ * sfinae specialization for fusion sequences
60
+ */
61
+ template< typename FusionSequence >
62
+ struct is_resizeable_sfinae<
63
+ FusionSequence ,
64
+ typename boost::enable_if< typename boost::fusion::traits::is_sequence< FusionSequence >::type >::type >
65
+ {
66
+ typedef typename boost::mpl::find_if< FusionSequence , is_resizeable< boost::mpl::_1 > >::type iter;
67
+ typedef typename boost::mpl::end< FusionSequence >::type last;
68
+
69
+ typedef typename boost::mpl::if_< boost::is_same< iter , last > , std::false_type , std::true_type >::type type;
70
+ const static bool value = type::value;
71
+ };
72
+
73
+
74
+
75
+
76
+
77
+
78
+ } // namespace odeint
79
+ } // namespace numeric
80
+ } // namespace boost
81
+
82
+
83
+
84
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_IS_RESIZEABLE_HPP_INCLUDED
@@ -0,0 +1,131 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/multi_array_adaption.hpp
4
+
5
+ [begin_description]
6
+ tba.
7
+ [end_description]
8
+
9
+ Copyright 2009-2012 Karsten Ahnert
10
+ Copyright 2009-2012 Mario Mulansky
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_MULTI_ARRAY_ADAPTION_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_MULTI_ARRAY_ADAPTION_HPP_DEFINED
20
+
21
+
22
+
23
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
24
+ #include <boost/numeric/odeint/util/resize.hpp>
25
+ #include <boost/numeric/odeint/util/same_size.hpp>
26
+
27
+ #include <boost/mpl/and.hpp>
28
+ #include <boost/mpl/bool.hpp>
29
+ #include <boost/multi_array.hpp>
30
+
31
+ #include <type_traits>
32
+
33
+ namespace boost {
34
+ namespace numeric {
35
+ namespace odeint {
36
+
37
+ template< typename T >
38
+ struct is_multi_array
39
+ {
40
+ typedef std::false_type type;
41
+ const static bool value = type::value;
42
+ };
43
+
44
+ template< typename T >
45
+ struct is_resizeable_multi_array
46
+ {
47
+ typedef std::false_type type;
48
+ const static bool value = type::value;
49
+ };
50
+
51
+
52
+
53
+ template< typename V , size_t Dim , typename A >
54
+ struct is_multi_array< boost::multi_array< V , Dim , A > >
55
+ {
56
+ typedef std::true_type type;
57
+ const static bool value = type::value;
58
+ };
59
+
60
+ template< typename V , size_t Dim , typename A >
61
+ struct is_resizeable_multi_array< boost::multi_array< V , Dim , A > >
62
+ {
63
+ typedef std::true_type type;
64
+ const static bool value = type::value;
65
+ };
66
+
67
+
68
+
69
+
70
+ template< typename T >
71
+ struct is_resizeable_sfinae< T , typename boost::enable_if< typename is_resizeable_multi_array< T >::type >::type >
72
+ {
73
+ typedef std::true_type type;
74
+ const static bool value = type::value;
75
+ };
76
+
77
+
78
+
79
+
80
+
81
+ template< typename T1 , typename T2 >
82
+ struct same_size_impl_sfinae< T1 , T2 ,
83
+ typename boost::enable_if<
84
+ typename boost::mpl::and_<
85
+ is_multi_array< T1 > ,
86
+ is_multi_array< T2 > ,
87
+ boost::mpl::bool_< T1::dimensionality == T2::dimensionality >
88
+ >::type
89
+ >::type >
90
+ {
91
+ static bool same_size( T1 const &x1 , T2 const &x2 )
92
+ {
93
+ for( size_t i=0 ; i<T1::dimensionality ; ++i )
94
+ {
95
+ if( x1.shape()[i] != x2.shape()[i] ) return false;
96
+ if( x1.index_bases()[i] != x2.index_bases()[i] ) return false;
97
+ }
98
+ return true;
99
+ }
100
+ };
101
+
102
+
103
+ template< typename T1 , typename T2 >
104
+ struct resize_impl_sfinae< T1 , T2 ,
105
+ typename boost::enable_if<
106
+ typename boost::mpl::and_<
107
+ is_resizeable_multi_array< T1 > ,
108
+ is_multi_array< T2 > ,
109
+ boost::mpl::bool_< T1::dimensionality == T2::dimensionality >
110
+ >::type
111
+ >::type >
112
+ {
113
+ static void resize( T1 &x1 , const T2 &x2 )
114
+ {
115
+ std::array< int , T1::dimensionality > extents;
116
+ for( size_t i=0 ; i<T1::dimensionality ; ++i ) extents[i] = x2.shape()[i];
117
+ x1.resize( extents );
118
+ std::array< int , T1::dimensionality > origins;
119
+ for( size_t i=0 ; i<T1::dimensionality ; ++i ) origins[i] = x2.index_bases()[i];
120
+ x1.reindex( origins );
121
+ }
122
+ };
123
+
124
+
125
+
126
+ } // namespace odeint
127
+ } // namespace numeric
128
+ } // namespace boost
129
+
130
+
131
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_MULTI_ARRAY_ADAPTION_HPP_DEFINED