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,55 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl_copy.hpp
4
+
5
+ [begin_description]
6
+ copy_impl specializations for vexcl
7
+ [end_description]
8
+
9
+ Copyright 2009-2011 Karsten Ahnert
10
+ Copyright 2009-2011 Mario Mulansky
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_COPY_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_COPY_HPP_INCLUDED
20
+
21
+ #include <vexcl/vector.hpp>
22
+ #include <vexcl/multivector.hpp>
23
+
24
+ #include <boost/numeric/odeint/util/copy.hpp>
25
+
26
+ namespace boost {
27
+ namespace numeric {
28
+ namespace odeint {
29
+
30
+ template< typename T1, typename T2 >
31
+ struct copy_impl< vex::vector<T1>, vex::vector<T2> >
32
+ {
33
+ static void copy( const vex::vector<T1> &from , vex::vector<T2> &to )
34
+ {
35
+ to = from;
36
+ }
37
+ };
38
+
39
+ template< typename T1, typename T2, size_t N >
40
+ struct copy_impl< vex::multivector<T1, N>, vex::multivector<T2, N> >
41
+ {
42
+ static void copy( const vex::multivector<T1, N> &from , vex::multivector<T2, N> &to )
43
+ {
44
+ to = from;
45
+ }
46
+ };
47
+
48
+
49
+ } // namespace odeint
50
+ } // namespace numeric
51
+ } // namespace boost
52
+
53
+
54
+
55
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_COPY_HPP_INCLUDED
@@ -0,0 +1,68 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp
4
+
5
+ [begin_description]
6
+ vector_space_norm_inf 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_NORM_INF_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_NORM_INF_HPP_DEFINED
20
+
21
+ #include <map>
22
+ #include <algorithm>
23
+
24
+ #include <vexcl/vector.hpp>
25
+ #include <vexcl/multivector.hpp>
26
+ #include <vexcl/reductor.hpp>
27
+
28
+ #include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
29
+
30
+ namespace boost {
31
+ namespace numeric {
32
+ namespace odeint {
33
+
34
+ // specialization for vexcl vector
35
+ template <typename T>
36
+ struct vector_space_norm_inf< vex::vector<T> > {
37
+ typedef T result_type;
38
+
39
+ T operator()( const vex::vector<T> &x ) const {
40
+ const auto &max = vex::get_reductor<T, vex::MAX>(x.queue_list());
41
+
42
+ return max( fabs(x) );
43
+ }
44
+ };
45
+
46
+ // specialization for vexcl multivector
47
+ template <typename T, size_t N>
48
+ struct vector_space_norm_inf< vex::multivector<T, N> > {
49
+ typedef T result_type;
50
+
51
+ T operator()( const vex::multivector<T, N> &x ) const {
52
+ const auto &max = vex::get_reductor<T, vex::MAX>(x.queue_list());
53
+
54
+ // Reducing a multivector results in std::array<T, N>:
55
+ auto m = max( fabs(x) );
56
+
57
+ // We will need to reduce it even further:
58
+ return *std::max_element(m.begin(), m.end());
59
+ }
60
+ };
61
+
62
+
63
+ } // namespace odeint
64
+ } // namespace numeric
65
+ } // namespace boost
66
+
67
+
68
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_NORM_INF_HPP_DEFINED
@@ -0,0 +1,96 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl_resize.hpp
4
+
5
+ [begin_description]
6
+ Enable resizing for vexcl vector and multivector.
7
+ [end_description]
8
+
9
+ Copyright 2012 Karsten Ahnert
10
+ Copyright 2012 Mario Mulansky
11
+ Copyright 2012 Denis Demidov
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_VEXCL_VEXCL_RESIZE_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_RESIZE_HPP_INCLUDED
21
+
22
+ #include <type_traits>
23
+
24
+ #include <vexcl/vector.hpp>
25
+ #include <vexcl/multivector.hpp>
26
+
27
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
28
+ #include <boost/numeric/odeint/util/resize.hpp>
29
+ #include <boost/numeric/odeint/util/same_size.hpp>
30
+
31
+ namespace boost {
32
+ namespace numeric {
33
+ namespace odeint {
34
+
35
+
36
+
37
+ /*
38
+ * specializations for vex::vector< T >
39
+ */
40
+ template< typename T >
41
+ struct is_resizeable< vex::vector< T > > : std::true_type { };
42
+
43
+ template< typename T >
44
+ struct resize_impl< vex::vector< T > , vex::vector< T > >
45
+ {
46
+ static void resize( vex::vector< T > &x1 , const vex::vector< T > &x2 )
47
+ {
48
+ x1.resize( x2.queue_list() , x2.size() );
49
+ }
50
+ };
51
+
52
+ template< typename T >
53
+ struct same_size_impl< vex::vector< T > , vex::vector< T > >
54
+ {
55
+ static bool same_size( const vex::vector< T > &x1 , const vex::vector< T > &x2 )
56
+ {
57
+ return x1.size() == x2.size();
58
+ }
59
+ };
60
+
61
+
62
+
63
+
64
+
65
+ /*
66
+ * specializations for vex::multivector< T >
67
+ */
68
+ template< typename T , size_t N >
69
+ struct is_resizeable< vex::multivector< T , N > > : std::true_type { };
70
+
71
+ template< typename T , size_t N >
72
+ struct resize_impl< vex::multivector< T , N > , vex::multivector< T , N > >
73
+ {
74
+ static void resize( vex::multivector< T , N > &x1 , const vex::multivector< T , N > &x2 )
75
+ {
76
+ x1.resize( x2.queue_list() , x2.size() );
77
+ }
78
+ };
79
+
80
+ template< typename T , size_t N >
81
+ struct same_size_impl< vex::multivector< T , N > , vex::multivector< T , N > >
82
+ {
83
+ static bool same_size( const vex::multivector< T , N > &x1 , const vex::multivector< T , N > &x2 )
84
+ {
85
+ return x1.size() == x2.size();
86
+ }
87
+ };
88
+
89
+
90
+ } // namespace odeint
91
+ } // namespace numeric
92
+ } // namespace boost
93
+
94
+
95
+
96
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_RESIZE_HPP_INCLUDED
@@ -0,0 +1,58 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp
4
+
5
+ [begin_description]
6
+ Check if two VexCL containers are the same instance.
7
+ [end_description]
8
+
9
+ Copyright 2009-2011 Karsten Ahnert
10
+ Copyright 2009-2011 Mario Mulansky
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_SAME_INSTANCE_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_SAME_INSTANCE_HPP_INCLUDED
20
+
21
+ #include <vexcl/vector.hpp>
22
+ #include <vexcl/multivector.hpp>
23
+
24
+ #include <boost/numeric/odeint/util/same_instance.hpp>
25
+
26
+ namespace boost {
27
+ namespace numeric {
28
+ namespace odeint {
29
+
30
+ template <typename T>
31
+ struct same_instance_impl< vex::vector<T> , vex::vector<T> >
32
+ {
33
+ static bool same_instance( const vex::vector<T> &x1 , const vex::vector<T> &x2 )
34
+ {
35
+ return
36
+ static_cast<const vex::vector<T>*>(&x1) ==
37
+ static_cast<const vex::vector<T>*>(&x2);
38
+ }
39
+ };
40
+
41
+ template <typename T, size_t N>
42
+ struct same_instance_impl< vex::multivector<T, N> , vex::multivector<T, N> >
43
+ {
44
+ static bool same_instance( const vex::multivector<T, N> &x1 , const vex::multivector<T, N> &x2 )
45
+ {
46
+ return
47
+ static_cast<const vex::multivector<T, N>*>(&x1) ==
48
+ static_cast<const vex::multivector<T, N>*>(&x2);
49
+ }
50
+ };
51
+
52
+ } // namespace odeint
53
+ } // namespace numeric
54
+ } // namespace boost
55
+
56
+
57
+
58
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_SAME_INSTANCE_HPP_INCLUDED
@@ -0,0 +1,226 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/viennacl_operations.hpp
4
+
5
+ [begin_description]
6
+ ViennaCL operations.
7
+ [end_description]
8
+
9
+ Copyright 2012 Denis Demidov
10
+ Copyright 2012 Karsten Ahnert
11
+ Copyright 2012 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_EXTERNAL_VIENNACL_VIENNACL_OPERATIONS_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VIENNACL_VIENNACL_OPERATIONS_HPP_INCLUDED
21
+
22
+ #include <viennacl/vector.hpp>
23
+
24
+ #ifdef VIENNACL_WITH_OPENCL
25
+ # include <viennacl/generator/custom_operation.hpp>
26
+ #endif
27
+
28
+ namespace boost {
29
+ namespace numeric {
30
+ namespace odeint {
31
+
32
+
33
+ #ifdef VIENNACL_WITH_OPENCL
34
+ struct viennacl_operations
35
+ {
36
+
37
+ template< class Fac1 = double , class Fac2 = Fac1 >
38
+ struct scale_sum2
39
+ {
40
+ const Fac1 m_alpha1;
41
+ const Fac2 m_alpha2;
42
+
43
+ scale_sum2( Fac1 alpha1 , Fac2 alpha2 )
44
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 )
45
+ { }
46
+
47
+ template< class T1 , class T2 , class T3 >
48
+ void operator()( viennacl::vector<T1> &v1 ,
49
+ const viennacl::vector<T2> &v2 ,
50
+ const viennacl::vector<T3> &v3
51
+ ) const
52
+ {
53
+ using namespace viennacl;
54
+
55
+ static generator::symbolic_vector <0, T1> sym_v1;
56
+ static generator::symbolic_vector <1, T2> sym_v2;
57
+ static generator::symbolic_vector <2, T3> sym_v3;
58
+ static generator::cpu_symbolic_scalar<3, Fac1> sym_a1;
59
+ static generator::cpu_symbolic_scalar<4, Fac2> sym_a2;
60
+
61
+ static generator::custom_operation op(
62
+ sym_v1 = sym_a1 * sym_v2
63
+ + sym_a2 * sym_v3,
64
+ "scale_sum2"
65
+ );
66
+
67
+ ocl::enqueue( op(v1, v2, v3, m_alpha1, m_alpha2) );
68
+ }
69
+
70
+ typedef void result_type;
71
+ };
72
+
73
+
74
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 >
75
+ struct scale_sum3
76
+ {
77
+ const Fac1 m_alpha1;
78
+ const Fac2 m_alpha2;
79
+ const Fac3 m_alpha3;
80
+
81
+ scale_sum3( Fac1 alpha1 , Fac2 alpha2 , Fac3 alpha3 )
82
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 )
83
+ { }
84
+
85
+ template< class T1 , class T2 , class T3 , class T4 >
86
+ void operator()( viennacl::vector<T1> &v1 ,
87
+ const viennacl::vector<T2> &v2 ,
88
+ const viennacl::vector<T3> &v3 ,
89
+ const viennacl::vector<T4> &v4
90
+ ) const
91
+ {
92
+ using namespace viennacl;
93
+
94
+ static generator::symbolic_vector <0, T1> sym_v1;
95
+ static generator::symbolic_vector <1, T2> sym_v2;
96
+ static generator::symbolic_vector <2, T3> sym_v3;
97
+ static generator::symbolic_vector <3, T4> sym_v4;
98
+ static generator::cpu_symbolic_scalar<4, Fac1> sym_a1;
99
+ static generator::cpu_symbolic_scalar<5, Fac2> sym_a2;
100
+ static generator::cpu_symbolic_scalar<6, Fac3> sym_a3;
101
+
102
+ static generator::custom_operation op(
103
+ sym_v1 = sym_a1 * sym_v2
104
+ + sym_a2 * sym_v3
105
+ + sym_a3 * sym_v4,
106
+ "scale_sum3"
107
+ );
108
+
109
+ ocl::enqueue( op(v1, v2, v3, v4, m_alpha1, m_alpha2, m_alpha3) );
110
+ }
111
+
112
+ typedef void result_type;
113
+ };
114
+
115
+
116
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 , class Fac4 = Fac3 >
117
+ struct scale_sum4
118
+ {
119
+ const Fac1 m_alpha1;
120
+ const Fac2 m_alpha2;
121
+ const Fac3 m_alpha3;
122
+ const Fac4 m_alpha4;
123
+
124
+ scale_sum4( Fac1 alpha1 , Fac2 alpha2 , Fac3 alpha3 , Fac4 alpha4 )
125
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) , m_alpha4( alpha4 ) { }
126
+
127
+ template< class T1 , class T2 , class T3 , class T4 , class T5 >
128
+ void operator()( viennacl::vector<T1> &v1 ,
129
+ const viennacl::vector<T2> &v2 ,
130
+ const viennacl::vector<T3> &v3 ,
131
+ const viennacl::vector<T4> &v4 ,
132
+ const viennacl::vector<T5> &v5
133
+ ) const
134
+ {
135
+ using namespace viennacl;
136
+
137
+ static generator::symbolic_vector <0, T1> sym_v1;
138
+ static generator::symbolic_vector <1, T2> sym_v2;
139
+ static generator::symbolic_vector <2, T3> sym_v3;
140
+ static generator::symbolic_vector <3, T4> sym_v4;
141
+ static generator::symbolic_vector <4, T5> sym_v5;
142
+ static generator::cpu_symbolic_scalar<5, Fac1> sym_a1;
143
+ static generator::cpu_symbolic_scalar<6, Fac2> sym_a2;
144
+ static generator::cpu_symbolic_scalar<7, Fac3> sym_a3;
145
+ static generator::cpu_symbolic_scalar<8, Fac4> sym_a4;
146
+
147
+ static generator::custom_operation op(
148
+ sym_v1 = sym_a1 * sym_v2
149
+ + sym_a2 * sym_v3
150
+ + sym_a3 * sym_v4
151
+ + sym_a4 * sym_v5,
152
+ "scale_sum4"
153
+ );
154
+
155
+ ocl::enqueue( op(v1, v2, v3, v4, v5,
156
+ m_alpha1, m_alpha2, m_alpha3, m_alpha4) );
157
+ }
158
+
159
+ typedef void result_type;
160
+ };
161
+
162
+
163
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 , class Fac4 = Fac3 , class Fac5 = Fac4 >
164
+ struct scale_sum5
165
+ {
166
+ const Fac1 m_alpha1;
167
+ const Fac2 m_alpha2;
168
+ const Fac3 m_alpha3;
169
+ const Fac4 m_alpha4;
170
+ const Fac5 m_alpha5;
171
+
172
+ scale_sum5( Fac1 alpha1 , Fac2 alpha2 , Fac3 alpha3 , Fac4 alpha4 , Fac5 alpha5 )
173
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) , m_alpha4( alpha4 ) , m_alpha5( alpha5 ) { }
174
+
175
+ template< class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
176
+ void operator()( viennacl::vector<T1> &v1 ,
177
+ const viennacl::vector<T2> &v2 ,
178
+ const viennacl::vector<T3> &v3 ,
179
+ const viennacl::vector<T4> &v4 ,
180
+ const viennacl::vector<T5> &v5 ,
181
+ const viennacl::vector<T6> &v6
182
+ ) const
183
+ {
184
+ using namespace viennacl;
185
+
186
+ static generator::symbolic_vector < 0, T1> sym_v1;
187
+ static generator::symbolic_vector < 1, T2> sym_v2;
188
+ static generator::symbolic_vector < 2, T3> sym_v3;
189
+ static generator::symbolic_vector < 3, T4> sym_v4;
190
+ static generator::symbolic_vector < 4, T5> sym_v5;
191
+ static generator::symbolic_vector < 5, T6> sym_v6;
192
+ static generator::cpu_symbolic_scalar< 6, Fac1> sym_a1;
193
+ static generator::cpu_symbolic_scalar< 7, Fac2> sym_a2;
194
+ static generator::cpu_symbolic_scalar< 8, Fac3> sym_a3;
195
+ static generator::cpu_symbolic_scalar< 9, Fac4> sym_a4;
196
+ static generator::cpu_symbolic_scalar<10, Fac5> sym_a5;
197
+
198
+ static generator::custom_operation op(
199
+ sym_v1 = sym_a1 * sym_v2
200
+ + sym_a2 * sym_v3
201
+ + sym_a3 * sym_v4
202
+ + sym_a4 * sym_v5
203
+ + sym_a5 * sym_v6,
204
+ "scale_sum5"
205
+ );
206
+
207
+ ocl::enqueue( op(v1, v2, v3, v4, v5, v6,
208
+ m_alpha1, m_alpha2, m_alpha3, m_alpha4, m_alpha5) );
209
+ }
210
+
211
+ typedef void result_type;
212
+ };
213
+
214
+
215
+ };
216
+ #else
217
+ struct viennacl_operations : public default_operations {};
218
+ #endif
219
+
220
+
221
+ } // odeint
222
+ } // numeric
223
+ } // boost
224
+
225
+
226
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VIENNACL_VIENNACL_OPERATIONS_HPP_INCLUDED
@@ -0,0 +1,68 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/external/viennacl/viennacl_resize.hpp
4
+
5
+ [begin_description]
6
+ Enable resizing for viennacl vector.
7
+ [end_description]
8
+
9
+ Copyright 2012 Denis Demidov
10
+ Copyright 2012 Karsten Ahnert
11
+ Copyright 2012 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_EXTERNAL_VIENNACL_VIENNACL_RESIZE_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_EXTERNAL_VIENNACL_VIENNACL_RESIZE_HPP_INCLUDED
21
+
22
+ #include <type_traits>
23
+
24
+ #include <viennacl/vector.hpp>
25
+
26
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
27
+ #include <boost/numeric/odeint/util/resize.hpp>
28
+ #include <boost/numeric/odeint/util/same_size.hpp>
29
+
30
+ namespace boost {
31
+ namespace numeric {
32
+ namespace odeint {
33
+
34
+
35
+
36
+ /*
37
+ * specializations for viennacl::vector< T >
38
+ */
39
+ template< typename T >
40
+ struct is_resizeable< viennacl::vector< T > > : std::true_type { };
41
+
42
+ template< typename T >
43
+ struct resize_impl< viennacl::vector< T > , viennacl::vector< T > >
44
+ {
45
+ static void resize( viennacl::vector< T > &x1 , const viennacl::vector< T > &x2 )
46
+ {
47
+ x1.resize( x2.size() , false );
48
+ }
49
+ };
50
+
51
+ template< typename T >
52
+ struct same_size_impl< viennacl::vector< T > , viennacl::vector< T > >
53
+ {
54
+ static bool same_size( const viennacl::vector< T > &x1 , const viennacl::vector< T > &x2 )
55
+ {
56
+ return x1.size() == x2.size();
57
+ }
58
+ };
59
+
60
+
61
+
62
+ } // namespace odeint
63
+ } // namespace numeric
64
+ } // namespace boost
65
+
66
+
67
+
68
+ #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VIENNACL_VIENNACL_RESIZE_HPP_INCLUDED