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,233 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/thrust/thrust_operations.hpp
4
+
5
+ [begin_description]
6
+ Operations of thrust zipped iterators. Is the counterpart of the thrust_algebra.
7
+ [end_description]
8
+
9
+ Copyright 2010-2013 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_EXTERNAL_THRUST_THRUST_OPERATIONS_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_HPP_INCLUDED
20
+
21
+ namespace boost {
22
+ namespace numeric {
23
+ namespace odeint {
24
+
25
+ #include <thrust/tuple.h>
26
+ #include <thrust/iterator/zip_iterator.h>
27
+
28
+ /**ToDo extend to scale_sum13 for rk78 */
29
+
30
+ struct thrust_operations
31
+ {
32
+ template< class Fac1 = double , class Fac2 = Fac1 >
33
+ struct scale_sum2
34
+ {
35
+ const Fac1 m_alpha1;
36
+ const Fac2 m_alpha2;
37
+
38
+ scale_sum2( const Fac1 alpha1 , const Fac2 alpha2 )
39
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) { }
40
+
41
+ template< class Tuple >
42
+ __host__ __device__
43
+ void operator()( Tuple t ) const
44
+ {
45
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) + m_alpha2 * thrust::get<2>(t);
46
+ }
47
+ };
48
+
49
+ template< class Fac1 = double , class Fac2 = Fac1 >
50
+ struct scale_sum_swap2
51
+ {
52
+ const Fac1 m_alpha1;
53
+ const Fac2 m_alpha2;
54
+
55
+ scale_sum_swap2( const Fac1 alpha1 , const Fac2 alpha2 )
56
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) { }
57
+
58
+ template< class Tuple >
59
+ __host__ __device__
60
+ void operator()( Tuple t ) const
61
+ {
62
+ typename thrust::tuple_element<0,Tuple>::type tmp = thrust::get<0>(t);
63
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) + m_alpha2 * thrust::get<2>(t);
64
+ thrust::get<1>(t) = tmp;
65
+ }
66
+ };
67
+
68
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 >
69
+ struct scale_sum3
70
+ {
71
+ const Fac1 m_alpha1;
72
+ const Fac2 m_alpha2;
73
+ const Fac3 m_alpha3;
74
+
75
+ scale_sum3( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 )
76
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) { }
77
+
78
+ template< class Tuple >
79
+ __host__ __device__
80
+ void operator()( Tuple t ) const
81
+ {
82
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
83
+ m_alpha2 * thrust::get<2>(t) +
84
+ m_alpha3 * thrust::get<3>(t);
85
+ }
86
+ };
87
+
88
+
89
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 , class Fac4 = Fac3 >
90
+ struct scale_sum4
91
+ {
92
+ const Fac1 m_alpha1;
93
+ const Fac2 m_alpha2;
94
+ const Fac3 m_alpha3;
95
+ const Fac4 m_alpha4;
96
+
97
+ scale_sum4( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 , const Fac4 alpha4 )
98
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) , m_alpha4( alpha4 ){ }
99
+
100
+ template< class Tuple >
101
+ __host__ __device__
102
+ void operator()( Tuple t ) const
103
+ {
104
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
105
+ m_alpha2 * thrust::get<2>(t) +
106
+ m_alpha3 * thrust::get<3>(t) +
107
+ m_alpha4 * thrust::get<4>(t);
108
+ }
109
+ };
110
+
111
+
112
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 ,
113
+ class Fac4 = Fac3 , class Fac5 = Fac4 >
114
+ struct scale_sum5
115
+ {
116
+ const Fac1 m_alpha1;
117
+ const Fac2 m_alpha2;
118
+ const Fac3 m_alpha3;
119
+ const Fac4 m_alpha4;
120
+ const Fac5 m_alpha5;
121
+
122
+ scale_sum5( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
123
+ const Fac4 alpha4 , const Fac5 alpha5 )
124
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
125
+ m_alpha4( alpha4 ) , m_alpha5( alpha5 ) { }
126
+
127
+ template< class Tuple >
128
+ __host__ __device__
129
+ void operator()( Tuple t ) const
130
+ {
131
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
132
+ m_alpha2 * thrust::get<2>(t) +
133
+ m_alpha3 * thrust::get<3>(t) +
134
+ m_alpha4 * thrust::get<4>(t) +
135
+ m_alpha5 * thrust::get<5>(t);
136
+ }
137
+ };
138
+
139
+
140
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 ,
141
+ class Fac4 = Fac3 , class Fac5 = Fac4 , class Fac6 = Fac5 >
142
+ struct scale_sum6
143
+ {
144
+ const Fac1 m_alpha1;
145
+ const Fac2 m_alpha2;
146
+ const Fac3 m_alpha3;
147
+ const Fac4 m_alpha4;
148
+ const Fac5 m_alpha5;
149
+ const Fac6 m_alpha6;
150
+
151
+ scale_sum6( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
152
+ const Fac4 alpha4 , const Fac5 alpha5 , const Fac6 alpha6 )
153
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
154
+ m_alpha4( alpha4 ) , m_alpha5( alpha5 ) , m_alpha6( alpha6 ) { }
155
+
156
+ template< class Tuple >
157
+ __host__ __device__
158
+ void operator()( Tuple t ) const
159
+ {
160
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
161
+ m_alpha2 * thrust::get<2>(t) +
162
+ m_alpha3 * thrust::get<3>(t) +
163
+ m_alpha4 * thrust::get<4>(t) +
164
+ m_alpha5 * thrust::get<5>(t) +
165
+ m_alpha6 * thrust::get<6>(t);
166
+ }
167
+ };
168
+
169
+
170
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 , class Fac4 = Fac3 ,
171
+ class Fac5 = Fac4 , class Fac6 = Fac5 , class Fac7 = Fac6 >
172
+ struct scale_sum7
173
+ {
174
+ const Fac1 m_alpha1;
175
+ const Fac2 m_alpha2;
176
+ const Fac3 m_alpha3;
177
+ const Fac4 m_alpha4;
178
+ const Fac5 m_alpha5;
179
+ const Fac6 m_alpha6;
180
+ const Fac7 m_alpha7;
181
+
182
+ scale_sum7( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
183
+ const Fac4 alpha4 , const Fac5 alpha5 , const Fac6 alpha6 , const Fac7 alpha7 )
184
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
185
+ m_alpha4( alpha4 ) , m_alpha5( alpha5 ) , m_alpha6( alpha6 ) , m_alpha7( alpha7 ) { }
186
+
187
+ template< class Tuple >
188
+ __host__ __device__
189
+ void operator()( Tuple t ) const
190
+ {
191
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
192
+ m_alpha2 * thrust::get<2>(t) +
193
+ m_alpha3 * thrust::get<3>(t) +
194
+ m_alpha4 * thrust::get<4>(t) +
195
+ m_alpha5 * thrust::get<5>(t) +
196
+ m_alpha6 * thrust::get<6>(t) +
197
+ m_alpha7 * thrust::get<7>(t) ;
198
+ }
199
+ };
200
+
201
+
202
+
203
+
204
+ template< class Fac1 = double >
205
+ struct rel_error
206
+ {
207
+ const Fac1 m_eps_abs , m_eps_rel , m_a_x , m_a_dxdt;
208
+
209
+ rel_error( const Fac1 eps_abs , const Fac1 eps_rel , const Fac1 a_x , const Fac1 a_dxdt )
210
+ : m_eps_abs( eps_abs ) , m_eps_rel( eps_rel ) , m_a_x( a_x ) , m_a_dxdt( a_dxdt ) { }
211
+
212
+
213
+ template< class Tuple >
214
+ __host__ __device__
215
+ void operator()( Tuple t ) const
216
+ {
217
+ using std::abs;
218
+ thrust::get< 0 >( t ) = abs( thrust::get< 0 >( t ) ) /
219
+ ( m_eps_abs + m_eps_rel * ( m_a_x * abs( thrust::get< 1 >( t ) + m_a_dxdt * abs( thrust::get< 2 >( t ) ) ) ) );
220
+ }
221
+
222
+ typedef void result_type;
223
+ };
224
+
225
+
226
+ };
227
+
228
+ } // odeint
229
+ } // numeric
230
+ } // boost
231
+
232
+
233
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_HPP_INCLUDED
@@ -0,0 +1,118 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp
4
+
5
+ [begin_description]
6
+ operations_dispatcher specialization for thrust
7
+ [end_description]
8
+
9
+ Copyright 2013-2014 Karsten Ahnert
10
+ Copyright 2013-2014 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_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED
20
+
21
+ #include <thrust/host_vector.h>
22
+ #include <thrust/device_vector.h>
23
+
24
+ #include <boost/numeric/odeint/external/thrust/thrust_operations.hpp>
25
+ #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
26
+
27
+ // support for the standard thrust containers
28
+
29
+ namespace boost {
30
+ namespace numeric {
31
+ namespace odeint {
32
+
33
+ // specialization for thrust host_vector
34
+ template< class T , class A >
35
+ struct operations_dispatcher< thrust::host_vector< T , A > >
36
+ {
37
+ typedef thrust_operations operations_type;
38
+ };
39
+
40
+ // specialization for thrust device_vector
41
+ template< class T , class A >
42
+ struct operations_dispatcher< thrust::device_vector< T , A > >
43
+ {
44
+ typedef thrust_operations operations_type;
45
+ };
46
+
47
+ } // namespace odeint
48
+ } // namespace numeric
49
+ } // namespace boost
50
+
51
+ // add support for thrust backend vectors, if available
52
+
53
+ #include <thrust/version.h>
54
+
55
+ #if THRUST_VERSION >= 101000
56
+
57
+ #include <thrust/detail/vector_base.h>
58
+ namespace boost { namespace numeric { namespace odeint {
59
+ template< class T , class A >
60
+ struct operations_dispatcher< thrust::detail::vector_base< T , A > >
61
+ {
62
+ typedef thrust_operations operations_type;
63
+ };
64
+ } } }
65
+
66
+ #elif THRUST_VERSION >= 100600
67
+
68
+ // specialization for thrust cpp vector
69
+ #include <thrust/system/cpp/vector.h>
70
+ namespace boost { namespace numeric { namespace odeint {
71
+ template< class T , class A >
72
+ struct operations_dispatcher< thrust::cpp::vector< T , A > >
73
+ {
74
+ typedef thrust_operations operations_type;
75
+ };
76
+ } } }
77
+
78
+ // specialization for thrust omp vector
79
+ #ifdef _OPENMP
80
+ #include <thrust/system/omp/vector.h>
81
+ namespace boost { namespace numeric { namespace odeint {
82
+ template< class T , class A >
83
+ struct operations_dispatcher< thrust::omp::vector< T , A > >
84
+ {
85
+ typedef thrust_operations operations_type;
86
+ };
87
+ } } }
88
+ #endif // _OPENMP
89
+
90
+ // specialization for thrust tbb vector
91
+ #ifdef TBB_VERSION_MAJOR
92
+ #include <thrust/system/tbb/vector.h>
93
+ namespace boost { namespace numeric { namespace odeint {
94
+ template< class T , class A >
95
+ struct operations_dispatcher< thrust::tbb::vector< T , A > >
96
+ {
97
+ typedef thrust_operations operations_type;
98
+ };
99
+ } } }
100
+ #endif // TBB_VERSION_MAJOR
101
+
102
+ // specialization for thrust cuda vector
103
+ #ifdef __CUDACC__
104
+ #include <thrust/system/cuda/vector.h>
105
+ namespace boost { namespace numeric { namespace odeint {
106
+ template< class T , class A >
107
+ struct operations_dispatcher< thrust::cuda::vector< T , A > >
108
+ {
109
+ typedef thrust_operations operations_type;
110
+ };
111
+ } } }
112
+ #endif // __CUDACC__
113
+
114
+ #endif // THRUST_VERSION >= 100600
115
+
116
+
117
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED
118
+
@@ -0,0 +1,197 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/thrust/thrust_resize.hpp
4
+
5
+ [begin_description]
6
+ Enable resizing for thrusts device and host_vector.
7
+ [end_description]
8
+
9
+ Copyright 2010-2014 Mario Mulansky
10
+ Copyright 2010-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_EXTERNAL_THRUST_THRUST_RESIZE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_RESIZE_HPP_INCLUDED
20
+
21
+ #include <type_traits>
22
+
23
+ #include <boost/range.hpp>
24
+
25
+ #include <thrust/device_vector.h>
26
+ #include <thrust/host_vector.h>
27
+ #include <thrust/distance.h>
28
+
29
+ #include <boost/numeric/odeint/util/resize.hpp>
30
+ #include <boost/numeric/odeint/util/same_size.hpp>
31
+ #include <boost/numeric/odeint/util/copy.hpp>
32
+
33
+ namespace boost {
34
+ namespace numeric {
35
+ namespace odeint {
36
+
37
+ // some macros that define the necessary utilities
38
+
39
+ #define ODEINT_THRUST_VECTOR_IS_RESIZEABLE( THRUST_VECTOR ) \
40
+ template< class T , class A > \
41
+ struct is_resizeable< THRUST_VECTOR<T,A> > \
42
+ { \
43
+ struct type : public std::true_type { }; \
44
+ const static bool value = type::value; \
45
+ }; \
46
+
47
+ #define ODEINT_TRHUST_VECTOR_RESIZE_IMPL( THRUST_VECTOR ) \
48
+ template< class T, class A > \
49
+ struct resize_impl< THRUST_VECTOR<T,A> , THRUST_VECTOR<T,A> > \
50
+ { \
51
+ static void resize( THRUST_VECTOR<T,A> &x , \
52
+ const THRUST_VECTOR<T,A> &y ) \
53
+ { \
54
+ x.resize( y.size() ); \
55
+ } \
56
+ }; \
57
+ template< class T, class A, typename Range > \
58
+ struct resize_impl< THRUST_VECTOR<T,A> , Range > \
59
+ { \
60
+ static void resize( THRUST_VECTOR<T,A> &x , \
61
+ const Range &y ) \
62
+ { \
63
+ x.resize( thrust::distance(boost::begin(y), \
64
+ boost::end(y))); \
65
+ } \
66
+ }; \
67
+
68
+
69
+ #define ODEINT_THRUST_SAME_SIZE_IMPL( THRUST_VECTOR ) \
70
+ template< class T , class A > \
71
+ struct same_size_impl< THRUST_VECTOR<T,A> , THRUST_VECTOR<T,A> > \
72
+ { \
73
+ static bool same_size( const THRUST_VECTOR<T,A> &x , \
74
+ const THRUST_VECTOR<T,A> &y ) \
75
+ { \
76
+ return x.size() == y.size(); \
77
+ } \
78
+ }; \
79
+ template< class T , class A, typename Range > \
80
+ struct same_size_impl< THRUST_VECTOR<T,A> , Range > \
81
+ { \
82
+ static bool same_size( const THRUST_VECTOR<T,A> &x , \
83
+ const Range &y ) \
84
+ { \
85
+ return x.size() == thrust::distance(boost::begin(y), \
86
+ boost::end(y)); \
87
+ } \
88
+ }; \
89
+
90
+
91
+ #define ODEINT_THRUST_COPY_IMPL( THRUST_VECTOR ) \
92
+ template< class Container1 , class T , class A > \
93
+ struct copy_impl< Container1 , THRUST_VECTOR<T,A> > \
94
+ { \
95
+ static void copy( const Container1 &from , THRUST_VECTOR<T,A> &to ) \
96
+ { \
97
+ thrust::copy( boost::begin( from ) , boost::end( from ) , \
98
+ boost::begin( to ) ); \
99
+ } \
100
+ }; \
101
+ \
102
+ template< class T , class A , class Container2 > \
103
+ struct copy_impl< THRUST_VECTOR<T,A> , Container2 > \
104
+ { \
105
+ static void copy( const THRUST_VECTOR<T,A> &from , Container2 &to ) \
106
+ { \
107
+ thrust::copy( boost::begin( from ) , boost::end( from ) , \
108
+ boost::begin( to ) ); \
109
+ } \
110
+ }; \
111
+ \
112
+ template< class T , class A > \
113
+ struct copy_impl< THRUST_VECTOR<T,A> , THRUST_VECTOR<T,A> > \
114
+ { \
115
+ static void copy( const THRUST_VECTOR<T,A> &from , \
116
+ THRUST_VECTOR<T,A> &to ) \
117
+ { \
118
+ thrust::copy( boost::begin( from ) , boost::end( from ) , \
119
+ boost::begin( to ) ); \
120
+ } \
121
+ }; \
122
+
123
+ // add support for the standard thrust containers
124
+
125
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::device_vector )
126
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::device_vector )
127
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::device_vector )
128
+ ODEINT_THRUST_COPY_IMPL( thrust::device_vector )
129
+
130
+
131
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::host_vector )
132
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::host_vector )
133
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::host_vector )
134
+ ODEINT_THRUST_COPY_IMPL( thrust::host_vector )
135
+
136
+
137
+ } // odeint
138
+ } // numeric
139
+ } // boost
140
+
141
+ // add support for thrust backend vectors, if available
142
+
143
+ #include <thrust/version.h>
144
+
145
+ #if THRUST_VERSION >= 101000
146
+
147
+ #include <thrust/detail/vector_base.h>
148
+ namespace boost { namespace numeric { namespace odeint {
149
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::detail::vector_base )
150
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::detail::vector_base )
151
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::detail::vector_base )
152
+ ODEINT_THRUST_COPY_IMPL( thrust::detail::vector_base )
153
+ } } }
154
+
155
+ #elif THRUST_VERSION >= 100600
156
+
157
+ #include <thrust/system/cpp/vector.h>
158
+ namespace boost { namespace numeric { namespace odeint {
159
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::cpp::vector )
160
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::cpp::vector )
161
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::cpp::vector )
162
+ ODEINT_THRUST_COPY_IMPL( thrust::cpp::vector )
163
+ } } }
164
+
165
+ #ifdef _OPENMP
166
+ #include <thrust/system/omp/vector.h>
167
+ namespace boost { namespace numeric { namespace odeint {
168
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::omp::vector )
169
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::omp::vector )
170
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::omp::vector )
171
+ ODEINT_THRUST_COPY_IMPL( thrust::omp::vector )
172
+ } } }
173
+ #endif // _OPENMP
174
+
175
+ #ifdef TBB_VERSION_MAJOR
176
+ #include <thrust/system/tbb/vector.h>
177
+ namespace boost { namespace numeric { namespace odeint {
178
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::tbb::vector )
179
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::tbb::vector )
180
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::tbb::vector )
181
+ ODEINT_THRUST_COPY_IMPL( thrust::tbb::vector )
182
+ } } }
183
+ #endif // TBB_VERSION_MAJOR
184
+
185
+ #ifdef __CUDACC__
186
+ #include <thrust/system/cuda/vector.h>
187
+ namespace boost { namespace numeric { namespace odeint {
188
+ ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::cuda::vector )
189
+ ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::cuda::vector )
190
+ ODEINT_THRUST_SAME_SIZE_IMPL( thrust::cuda::vector )
191
+ ODEINT_THRUST_COPY_IMPL( thrust::cuda::vector )
192
+ } } }
193
+ #endif // __CUDACC__
194
+
195
+ #endif // THRUST_VERSION >= 100600
196
+
197
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_RESIZE_HPP_INCLUDED
@@ -0,0 +1,28 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl.hpp
4
+
5
+ [begin_description]
6
+ includes all headers required for using vexcl in odeint
7
+ [end_description]
8
+
9
+ Copyright 2013 Karsten Ahnert
10
+ Copyright 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_EXTERNAL_VEXCL_VEXCL_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_HPP_DEFINED
20
+
21
+ #include <boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp>
22
+ #include <boost/numeric/odeint/external/vexcl/vexcl_resize.hpp>
23
+ #include <boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp>
24
+ #include <boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp>
25
+ #include <boost/numeric/odeint/external/vexcl/vexcl_abs.hpp>
26
+ #include <boost/numeric/odeint/external/vexcl/vexcl_copy.hpp>
27
+
28
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_HPP_DEFINED
@@ -0,0 +1,61 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl_abs.hpp
4
+
5
+ [begin_description]
6
+ abs() specialization for vexcl
7
+ [end_description]
8
+
9
+ Copyright 2009-2013 Karsten Ahnert
10
+ Copyright 2009-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_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
20
+
21
+ #include <vexcl/vector.hpp>
22
+ #include <vexcl/multivector.hpp>
23
+ #include <vexcl/operations.hpp>
24
+
25
+ namespace vex {
26
+
27
+ template <typename T, size_t N>
28
+ typename std::enable_if<
29
+ std::is_integral<T>::value,
30
+ typename boost::proto::result_of::make_expr<
31
+ boost::proto::tag::function,
32
+ abs_func,
33
+ const vex::multivector<T, N>&
34
+ >::type const
35
+ >::type
36
+ abs(const multivector<T, N> &arg) {
37
+ return boost::proto::make_expr<boost::proto::tag::function>(
38
+ abs_func(),
39
+ boost::ref(arg)
40
+ );
41
+ }
42
+
43
+ template <typename T, size_t N>
44
+ typename std::enable_if<
45
+ !std::is_integral<T>::value,
46
+ typename boost::proto::result_of::make_expr<
47
+ boost::proto::tag::function,
48
+ fabs_func,
49
+ const vex::multivector<T, N>&
50
+ >::type const
51
+ >::type
52
+ abs(const multivector<T, N> &arg) {
53
+ return boost::proto::make_expr<boost::proto::tag::function>(
54
+ fabs_func(),
55
+ boost::ref(arg)
56
+ );
57
+ }
58
+
59
+ } // namespace vex
60
+
61
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
@@ -0,0 +1,51 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp
4
+
5
+ [begin_description]
6
+ algebra_dispatcher specialization for vexcl
7
+ [end_description]
8
+
9
+ Copyright 2013 Karsten Ahnert
10
+ Copyright 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_EXTERNAL_VEXCL_VEXCL_ALGEBRA_DISPATCHER_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ALGEBRA_DISPATCHER_HPP_DEFINED
20
+
21
+ #include <vexcl/vector.hpp>
22
+ #include <vexcl/multivector.hpp>
23
+
24
+ #include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
25
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
26
+
27
+
28
+ namespace boost {
29
+ namespace numeric {
30
+ namespace odeint {
31
+
32
+ // specialization for vexcl vector
33
+ template< typename T >
34
+ struct algebra_dispatcher< vex::vector< T > >
35
+ {
36
+ typedef vector_space_algebra algebra_type;
37
+ };
38
+
39
+ // specialization for vexcl multivector
40
+ template< typename T , size_t N >
41
+ struct algebra_dispatcher< vex::multivector< T , N > >
42
+ {
43
+ typedef vector_space_algebra algebra_type;
44
+ };
45
+
46
+ } // namespace odeint
47
+ } // namespace numeric
48
+ } // namespace boost
49
+
50
+
51
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ALGEBRA_DISPATCHER_HPP_DEFINED