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,96 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/n_ary_helper.hpp
4
+
5
+ Macros to generate scale_sumN and for_eachN functors.
6
+
7
+ Copyright 2013 Karsten Ahnert
8
+ Copyright 2013 Mario Mulansky
9
+ Copyright 2013 Pascal Germroth
10
+
11
+ Distributed under the Boost Software License, Version 1.0.
12
+ (See accompanying file LICENSE_1_0.txt or
13
+ copy at http://www.boost.org/LICENSE_1_0.txt)
14
+ */
15
+
16
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_N_ARY_HELPER_HPP_INCLUDED
17
+ #define BOOST_NUMERIC_ODEINT_UTIL_N_ARY_HELPER_HPP_INCLUDED
18
+
19
+ #include <boost/preprocessor/repetition.hpp>
20
+
21
+ // like BOOST_PP_ENUM_SHIFTED but with a comma in front like _TRAILING
22
+ #define BOOST_ODEINT_ENUM_TRAILING_SHIFTED_PARAMS(count, param) \
23
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(count)) \
24
+ BOOST_PP_ENUM_SHIFTED_PARAMS(count, param)
25
+
26
+ #define BOOST_ODEINT_ENUM_TRAILING_SHIFTED_BINARY_PARAMS(count, p1, p2) \
27
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(count)) \
28
+ BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2)
29
+
30
+ // like BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(n, p1, p2) but p2 is shifted left.
31
+ // generate "p1 ## 0 = p2, p1 ## 1 = p3 ## 0, p1 ## 2 = p3 ## 1"
32
+ #define BOOST_ODEINT_ENUM_LSHIFTED_BINARY_PARAMS(count, p1, p2, p3) \
33
+ BOOST_PP_ENUM(count, BOOST_ODEINT_ENUM_LSHIFTED_BINARY_PARAMS_, (p1, p2, p3))
34
+ #define BOOST_ODEINT_ENUM_LSHIFTED_BINARY_PARAMS_(z, n, data) \
35
+ BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(3, 0, data), n) \
36
+ BOOST_PP_IF(n, \
37
+ BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(3, 2, data), BOOST_PP_DEC(n)), \
38
+ BOOST_PP_TUPLE_ELEM(3, 1, data))
39
+
40
+ // like BOOST_PP_ENUM_BINARY_PARAMS(n, p1, p2) but with statements.
41
+ // "p1 ## 0 p2 ## 0 ; p1 ## 1 p2 ## 1 ; ..."
42
+ #define BOOST_ODEINT_ENUM_BINARY_STATEMENTS(count, p1, p2) \
43
+ BOOST_PP_REPEAT(count, BOOST_ODEINT_ENUM_BINARY_STATEMENTS_, (p1, p2))
44
+ #define BOOST_ODEINT_ENUM_BINARY_STATEMENTS_(z, n, data) \
45
+ BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2, 0, data), n) \
46
+ BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2, 1, data), n) ;
47
+
48
+ // like BOOST_PP_ENUM_BINARY_PARAMS(n, p1, p2) but p2 is in parens.
49
+ // "p1 ## 0 (p2 ## 0) , p1 ## 1 (p2 ## 1) , ..."
50
+ #define BOOST_ODEINT_ENUM_UNARY_CALLS(count, p1, p2) \
51
+ BOOST_PP_ENUM(count, BOOST_ODEINT_ENUM_UNARY_CALLS_, (p1, p2))
52
+ #define BOOST_ODEINT_ENUM_SHIFTED_UNARY_CALLS(count, p1, p2) \
53
+ BOOST_PP_ENUM_SHIFTED(count, BOOST_ODEINT_ENUM_UNARY_CALLS_, (p1, p2))
54
+ #define BOOST_ODEINT_ENUM_TRAILING_SHIFTED_UNARY_CALLS(count, p1, p2) \
55
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(count)) \
56
+ BOOST_PP_ENUM_SHIFTED(count, BOOST_ODEINT_ENUM_UNARY_CALLS_, (p1, p2))
57
+ #define BOOST_ODEINT_ENUM_UNARY_CALLS_(z, n, data) \
58
+ BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2, 0, data), n) \
59
+ ( BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2, 1, data), n) )
60
+
61
+
62
+ // maximum arity + 1 for scale_sum and for_each
63
+ #define BOOST_ODEINT_N_ARY_MAX 16
64
+
65
+
66
+ // generate scale_sum1 to scale_sumN, operator body generated by macro(N)
67
+ #define BOOST_ODEINT_GEN_SCALE_SUM(macro) \
68
+ BOOST_PP_REPEAT_FROM_TO(1, BOOST_ODEINT_N_ARY_MAX, BOOST_ODEINT_GEN_SCALE_SUM_, macro)
69
+ #define BOOST_ODEINT_GEN_SCALE_SUM_(z, n, macro) \
70
+ template< BOOST_ODEINT_ENUM_LSHIFTED_BINARY_PARAMS(n, class Fac, = double, = Fac) > \
71
+ struct BOOST_PP_CAT(scale_sum, n) \
72
+ { \
73
+ BOOST_ODEINT_ENUM_BINARY_STATEMENTS(n, const Fac, m_alpha) \
74
+ \
75
+ BOOST_PP_CAT(scale_sum, n) \
76
+ ( BOOST_PP_ENUM_BINARY_PARAMS(n, Fac, alpha) ) \
77
+ : BOOST_ODEINT_ENUM_UNARY_CALLS(n, m_alpha, alpha) {} \
78
+ \
79
+ template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), class T) > \
80
+ void operator()( T0 &t0 \
81
+ BOOST_ODEINT_ENUM_TRAILING_SHIFTED_BINARY_PARAMS(BOOST_PP_INC(n), const T, &t) \
82
+ ) const \
83
+ { macro(n) } \
84
+ typedef void result_type; \
85
+ };
86
+
87
+ // generate for_each1 to for_eachN, body generated by macro(N)
88
+ #define BOOST_ODEINT_GEN_FOR_EACH(macro) \
89
+ BOOST_PP_REPEAT_FROM_TO(1, BOOST_ODEINT_N_ARY_MAX, BOOST_ODEINT_GEN_FOR_EACH_, macro)
90
+ #define BOOST_ODEINT_GEN_FOR_EACH_(z, n, macro) \
91
+ template< BOOST_PP_ENUM_PARAMS(n, class S) , class Op > \
92
+ static void for_each##n ( BOOST_PP_ENUM_BINARY_PARAMS(n, S, &s) , Op op ) \
93
+ { macro(n) }
94
+
95
+
96
+ #endif
@@ -0,0 +1,77 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/odeint_error.hpp
4
+
5
+ [begin_description]
6
+ Runtime Exceptions thrown by odeint
7
+ [end_description]
8
+
9
+ Copyright 2015 Mario Mulansky
10
+
11
+ Distributed under the Boost Software License, Version 1.0.
12
+ (See accompanying file LICENSE_1_0.txt or
13
+ copy at http://www.boost.org/LICENSE_1_0.txt)
14
+ */
15
+
16
+
17
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_ODEINT_ERROR_HPP_INCLUDED
18
+ #define BOOST_NUMERIC_ODEINT_UTIL_ODEINT_ERROR_HPP_INCLUDED
19
+
20
+ #include <stdexcept>
21
+ #include <string>
22
+
23
+
24
+ namespace boost {
25
+ namespace numeric {
26
+ namespace odeint {
27
+
28
+
29
+ /**
30
+ * \brief Runtime error thrown by odeint
31
+ */
32
+ class odeint_error : public std::runtime_error
33
+ {
34
+ public:
35
+ odeint_error(const std::string &s)
36
+ : std::runtime_error(s)
37
+ { }
38
+ };
39
+
40
+
41
+ /**
42
+ * \brief Runtime error thrown from integrate routines
43
+ *
44
+ * This Error occures when too many iterations are performed in between two
45
+ * observer calls in the integrate routines.
46
+ */
47
+ class no_progress_error : public odeint_error
48
+ {
49
+ public:
50
+ no_progress_error(const std::string &s)
51
+ : odeint_error(s)
52
+ { }
53
+ };
54
+
55
+
56
+ /**
57
+ * \brief Runtime error thrown during stepsize adjustment
58
+ *
59
+ * This Error occures when too many iterations are performed without finding
60
+ * an appropriate new step size. This usually indicates non-continuous points
61
+ * in the ODE.
62
+ */
63
+ class step_adjustment_error : public odeint_error
64
+ {
65
+ public:
66
+ step_adjustment_error(const std::string &s)
67
+ : odeint_error(s)
68
+ { }
69
+ };
70
+
71
+ }
72
+ }
73
+ }
74
+
75
+
76
+
77
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_ODEINT_ERROR_HPP_INCLUDED
@@ -0,0 +1,120 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/state_wrapper.hpp
4
+
5
+ [begin_description]
6
+ State wrapper for the state type in all stepper. The state wrappers are responsible for construction,
7
+ destruction, copying construction, assignment and resizing.
8
+ [end_description]
9
+
10
+ Copyright 2011-2013 Karsten Ahnert
11
+ Copyright 2011 Mario Mulansky
12
+
13
+ Distributed under the Boost Software License, Version 1.0.
14
+ (See accompanying file LICENSE_1_0.txt or
15
+ copy at http://www.boost.org/LICENSE_1_0.txt)
16
+ */
17
+
18
+
19
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_RESIZE_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_UTIL_RESIZE_HPP_INCLUDED
21
+
22
+ #include <type_traits>
23
+
24
+ #include <boost/range.hpp>
25
+
26
+ #include <boost/utility/enable_if.hpp>
27
+ #include <boost/fusion/include/is_sequence.hpp>
28
+ #include <boost/fusion/include/zip_view.hpp>
29
+ #include <boost/fusion/include/vector.hpp>
30
+ #include <boost/fusion/include/make_fused.hpp>
31
+ #include <boost/fusion/include/for_each.hpp>
32
+
33
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
34
+
35
+ namespace boost {
36
+ namespace numeric {
37
+ namespace odeint {
38
+
39
+
40
+ template< class StateOut , class StateIn , class Enabler = void >
41
+ struct resize_impl_sfinae
42
+ {
43
+ static void resize( StateOut &x1 , const StateIn &x2 )
44
+ {
45
+ x1.resize( boost::size( x2 ) );
46
+ }
47
+ };
48
+
49
+ // resize function
50
+ // standard implementation relies on boost.range and resize member function
51
+ template< class StateOut , class StateIn >
52
+ struct resize_impl
53
+ {
54
+ static void resize( StateOut &x1 , const StateIn &x2 )
55
+ {
56
+ resize_impl_sfinae< StateOut , StateIn >::resize( x1 , x2 );
57
+ }
58
+ };
59
+
60
+
61
+ // do not overload or specialize this function, specialize resize_impl<> instead
62
+ template< class StateOut , class StateIn >
63
+ void resize( StateOut &x1 , const StateIn &x2 )
64
+ {
65
+ resize_impl< StateOut , StateIn >::resize( x1 , x2 );
66
+ }
67
+
68
+
69
+ namespace detail {
70
+
71
+ struct resizer
72
+ {
73
+ typedef void result_type;
74
+
75
+ template< class StateOut , class StateIn >
76
+ void operator()( StateOut &x1 , const StateIn &x2 ) const
77
+ {
78
+ resize_op( x1 , x2 , typename is_resizeable< StateOut >::type() );
79
+ }
80
+
81
+ template< class StateOut , class StateIn >
82
+ void resize_op( StateOut &x1 , const StateIn &x2 , std::true_type ) const
83
+ {
84
+ resize( x1 , x2 );
85
+ }
86
+
87
+ template< class StateOut , class StateIn >
88
+ void resize_op( StateOut &/*x1*/ , const StateIn &/*x2*/ , std::false_type ) const
89
+ {
90
+ }
91
+
92
+ };
93
+ } // namespace detail
94
+
95
+
96
+ /*
97
+ * specialization for fusion sequences
98
+ */
99
+ template< class FusionSeq >
100
+ struct resize_impl_sfinae< FusionSeq , FusionSeq ,
101
+ typename boost::enable_if< typename boost::fusion::traits::is_sequence< FusionSeq >::type >::type >
102
+ {
103
+ static void resize( FusionSeq &x1 , const FusionSeq &x2 )
104
+ {
105
+ typedef boost::fusion::vector< FusionSeq& , const FusionSeq& > Sequences;
106
+ Sequences sequences( x1 , x2 );
107
+ boost::fusion::for_each( boost::fusion::zip_view< Sequences >( sequences ) , boost::fusion::make_fused( detail::resizer() ) );
108
+ }
109
+ };
110
+
111
+
112
+
113
+
114
+ }
115
+ }
116
+ }
117
+
118
+
119
+
120
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_RESIZE_HPP_INCLUDED
@@ -0,0 +1,94 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/resizer.hpp
4
+
5
+ [begin_description]
6
+ Implementation of the resizers.
7
+ [end_description]
8
+
9
+ Copyright 2011-2012 Mario Mulansky
10
+ Copyright 2011 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_UTIL_RESIZER_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_RESIZER_HPP_INCLUDED
20
+
21
+
22
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
23
+ #include <boost/numeric/odeint/util/same_size.hpp>
24
+ #include <boost/numeric/odeint/util/resize.hpp>
25
+ #include <type_traits>
26
+
27
+ namespace boost {
28
+ namespace numeric {
29
+ namespace odeint {
30
+
31
+ template< class ResizeWrappedState , class State >
32
+ bool adjust_size_by_resizeability( ResizeWrappedState &x , const State &y , std::true_type )
33
+ {
34
+ if ( !same_size( x.m_v , y ) )
35
+ {
36
+ resize( x.m_v , y );
37
+ return true;
38
+ }
39
+ else
40
+ return false;
41
+ }
42
+
43
+ template< class ResizeWrappedState , class State >
44
+ bool adjust_size_by_resizeability( ResizeWrappedState & /* x */ , const State & /* y */ , std::false_type )
45
+ {
46
+ return false;
47
+ }
48
+
49
+ struct always_resizer
50
+ {
51
+ template< class State , class ResizeFunction >
52
+ bool adjust_size( const State &x , ResizeFunction f )
53
+ {
54
+ return f( x );
55
+ }
56
+ };
57
+
58
+
59
+ struct initially_resizer
60
+ {
61
+
62
+ bool m_initialized;
63
+
64
+ initially_resizer() : m_initialized( false )
65
+ { }
66
+
67
+ template< class State , class ResizeFunction >
68
+ bool adjust_size( const State &x , ResizeFunction f )
69
+ {
70
+ if( !m_initialized )
71
+ {
72
+ m_initialized = true;
73
+ return f( x );
74
+ } else
75
+ return false;
76
+ }
77
+ };
78
+
79
+
80
+ struct never_resizer
81
+ {
82
+ template< class State , class ResizeFunction >
83
+ bool adjust_size( const State &/*x*/ , ResizeFunction /*f*/ )
84
+ {
85
+ return false;
86
+ }
87
+ };
88
+
89
+
90
+ }
91
+ }
92
+ }
93
+
94
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_RESIZER_HPP_INCLUDED
@@ -0,0 +1,56 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/same_instance.hpp
4
+
5
+ [begin_description]
6
+ Basic check if two variables are the same instance
7
+ [end_description]
8
+
9
+ Copyright 2012 Karsten Ahnert
10
+ Copyright 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_SAME_INSTANCE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_SAME_INSTANCE_HPP_INCLUDED
20
+
21
+ namespace boost {
22
+ namespace numeric {
23
+ namespace odeint {
24
+
25
+ template< class T1 , class T2 , class Enabler=void >
26
+ struct same_instance_impl
27
+ {
28
+ static bool same_instance( const T1& /* x1 */ , const T2& /* x2 */ )
29
+ {
30
+ return false;
31
+ }
32
+ };
33
+
34
+ template< class T >
35
+ struct same_instance_impl< T , T >
36
+ {
37
+ static bool same_instance( const T &x1 , const T &x2 )
38
+ {
39
+ // check pointers
40
+ return (&x1 == &x2);
41
+ }
42
+ };
43
+
44
+
45
+ template< class T1 , class T2 >
46
+ bool same_instance( const T1 &x1 , const T2 &x2 )
47
+ {
48
+ return same_instance_impl< T1 , T2 >::same_instance( x1 , x2 );
49
+ }
50
+
51
+
52
+ } // namespace odeint
53
+ } // namespace numeric
54
+ } // namespace boost
55
+
56
+ #endif
@@ -0,0 +1,117 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/state_wrapper.hpp
4
+
5
+ [begin_description]
6
+ State wrapper for the state type in all stepper. The state wrappers are responsible for construction,
7
+ destruction, copying construction, assignment and resizing.
8
+ [end_description]
9
+
10
+ Copyright 2011-2013 Karsten Ahnert
11
+ Copyright 2011 Mario Mulansky
12
+
13
+ Distributed under the Boost Software License, Version 1.0.
14
+ (See accompanying file LICENSE_1_0.txt or
15
+ copy at http://www.boost.org/LICENSE_1_0.txt)
16
+ */
17
+
18
+
19
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_SAME_SIZE_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_UTIL_SAME_SIZE_HPP_INCLUDED
21
+
22
+ #include <type_traits>
23
+
24
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
25
+
26
+ #include <boost/utility/enable_if.hpp>
27
+ #include <boost/fusion/include/is_sequence.hpp>
28
+ #include <boost/fusion/include/zip_view.hpp>
29
+ #include <boost/fusion/include/vector.hpp>
30
+ #include <boost/fusion/include/make_fused.hpp>
31
+ #include <boost/fusion/include/all.hpp>
32
+
33
+ #include <boost/range.hpp>
34
+
35
+
36
+ namespace boost {
37
+ namespace numeric {
38
+ namespace odeint {
39
+
40
+ template< typename State1 , typename State2 , class Enabler = void >
41
+ struct same_size_impl_sfinae
42
+ {
43
+ static bool same_size( const State1 &x1 , const State2 &x2 )
44
+ {
45
+ return ( boost::size( x1 ) == boost::size( x2 ) );
46
+ }
47
+
48
+ };
49
+
50
+ // same_size function
51
+ // standard implementation relies on boost.range
52
+ template< class State1 , class State2 >
53
+ struct same_size_impl
54
+ {
55
+ static bool same_size( const State1 &x1 , const State2 &x2 )
56
+ {
57
+ return same_size_impl_sfinae< State1 , State2 >::same_size( x1 , x2 );
58
+ }
59
+ };
60
+
61
+
62
+ // do not overload or specialize this function, specialize resize_impl<> instead
63
+ template< class State1 , class State2 >
64
+ bool same_size( const State1 &x1 , const State2 &x2 )
65
+ {
66
+ return same_size_impl< State1 , State2 >::same_size( x1 , x2 );
67
+ }
68
+
69
+ namespace detail {
70
+
71
+ struct same_size_fusion
72
+ {
73
+ typedef bool result_type;
74
+
75
+ template< class S1 , class S2 >
76
+ bool operator()( const S1 &x1 , const S2 &x2 ) const
77
+ {
78
+ return same_size_op( x1 , x2 , typename is_resizeable< S1 >::type() );
79
+ }
80
+
81
+ template< class S1 , class S2 >
82
+ bool same_size_op( const S1 &x1 , const S2 &x2 , std::true_type ) const
83
+ {
84
+ return same_size( x1 , x2 );
85
+ }
86
+
87
+ template< class S1 , class S2 >
88
+ bool same_size_op( const S1 &/*x1*/ , const S2 &/*x2*/ , std::false_type ) const
89
+ {
90
+ return true;
91
+ }
92
+ };
93
+
94
+ } // namespace detail
95
+
96
+
97
+
98
+ template< class FusionSeq >
99
+ struct same_size_impl_sfinae< FusionSeq , FusionSeq , typename boost::enable_if< typename boost::fusion::traits::is_sequence< FusionSeq >::type >::type >
100
+ {
101
+ static bool same_size( const FusionSeq &x1 , const FusionSeq &x2 )
102
+ {
103
+ typedef boost::fusion::vector< const FusionSeq& , const FusionSeq& > Sequences;
104
+ Sequences sequences( x1 , x2 );
105
+ return boost::fusion::all( boost::fusion::zip_view< Sequences >( sequences ) ,
106
+ boost::fusion::make_fused( detail::same_size_fusion() ) );
107
+ }
108
+ };
109
+
110
+
111
+ }
112
+ }
113
+ }
114
+
115
+
116
+
117
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_SAME_SIZE_HPP_INCLUDED
@@ -0,0 +1,64 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/split.hpp
4
+
5
+ [begin_description]
6
+ Split abstraction for parallel backends.
7
+ [end_description]
8
+
9
+ Copyright 2013 Karsten Ahnert
10
+ Copyright 2013 Mario Mulansky
11
+ Copyright 2013 Pascal Germroth
12
+
13
+ Distributed under the Boost Software License, Version 1.0.
14
+ (See accompanying file LICENSE_1_0.txt or
15
+ copy at http://www.boost.org/LICENSE_1_0.txt)
16
+ */
17
+
18
+
19
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_SPLIT_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_UTIL_SPLIT_HPP_INCLUDED
21
+
22
+ namespace boost {
23
+ namespace numeric {
24
+ namespace odeint {
25
+
26
+ /*
27
+ * No default implementation of the split operation
28
+ */
29
+ template< class Container1, class Container2 , class Enabler = void >
30
+ struct split_impl
31
+ {
32
+ static void split( const Container1 &from , Container2 &to );
33
+ };
34
+
35
+ template< class Container1 , class Container2 >
36
+ void split( const Container1 &from , Container2 &to )
37
+ {
38
+ split_impl< Container1 , Container2 >::split( from , to );
39
+ }
40
+
41
+
42
+ /*
43
+ * No default implementation of the unsplit operation
44
+ */
45
+ template< class Container1, class Container2 , class Enabler = void >
46
+ struct unsplit_impl
47
+ {
48
+ static void unsplit( const Container1 &from , Container2 &to );
49
+ };
50
+
51
+ template< class Container1 , class Container2 >
52
+ void unsplit( const Container1 &from , Container2 &to )
53
+ {
54
+ unsplit_impl< Container1 , Container2 >::unsplit( from , to );
55
+ }
56
+
57
+
58
+ } // namespace odeint
59
+ } // namespace numeric
60
+ } // namespace boost
61
+
62
+
63
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_COPY_HPP_INCLUDED
64
+