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,103 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/split_adaptor.hpp
4
+
5
+ [begin_description]
6
+ A range adaptor which returns even-sized slices.
7
+ [end_description]
8
+
9
+ Copyright 2013 Karsten Ahnert
10
+ Copyright 2013 Mario Mulansky
11
+ Copyright 2013 Pascal Germroth
12
+
13
+ Distributed under the Boost Software License, Version 1.0.
14
+ (See accompanying file LICENSE_1_0.txt or
15
+ copy at http://www.boost.org/LICENSE_1_0.txt)
16
+ */
17
+
18
+
19
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_SPLIT_ADAPTOR_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_UTIL_SPLIT_ADAPTOR_INCLUDED
21
+
22
+ #include <boost/numeric/odeint/tools/assert.hpp>
23
+ #include <boost/range/adaptor/argument_fwd.hpp>
24
+ #include <boost/range/size_type.hpp>
25
+ #include <boost/range/iterator_range.hpp>
26
+ #include <algorithm>
27
+
28
+ namespace boost {
29
+ namespace numeric {
30
+ namespace odeint {
31
+ namespace detail {
32
+
33
+ /** \brief Returns the begin and end offset for a sub-range */
34
+ inline std::pair<std::size_t, std::size_t>
35
+ split_offsets( std::size_t total_length, std::size_t index, std::size_t parts )
36
+ {
37
+ BOOST_NUMERIC_ODEINT_ASSERT( parts > 0 );
38
+ BOOST_NUMERIC_ODEINT_ASSERT( index < parts );
39
+ const std::size_t
40
+ slice = total_length / parts,
41
+ partial = total_length % parts,
42
+ lo = (std::min)(index, partial),
43
+ hi = (std::max<std::ptrdiff_t>)(0, index - partial),
44
+ begin_offset = lo * (slice + 1) + hi * slice,
45
+ length = slice + (index < partial ? 1 : 0),
46
+ end_offset = begin_offset + length;
47
+ return std::make_pair( begin_offset, end_offset );
48
+ }
49
+
50
+ /** \brief Return the sub-range `index` from a range which is split into `parts`.
51
+ *
52
+ * For example, splitting a range into three about equal-sized sub-ranges:
53
+ * \code
54
+ * sub0 = make_split_range(rng, 0, 3);
55
+ * sub1 = rng | split(1, 3);
56
+ * sub2 = rng | split(2, 3);
57
+ * \endcode
58
+ */
59
+ template< class RandomAccessRange >
60
+ inline iterator_range< typename range_iterator<RandomAccessRange>::type >
61
+ make_split_range( RandomAccessRange& rng, std::size_t index, std::size_t parts )
62
+ {
63
+ const std::pair<std::size_t, std::size_t> off = split_offsets(boost::size(rng), index, parts);
64
+ return make_iterator_range( boost::begin(rng) + off.first, boost::begin(rng) + off.second );
65
+ }
66
+
67
+ template< class RandomAccessRange >
68
+ inline iterator_range< typename range_iterator<const RandomAccessRange>::type >
69
+ make_split_range( const RandomAccessRange& rng, std::size_t index, std::size_t parts )
70
+ {
71
+ const std::pair<std::size_t, std::size_t> off = split_offsets(boost::size(rng), index, parts);
72
+ return make_iterator_range( boost::begin(rng) + off.first, boost::begin(rng) + off.second );
73
+ }
74
+
75
+
76
+ struct split
77
+ {
78
+ split(std::size_t index, std::size_t parts)
79
+ : index(index), parts(parts) {}
80
+ std::size_t index, parts;
81
+ };
82
+
83
+ template< class RandomAccessRange >
84
+ inline iterator_range< typename range_iterator<RandomAccessRange>::type >
85
+ operator|( RandomAccessRange& rng, const split& f )
86
+ {
87
+ return make_split_range( rng, f.index, f.parts );
88
+ }
89
+
90
+ template< class RandomAccessRange >
91
+ inline iterator_range< typename range_iterator<const RandomAccessRange>::type >
92
+ operator|( const RandomAccessRange& rng, const split& f )
93
+ {
94
+ return make_split_range( rng, f.index, f.parts );
95
+ }
96
+
97
+
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+ #endif
@@ -0,0 +1,50 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/state_wrapper.hpp
4
+
5
+ [begin_description]
6
+ State wrapper for the state type in all stepper. The state wrappers are responsible for construction,
7
+ destruction, copying construction, assignment and resizing.
8
+ [end_description]
9
+
10
+ Copyright 2011-2012 Mario Mulansky
11
+ Copyright 2011-2013 Karsten Ahnert
12
+
13
+ Distributed under the Boost Software License, Version 1.0.
14
+ (See accompanying file LICENSE_1_0.txt or
15
+ copy at http://www.boost.org/LICENSE_1_0.txt)
16
+ */
17
+
18
+
19
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_STATE_WRAPPER_HPP_INCLUDED
20
+ #define BOOST_NUMERIC_ODEINT_UTIL_STATE_WRAPPER_HPP_INCLUDED
21
+
22
+
23
+ #include <boost/type_traits/integral_constant.hpp>
24
+
25
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
26
+ #include <boost/numeric/odeint/util/resize.hpp>
27
+ #include <boost/numeric/odeint/util/same_size.hpp>
28
+
29
+
30
+ namespace boost {
31
+ namespace numeric {
32
+ namespace odeint {
33
+
34
+
35
+ template< class V , class Enabler = void >
36
+ struct state_wrapper
37
+ {
38
+ typedef state_wrapper< V > state_wrapper_type;
39
+
40
+ V m_v;
41
+ };
42
+
43
+
44
+ }
45
+ }
46
+ }
47
+
48
+
49
+
50
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_STATE_WRAPPER_HPP_INCLUDED
@@ -0,0 +1,63 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/stepper_traits.hpp
4
+
5
+ [begin_description]
6
+ tba.
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_UTIL_STEPPER_TRAITS_HPP_DEFINED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_STEPPER_TRAITS_HPP_DEFINED
20
+
21
+ #include <boost/numeric/odeint/util/unwrap_reference.hpp>
22
+
23
+
24
+ namespace boost {
25
+ namespace numeric {
26
+ namespace odeint {
27
+ namespace traits {
28
+
29
+ template< class Stepper >
30
+ struct state_type
31
+ {
32
+ typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
33
+ typedef typename stepper_type::state_type type;
34
+ };
35
+
36
+ template< class Stepper >
37
+ struct time_type
38
+ {
39
+ typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
40
+ typedef typename stepper_type::time_type type;
41
+ };
42
+
43
+ template< class Stepper >
44
+ struct stepper_category
45
+ {
46
+ typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
47
+ typedef typename stepper_type::stepper_category type;
48
+ };
49
+
50
+ template< class Stepper >
51
+ struct value_type
52
+ {
53
+ typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
54
+ typedef typename stepper_type::value_type type;
55
+ };
56
+
57
+ } // namespace traits
58
+ } // namespace odeint
59
+ } // namespace numeric
60
+ } // namespace boost
61
+
62
+
63
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_STEPPER_TRAITS_HPP_DEFINED
@@ -0,0 +1,6 @@
1
+ 3390,3392c3390
2
+ < typename enable_if< is_convertible<typename E1::value_type , T2>,
3
+ < typename matrix_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type
4
+ < > ::result_type
5
+ ---
6
+ > typename matrix_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type
@@ -0,0 +1,297 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/ublas_wrapper.hpp
4
+
5
+ [begin_description]
6
+ Resizing for ublas::vector and ublas::matrix
7
+ [end_description]
8
+
9
+ Copyright 2011-2013 Mario Mulansky
10
+ Copyright 2011-2013 Karsten Ahnert
11
+
12
+ Distributed under the Boost Software License, Version 1.0.
13
+ (See accompanying file LICENSE_1_0.txt or
14
+ copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+
18
+ #ifndef BOOST_NUMERIC_ODEINT_UTIL_UBLAS_WRAPPER_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_UBLAS_WRAPPER_HPP_INCLUDED
20
+
21
+ #include <type_traits>
22
+
23
+ #include <boost/numeric/ublas/vector.hpp>
24
+ #include <boost/numeric/ublas/matrix.hpp>
25
+ #include <boost/numeric/ublas/lu.hpp>
26
+ #include <boost/numeric/ublas/vector_expression.hpp>
27
+ #include <boost/numeric/ublas/matrix_expression.hpp>
28
+
29
+ #include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
30
+ #include <boost/numeric/odeint/algebra/default_operations.hpp>
31
+
32
+ #include <boost/numeric/odeint/util/is_resizeable.hpp>
33
+ #include <boost/numeric/odeint/util/state_wrapper.hpp>
34
+
35
+
36
+ /* extend ublas by a few operations */
37
+
38
+ /* map norm_inf onto reduce( v , default_operations::maximum ) */
39
+ namespace boost { namespace numeric { namespace odeint {
40
+
41
+ template< typename T , typename A >
42
+ struct vector_space_norm_inf< boost::numeric::ublas::vector<T,A> >
43
+ {
44
+ typedef T result_type;
45
+
46
+ result_type operator()( const boost::numeric::ublas::vector<T,A> &x ) const
47
+ {
48
+ return boost::numeric::ublas::norm_inf( x );
49
+ }
50
+ };
51
+
52
+
53
+ template< class T , class L , class A >
54
+ struct vector_space_norm_inf< boost::numeric::ublas::matrix<T,L,A> >
55
+ {
56
+ typedef T result_type;
57
+
58
+ result_type operator()( const boost::numeric::ublas::matrix<T,L,A> &x ) const
59
+ {
60
+ return boost::numeric::ublas::norm_inf( x );
61
+ }
62
+ };
63
+ } } }
64
+
65
+ /* additional operations:
66
+ * abs( v )
67
+ * v / w
68
+ * a + v
69
+ */
70
+ namespace boost { namespace numeric { namespace ublas {
71
+
72
+
73
+ // elementwise abs - calculates absolute values of the elements
74
+ template<class T>
75
+ struct scalar_abs: public scalar_unary_functor<T> {
76
+ typedef typename scalar_unary_functor<T>::value_type value_type;
77
+ typedef typename scalar_unary_functor<T>::argument_type argument_type;
78
+ typedef typename scalar_unary_functor<T>::result_type result_type;
79
+
80
+ static BOOST_UBLAS_INLINE
81
+ result_type apply (argument_type t) {
82
+ using std::abs;
83
+ return abs (t);
84
+ }
85
+ };
86
+
87
+
88
+ // (abs v) [i] = abs (v [i])
89
+ template<class E>
90
+ BOOST_UBLAS_INLINE
91
+ typename vector_unary_traits<E, scalar_abs<typename E::value_type> >::result_type
92
+ abs (const vector_expression<E> &e) {
93
+ typedef typename vector_unary_traits<E, scalar_abs<typename E::value_type> >::expression_type expression_type;
94
+ return expression_type (e ());
95
+ }
96
+
97
+ // (abs m) [i] = abs (m [i])
98
+ template<class E>
99
+ BOOST_UBLAS_INLINE
100
+ typename matrix_unary1_traits<E, scalar_abs<typename E::value_type> >::result_type
101
+ abs (const matrix_expression<E> &e) {
102
+ typedef typename matrix_unary1_traits<E, scalar_abs<typename E::value_type> >::expression_type expression_type;
103
+ return expression_type (e ());
104
+ }
105
+
106
+
107
+ // elementwise division (v1 / v2) [i] = v1 [i] / v2 [i]
108
+ template<class E1, class E2>
109
+ BOOST_UBLAS_INLINE
110
+ typename vector_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
111
+ typename E2::value_type> >::result_type
112
+ operator / (const vector_expression<E1> &e1,
113
+ const vector_expression<E2> &e2) {
114
+ typedef typename vector_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
115
+ typename E2::value_type> >::expression_type expression_type;
116
+ return expression_type (e1 (), e2 ());
117
+ }
118
+
119
+
120
+ // elementwise division (m1 / m2) [i] = m1 [i] / m2 [i]
121
+ template<class E1, class E2>
122
+ BOOST_UBLAS_INLINE
123
+ typename matrix_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
124
+ typename E2::value_type> >::result_type
125
+ operator / (const matrix_expression<E1> &e1,
126
+ const matrix_expression<E2> &e2) {
127
+ typedef typename matrix_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
128
+ typename E2::value_type> >::expression_type expression_type;
129
+ return expression_type (e1 (), e2 ());
130
+ }
131
+
132
+ // addition with scalar
133
+ // (t + v) [i] = t + v [i]
134
+ template<class T1, class E2>
135
+ BOOST_UBLAS_INLINE
136
+ typename enable_if< is_convertible<T1, typename E2::value_type >,
137
+ typename vector_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::result_type
138
+ >::type
139
+ operator + (const T1 &e1,
140
+ const vector_expression<E2> &e2) {
141
+ typedef typename vector_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::expression_type expression_type;
142
+ return expression_type (e1, e2 ());
143
+ }
144
+
145
+ // addition with scalar
146
+ // (t + m) [i] = t + m [i]
147
+ template<class T1, class E2>
148
+ BOOST_UBLAS_INLINE
149
+ typename enable_if< is_convertible<T1, typename E2::value_type >,
150
+ typename matrix_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::result_type
151
+ >::type
152
+ operator + (const T1 &e1,
153
+ const matrix_expression<E2> &e2) {
154
+ typedef typename matrix_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::expression_type expression_type;
155
+ return expression_type (e1, e2 ());
156
+ }
157
+
158
+ } } }
159
+
160
+
161
+
162
+
163
+ /* add resize functionality */
164
+ namespace boost {
165
+ namespace numeric {
166
+ namespace odeint {
167
+
168
+ /*
169
+ * resizeable specialization for boost::numeric::ublas::vector
170
+ */
171
+ template< class T , class A >
172
+ struct is_resizeable< boost::numeric::ublas::vector< T , A > >
173
+ {
174
+ typedef std::true_type type;
175
+ const static bool value = type::value;
176
+ };
177
+
178
+
179
+ /*
180
+ * resizeable specialization for boost::numeric::ublas::matrix
181
+ */
182
+ template< class T , class L , class A >
183
+ struct is_resizeable< boost::numeric::ublas::matrix< T , L , A > >
184
+ {
185
+ typedef std::true_type type;
186
+ const static bool value = type::value;
187
+ };
188
+
189
+
190
+ /*
191
+ * resizeable specialization for boost::numeric::ublas::permutation_matrix
192
+ */
193
+ template< class T , class A >
194
+ struct is_resizeable< boost::numeric::ublas::permutation_matrix< T , A > >
195
+ {
196
+ typedef std::true_type type;
197
+ const static bool value = type::value;
198
+ };
199
+
200
+
201
+ // specialization for ublas::matrix
202
+ // same size and resize specialization for matrix-matrix resizing
203
+ template< class T , class L , class A , class T2 , class L2 , class A2 >
204
+ struct same_size_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::matrix< T2 , L2 , A2 > >
205
+ {
206
+ static bool same_size( const boost::numeric::ublas::matrix< T , L , A > &m1 ,
207
+ const boost::numeric::ublas::matrix< T2 , L2 , A2 > &m2 )
208
+ {
209
+ return ( ( m1.size1() == m2.size1() ) && ( m1.size2() == m2.size2() ) );
210
+ }
211
+ };
212
+
213
+ template< class T , class L , class A , class T2 , class L2 , class A2 >
214
+ struct resize_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::matrix< T2 , L2 , A2 > >
215
+ {
216
+ static void resize( boost::numeric::ublas::matrix< T , L , A > &m1 ,
217
+ const boost::numeric::ublas::matrix< T2 , L2 , A2 > &m2 )
218
+ {
219
+ m1.resize( m2.size1() , m2.size2() );
220
+ }
221
+ };
222
+
223
+
224
+
225
+ // same size and resize specialization for matrix-vector resizing
226
+ template< class T , class L , class A , class T_V , class A_V >
227
+ struct same_size_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::vector< T_V , A_V > >
228
+ {
229
+ static bool same_size( const boost::numeric::ublas::matrix< T , L , A > &m ,
230
+ const boost::numeric::ublas::vector< T_V , A_V > &v )
231
+ {
232
+ return ( ( m.size1() == v.size() ) && ( m.size2() == v.size() ) );
233
+ }
234
+ };
235
+
236
+ template< class T , class L , class A , class T_V , class A_V >
237
+ struct resize_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::vector< T_V , A_V > >
238
+ {
239
+ static void resize( boost::numeric::ublas::matrix< T , L , A > &m ,
240
+ const boost::numeric::ublas::vector< T_V , A_V > &v )
241
+ {
242
+ m.resize( v.size() , v.size() );
243
+ }
244
+ };
245
+
246
+
247
+
248
+ // specialization for ublas::permutation_matrix
249
+ // same size and resize specialization for matrix-vector resizing
250
+ template< class T , class A , class T_V , class A_V >
251
+ struct same_size_impl< boost::numeric::ublas::permutation_matrix< T , A > ,
252
+ boost::numeric::ublas::vector< T_V , A_V > >
253
+ {
254
+ static bool same_size( const boost::numeric::ublas::permutation_matrix< T , A > &m ,
255
+ const boost::numeric::ublas::vector< T_V , A_V > &v )
256
+ {
257
+ return ( m.size() == v.size() ); // && ( m.size2() == v.size() ) );
258
+ }
259
+ };
260
+
261
+ template< class T , class A , class T_V , class A_V >
262
+ struct resize_impl< boost::numeric::ublas::vector< T_V , A_V > ,
263
+ boost::numeric::ublas::permutation_matrix< T , A > >
264
+ {
265
+ static void resize( const boost::numeric::ublas::vector< T_V , A_V > &v,
266
+ boost::numeric::ublas::permutation_matrix< T , A > &m )
267
+ {
268
+ m.resize( v.size() , v.size() );
269
+ }
270
+ };
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+ template< class T , class A >
279
+ struct state_wrapper< boost::numeric::ublas::permutation_matrix< T , A > > // with resizing
280
+ {
281
+ typedef boost::numeric::ublas::permutation_matrix< T , A > state_type;
282
+ typedef state_wrapper< state_type > state_wrapper_type;
283
+
284
+ state_type m_v;
285
+
286
+ state_wrapper() : m_v( 1 ) // permutation matrix constructor requires a size, choose 1 as default
287
+ { }
288
+
289
+ };
290
+
291
+
292
+
293
+
294
+ } } }
295
+
296
+
297
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_UBLAS_WRAPPER_HPP_INCLUDED
@@ -0,0 +1,151 @@
1
+ /*
2
+ [auto_generated]
3
+ boost/numeric/odeint/util/unit_helper.hpp
4
+
5
+ [begin_description]
6
+ Get and set the value of a unit.
7
+ [end_description]
8
+
9
+ Copyright 2012-2013 Karsten Ahnert
10
+ Copyright 2012-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_UTIL_UNIT_HELPER_HPP_INCLUDED
19
+ #define BOOST_NUMERIC_ODEINT_UTIL_UNIT_HELPER_HPP_INCLUDED
20
+
21
+
22
+ #ifndef __CUDACC__
23
+ #include <boost/units/quantity.hpp>
24
+ #include <boost/units/get_dimension.hpp>
25
+ #include <boost/units/get_system.hpp>
26
+ #endif
27
+
28
+
29
+
30
+ namespace boost {
31
+ namespace numeric {
32
+ namespace odeint {
33
+
34
+
35
+ namespace detail {
36
+
37
+ template<class T , class Enabler = void >
38
+ struct get_unit_value_impl
39
+ {
40
+ static T value(const T &t)
41
+ {
42
+ return t;
43
+ }
44
+ typedef T result_type;
45
+ };
46
+
47
+ #ifndef __CUDACC__
48
+ template<class Unit , class T>
49
+ struct get_unit_value_impl< boost::units::quantity< Unit , T> >
50
+ {
51
+ static T value( const boost::units::quantity< Unit , T> &t )
52
+ {
53
+ return t.value();
54
+ }
55
+ typedef T result_type;
56
+ };
57
+ #endif
58
+
59
+
60
+
61
+
62
+
63
+ template<class T , class V , class Enabler = void >
64
+ struct set_unit_value_impl
65
+ {
66
+ static void set_value(T &t , const V &v)
67
+ {
68
+ t = v;
69
+ }
70
+ };
71
+
72
+ #ifndef __CUDACC__
73
+ template<class Unit , class T , class V>
74
+ struct set_unit_value_impl<boost::units::quantity<Unit , T> , V>
75
+ {
76
+ static void set_value(boost::units::quantity<Unit , T> &t , const V &v)
77
+ {
78
+ t = boost::units::quantity<Unit , T>::from_value(v);
79
+ }
80
+ };
81
+ #endif
82
+
83
+
84
+
85
+ } // namespace detail
86
+
87
+
88
+ template<class T>
89
+ typename detail::get_unit_value_impl<T>::result_type get_unit_value(const T &t)
90
+ {
91
+ return detail::get_unit_value_impl<T>::value(t);
92
+ }
93
+
94
+
95
+ template<class T , class V>
96
+ void set_unit_value(T &t , const V &v)
97
+ {
98
+ return detail::set_unit_value_impl<T , V>::set_value(t , v);
99
+ }
100
+
101
+
102
+
103
+ template< class T >
104
+ struct unit_value_type
105
+ {
106
+ typedef T type;
107
+ };
108
+
109
+ #ifndef __CUDACC__
110
+ template< class Unit , class Y >
111
+ struct unit_value_type< boost::units::quantity< Unit , Y > >
112
+ {
113
+ typedef Y type;
114
+ };
115
+ #endif
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+ template< typename Time >
127
+ struct inverse_time
128
+ {
129
+ typedef Time type;
130
+ };
131
+
132
+ #ifndef __CUDACC__
133
+ template< typename Unit , typename Value >
134
+ struct inverse_time< boost::units::quantity< Unit , Value > >
135
+ {
136
+ typedef boost::units::quantity< Unit , Value > time_type;
137
+ typedef typename boost::units::get_dimension< time_type >::type dimension;
138
+ typedef typename boost::units::get_system< time_type >::type system;
139
+ typedef typename boost::mpl::divides< boost::units::dimensionless_type , dimension >::type inv_dimension;
140
+ typedef boost::units::unit< inv_dimension , system > inv_unit;
141
+ typedef boost::units::quantity< inv_unit , Value > type;
142
+ };
143
+ #endif
144
+
145
+
146
+ } // namespace odeint
147
+ } // namespace numeric
148
+ } // namespace boost
149
+
150
+
151
+ #endif // BOOST_NUMERIC_ODEINT_UTIL_UNIT_HELPER_HPP_INCLUDED