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,172 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/openmp/openmp_state.hpp
4
+
5
+ [begin_description]
6
+ Wrappers for OpenMP.
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_EXTERNAL_OPENMP_OPENMP_STATE_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_OPENMP_OPENMP_STATE_HPP_INCLUDED
21
+
22
+ #include <omp.h>
23
+ #include <vector>
24
+ #include <algorithm>
25
+ #include <type_traits>
26
+ #include <boost/range/adaptor/sliced.hpp>
27
+ #include <boost/numeric/odeint/util/copy.hpp>
28
+ #include <boost/numeric/odeint/util/split.hpp>
29
+ #include <boost/numeric/odeint/util/resize.hpp>
30
+ #include <boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp>
31
+
32
+ namespace boost {
33
+ namespace numeric {
34
+ namespace odeint {
35
+
36
+ /** \brief A container that is split into distinct parts, for threading.
37
+ * Just a wrapper for vector<vector<T>>, use `copy` for splitting/joining.
38
+ */
39
+ template< class T >
40
+ struct openmp_state : public std::vector< std::vector< T > >
41
+ {
42
+ openmp_state() {}
43
+
44
+ openmp_state(size_t n, const std::vector<T>& val = std::vector<T>())
45
+ : std::vector< std::vector< T > >(n, val) {}
46
+
47
+ template<class InputIterator>
48
+ openmp_state(InputIterator first, InputIterator last)
49
+ : std::vector< std::vector< T > >(first, last) {}
50
+
51
+ openmp_state(const std::vector< std::vector< T > > &orig)
52
+ : std::vector< std::vector< T > >(orig) {}
53
+
54
+ };
55
+
56
+
57
+
58
+
59
+ template< class T >
60
+ struct is_resizeable< openmp_state< T > > : std::true_type { };
61
+
62
+
63
+ template< class T >
64
+ struct same_size_impl< openmp_state< T > , openmp_state< T > >
65
+ {
66
+ static bool same_size( const openmp_state< T > &x , const openmp_state< T > &y )
67
+ {
68
+ if( x.size() != y.size() ) return false;
69
+ for( size_t i = 0 ; i != x.size() ; i++ )
70
+ if( x[i].size() != y[i].size() ) return false;
71
+ return true;
72
+ }
73
+ };
74
+
75
+
76
+ template< class T >
77
+ struct resize_impl< openmp_state< T > , openmp_state< T > >
78
+ {
79
+ static void resize( openmp_state< T > &x , const openmp_state< T > &y )
80
+ {
81
+ x.resize( y.size() );
82
+ # pragma omp parallel for schedule(dynamic)
83
+ for(size_t i = 0 ; i < x.size() ; i++)
84
+ x[i].resize( y[i].size() );
85
+ }
86
+ };
87
+
88
+
89
+ /** \brief Copy data between openmp_states of same size. */
90
+ template< class T >
91
+ struct copy_impl< openmp_state< T >, openmp_state< T > >
92
+ {
93
+ static void copy( const openmp_state< T > &from, openmp_state< T > &to )
94
+ {
95
+ # pragma omp parallel for schedule(dynamic)
96
+ for(size_t i = 0 ; i < from.size() ; i++)
97
+ std::copy( from[i].begin() , from[i].end() , to.begin() );
98
+ }
99
+ };
100
+
101
+
102
+
103
+ /** \brief Copy data from some container to an openmp_state and resize it.
104
+ * Target container size will determine number of blocks to split into.
105
+ * If it is empty, it will be resized to the maximum number of OpenMP threads.
106
+ * SourceContainer must support `s::value_type`, `s::const_iterator`, `s.begin()`, `s.end()` and `s.size()`,
107
+ * with Random Access Iterators; i.e. it must be a Random Access Container. */
108
+ template< class SourceContainer >
109
+ struct split_impl< SourceContainer, openmp_state< typename SourceContainer::value_type > >
110
+ {
111
+ static void split( const SourceContainer &from, openmp_state< typename SourceContainer::value_type > &to )
112
+ {
113
+ if(to.size() == 0) to.resize( omp_get_max_threads() );
114
+ const size_t part = from.size() / to.size();
115
+ # pragma omp parallel for schedule(dynamic)
116
+ for(size_t i = 0 ; i < to.size() ; i++) {
117
+ typedef typename SourceContainer::const_iterator it_t;
118
+ const it_t begin = from.begin() + i * part;
119
+ it_t end = begin + part;
120
+ // for cases where from.size() % to.size() > 0
121
+ if(i + 1 == to.size() || end > from.end()) end = from.end();
122
+ to[i].resize(end - begin);
123
+ std::copy(begin, end, to[i].begin());
124
+ }
125
+ }
126
+ };
127
+
128
+ /** \brief Copy data from an openmp_state to some container and resize it.
129
+ * TargetContainer must support `s::value_type`, `s::iterator`, `s.begin()` and `s.resize(n)`,
130
+ * i.e. it must be a `std::vector`. */
131
+ template< class TargetContainer >
132
+ struct unsplit_impl< openmp_state< typename TargetContainer::value_type >, TargetContainer >
133
+ {
134
+ static void unsplit( const openmp_state< typename TargetContainer::value_type > &from , TargetContainer &to )
135
+ {
136
+ // resize target
137
+ size_t total_size = 0;
138
+ for(size_t i = 0 ; i < from.size() ; i++)
139
+ total_size += from[i].size();
140
+ to.resize( total_size );
141
+ // copy parts
142
+ typename TargetContainer::iterator out = to.begin();
143
+ for(size_t i = 0 ; i < from.size() ; i++)
144
+ out = std::copy(from[i].begin(), from[i].end(), out);
145
+ }
146
+ };
147
+
148
+
149
+
150
+
151
+ /** \brief OpenMP-parallelized algebra.
152
+ * For use with openmp_state.
153
+ */
154
+ typedef openmp_nested_algebra< range_algebra > openmp_algebra;
155
+
156
+
157
+
158
+ /** \brief Use `openmp_algebra` for `openmp_state`. */
159
+ template< class T >
160
+ struct algebra_dispatcher< openmp_state< T > >
161
+ {
162
+ typedef openmp_algebra algebra_type;
163
+ };
164
+
165
+
166
+ }
167
+ }
168
+ }
169
+
170
+
171
+ #endif
172
+
@@ -0,0 +1,27 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/thrust/thrust.hpp
4
+
5
+ [begin_description]
6
+ includes all headers required for using odeint with thrust
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_THRUST_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_HPP_DEFINED
20
+
21
+ #include <boost/numeric/odeint/external/thrust/thrust_algebra.hpp>
22
+ #include <boost/numeric/odeint/external/thrust/thrust_operations.hpp>
23
+ #include <boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp>
24
+ #include <boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp>
25
+ #include <boost/numeric/odeint/external/thrust/thrust_resize.hpp>
26
+
27
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_HPP_DEFINED
@@ -0,0 +1,217 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/thrust/thrust_algebra.hpp
4
+
5
+ [begin_description]
6
+ An algebra for thrusts device_vectors.
7
+ [end_description]
8
+
9
+ Copyright 2010-2013 Mario Mulansky
10
+ Copyright 2010-2011 Karsten Ahnert
11
+ Copyright 2013 Kyle Lutz
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_EXTERNAL_THRUST_THRUST_ALGEBRA_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_HPP_INCLUDED
21
+
22
+
23
+ #include <thrust/device_vector.h>
24
+ #include <thrust/for_each.h>
25
+ #include <thrust/iterator/zip_iterator.h>
26
+
27
+ #include <boost/range.hpp>
28
+
29
+ namespace boost {
30
+ namespace numeric {
31
+ namespace odeint {
32
+
33
+ namespace detail {
34
+
35
+ // to use in thrust::reduce
36
+ template< class Value >
37
+ struct maximum
38
+ {
39
+ template< class Fac1 , class Fac2 >
40
+ __host__ __device__
41
+ Value operator()( const Fac1 t1 , const Fac2 t2 ) const
42
+ {
43
+ return ( abs( t1 ) < abs( t2 ) ) ? t2 : t1 ;
44
+ }
45
+
46
+ typedef Value result_type;
47
+ };
48
+
49
+ }
50
+
51
+
52
+
53
+
54
+ /** ToDO extend until for_each14 for rk78 */
55
+
56
+ /*
57
+ * The const versions are needed for boost.range to work, i.e.
58
+ * it allows you to do
59
+ * for_each1( make_pair( vec1.begin() , vec1.begin() + 10 ) , op );
60
+ */
61
+
62
+ struct thrust_algebra
63
+ {
64
+ template< class StateType , class Operation >
65
+ static void for_each1( StateType &s , Operation op )
66
+ {
67
+ thrust::for_each( boost::begin(s) , boost::end(s) , op );
68
+ }
69
+
70
+ template< class StateType1 , class StateType2 , class Operation >
71
+ static void for_each2( StateType1 &s1 , StateType2 &s2 , Operation op )
72
+ {
73
+ thrust::for_each(
74
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
75
+ boost::begin(s2) ) ) ,
76
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
77
+ boost::end(s2) ) ) ,
78
+ op);
79
+ }
80
+
81
+ template< class StateType1 , class StateType2 , class StateType3 , class Operation >
82
+ static void for_each3( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , Operation op )
83
+ {
84
+ thrust::for_each(
85
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
86
+ boost::begin(s2) ,
87
+ boost::begin(s3) ) ) ,
88
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
89
+ boost::end(s2) ,
90
+ boost::end(s3) ) ) ,
91
+ op);
92
+ }
93
+
94
+ template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
95
+ class Operation >
96
+ static void for_each4( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
97
+ Operation op )
98
+ {
99
+ thrust::for_each(
100
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
101
+ boost::begin(s2) ,
102
+ boost::begin(s3) ,
103
+ boost::begin(s4) ) ) ,
104
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
105
+ boost::end(s2) ,
106
+ boost::end(s3) ,
107
+ boost::end(s4) ) ) ,
108
+ op);
109
+ }
110
+
111
+ template< class StateType1 , class StateType2 , class StateType3 ,
112
+ class StateType4 , class StateType5 ,class Operation >
113
+ static void for_each5( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
114
+ StateType5 &s5 , Operation op )
115
+ {
116
+ thrust::for_each(
117
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
118
+ boost::begin(s2) ,
119
+ boost::begin(s3) ,
120
+ boost::begin(s4) ,
121
+ boost::begin(s5) ) ) ,
122
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
123
+ boost::end(s2) ,
124
+ boost::end(s3) ,
125
+ boost::end(s4) ,
126
+ boost::end(s5) ) ) ,
127
+ op);
128
+ }
129
+
130
+ template< class StateType1 , class StateType2 , class StateType3 ,
131
+ class StateType4 , class StateType5 , class StateType6 , class Operation >
132
+ static void for_each6( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
133
+ StateType5 &s5 , StateType6 &s6 , Operation op )
134
+ {
135
+ thrust::for_each(
136
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
137
+ boost::begin(s2) ,
138
+ boost::begin(s3) ,
139
+ boost::begin(s4) ,
140
+ boost::begin(s5) ,
141
+ boost::begin(s6) ) ) ,
142
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
143
+ boost::end(s2) ,
144
+ boost::end(s3) ,
145
+ boost::end(s4) ,
146
+ boost::end(s5) ,
147
+ boost::end(s6) ) ) ,
148
+ op);
149
+ }
150
+
151
+ template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
152
+ class StateType5 , class StateType6 , class StateType7 , class Operation >
153
+ static void for_each7( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
154
+ StateType5 &s5 , StateType6 &s6 , StateType7 &s7 , Operation op )
155
+ {
156
+ thrust::for_each(
157
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
158
+ boost::begin(s2) ,
159
+ boost::begin(s3) ,
160
+ boost::begin(s4) ,
161
+ boost::begin(s5) ,
162
+ boost::begin(s6) ,
163
+ boost::begin(s7) ) ) ,
164
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
165
+ boost::end(s2) ,
166
+ boost::end(s3) ,
167
+ boost::end(s4) ,
168
+ boost::end(s5) ,
169
+ boost::end(s6) ,
170
+ boost::end(s7) ) ) ,
171
+ op);
172
+ }
173
+
174
+ template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
175
+ class StateType5 , class StateType6 , class StateType7 , class StateType8 , class Operation >
176
+ static void for_each8( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
177
+ StateType5 &s5 , StateType6 &s6 , StateType7 &s7 , StateType8 &s8 , Operation op )
178
+ {
179
+ thrust::for_each(
180
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
181
+ boost::begin(s2) ,
182
+ boost::begin(s3) ,
183
+ boost::begin(s4) ,
184
+ boost::begin(s5) ,
185
+ boost::begin(s6) ,
186
+ boost::begin(s7) ,
187
+ boost::begin(s8) ) ) ,
188
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
189
+ boost::end(s2) ,
190
+ boost::end(s3) ,
191
+ boost::end(s4) ,
192
+ boost::end(s5) ,
193
+ boost::end(s6) ,
194
+ boost::end(s7) ,
195
+ boost::end(s8) ) ) ,
196
+ op);
197
+ }
198
+
199
+ template< class S >
200
+ static typename S::value_type norm_inf( const S &s )
201
+ {
202
+ typedef typename S::value_type value_type;
203
+ return thrust::reduce( boost::begin( s ) , boost::end( s ) ,
204
+ static_cast<value_type>(0) ,
205
+ detail::maximum<value_type>() );
206
+ }
207
+
208
+ };
209
+
210
+
211
+ } // odeint
212
+ } // numeric
213
+ } // boost
214
+
215
+
216
+
217
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_HPP_INCLUDED
@@ -0,0 +1,118 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp
4
+
5
+ [begin_description]
6
+ algebra_dispatcher specialization for thrust
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_THRUST_THRUST_ALGEBRA_DISPATCHER_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_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_algebra.hpp>
25
+ #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
26
+
27
+ // specializations 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 algebra_dispatcher< thrust::host_vector< T , A > >
36
+ {
37
+ typedef thrust_algebra algebra_type;
38
+ };
39
+
40
+ // specialization for thrust device_vector
41
+ template< class T , class A >
42
+ struct algebra_dispatcher< thrust::device_vector< T , A > >
43
+ {
44
+ typedef thrust_algebra algebra_type;
45
+ };
46
+
47
+ } // namespace odeint
48
+ } // namespace numeric
49
+ } // namespace boost
50
+
51
+
52
+ // add support for thrust backend vectors, if available
53
+
54
+ #include <thrust/version.h>
55
+
56
+ #if THRUST_VERSION >= 101000
57
+
58
+ #include <thrust/detail/vector_base.h>
59
+ namespace boost { namespace numeric { namespace odeint {
60
+ template< class T , class A >
61
+ struct algebra_dispatcher< thrust::detail::vector_base< T , A > >
62
+ {
63
+ typedef thrust_algebra algebra_type;
64
+ };
65
+ } } }
66
+
67
+ #elif THRUST_VERSION >= 100600
68
+
69
+ // specialization for thrust cpp vector
70
+ #include <thrust/system/cpp/vector.h>
71
+ namespace boost { namespace numeric { namespace odeint {
72
+ template< class T , class A >
73
+ struct algebra_dispatcher< thrust::cpp::vector< T , A > >
74
+ {
75
+ typedef thrust_algebra algebra_type;
76
+ };
77
+ } } }
78
+
79
+ // specialization for thrust omp vector
80
+ #ifdef _OPENMP
81
+ #include <thrust/system/omp/vector.h>
82
+ namespace boost { namespace numeric { namespace odeint {
83
+ template< class T , class A >
84
+ struct algebra_dispatcher< thrust::omp::vector< T , A > >
85
+ {
86
+ typedef thrust_algebra algebra_type;
87
+ };
88
+ } } }
89
+ #endif // _OPENMP
90
+
91
+ // specialization for thrust tbb vector
92
+ #ifdef TBB_VERSION_MAJOR
93
+ #include <thrust/system/tbb/vector.h>
94
+ namespace boost { namespace numeric { namespace odeint {
95
+ template< class T , class A >
96
+ struct algebra_dispatcher< thrust::tbb::vector< T , A > >
97
+ {
98
+ typedef thrust_algebra algebra_type;
99
+ };
100
+ } } }
101
+ #endif // TBB_VERSION_MAJOR
102
+
103
+ // specialization for thrust cuda vector
104
+ #ifdef __CUDACC__
105
+ #include <thrust/system/cuda/vector.h>
106
+ namespace boost { namespace numeric { namespace odeint {
107
+ template< class T , class A >
108
+ struct algebra_dispatcher< thrust::cuda::vector< T , A > >
109
+ {
110
+ typedef thrust_algebra algebra_type;
111
+ };
112
+ } } }
113
+ #endif // __CUDACC__
114
+
115
+ #endif // THRUST_VERSION >= 100600
116
+
117
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_DISPATCHER_HPP_DEFINED
118
+