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,578 @@
1
+ //
2
+ // Copyright (c) 2000-2002
3
+ // Joerg Walter, Mathias Koch
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // The authors gratefully acknowledge the support of
10
+ // GeNeSys mbH & Co. KG in producing this work.
11
+ //
12
+
13
+ #ifndef _BOOST_UBLAS_STORAGE_SPARSE_
14
+ #define _BOOST_UBLAS_STORAGE_SPARSE_
15
+
16
+ #include <map>
17
+ #include <boost/serialization/collection_size_type.hpp>
18
+ #include <boost/serialization/nvp.hpp>
19
+ #include <boost/serialization/array.hpp>
20
+ #include <boost/serialization/map.hpp>
21
+ #include <boost/serialization/base_object.hpp>
22
+
23
+ #include <boost/numeric/ublas/storage.hpp>
24
+
25
+
26
+ namespace boost { namespace numeric { namespace ublas {
27
+
28
+ namespace detail {
29
+
30
+ template<class I, class T, class C>
31
+ BOOST_UBLAS_INLINE
32
+ I lower_bound (const I &begin, const I &end, const T &t, C compare) {
33
+ // t <= *begin <=> ! (*begin < t)
34
+ if (begin == end || ! compare (*begin, t))
35
+ return begin;
36
+ if (compare (*(end - 1), t))
37
+ return end;
38
+ return std::lower_bound (begin, end, t, compare);
39
+ }
40
+ template<class I, class T, class C>
41
+ BOOST_UBLAS_INLINE
42
+ I upper_bound (const I &begin, const I &end, const T &t, C compare) {
43
+ if (begin == end || compare (t, *begin))
44
+ return begin;
45
+ // (*end - 1) <= t <=> ! (t < *end)
46
+ if (! compare (t, *(end - 1)))
47
+ return end;
48
+ return std::upper_bound (begin, end, t, compare);
49
+ }
50
+
51
+ template<class P>
52
+ struct less_pair {
53
+ BOOST_UBLAS_INLINE
54
+ bool operator () (const P &p1, const P &p2) {
55
+ return p1.first < p2.first;
56
+ }
57
+ };
58
+ template<class T>
59
+ struct less_triple {
60
+ BOOST_UBLAS_INLINE
61
+ bool operator () (const T &t1, const T &t2) {
62
+ return t1.first.first < t2.first.first ||
63
+ (t1.first.first == t2.first.first && t1.first.second < t2.first.second);
64
+ }
65
+ };
66
+
67
+ }
68
+
69
+ #ifdef BOOST_UBLAS_STRICT_MAP_ARRAY
70
+ template<class A>
71
+ class sparse_storage_element:
72
+ public container_reference<A> {
73
+ public:
74
+ typedef A array_type;
75
+ typedef typename A::key_type index_type;
76
+ typedef typename A::mapped_type data_value_type;
77
+ // typedef const data_value_type &data_const_reference;
78
+ typedef typename type_traits<data_value_type>::const_reference data_const_reference;
79
+ typedef data_value_type &data_reference;
80
+ typedef typename A::value_type value_type;
81
+ typedef value_type *pointer;
82
+
83
+ // Construction and destruction
84
+ BOOST_UBLAS_INLINE
85
+ sparse_storage_element (array_type &a, pointer it):
86
+ container_reference<array_type> (a), it_ (it), i_ (it->first), d_ (it->second), dirty_ (false) {}
87
+ BOOST_UBLAS_INLINE
88
+ sparse_storage_element (array_type &a, index_type i):
89
+ container_reference<array_type> (a), it_ (), i_ (i), d_ (), dirty_ (false) {
90
+ pointer it = (*this) ().find (i_);
91
+ if (it == (*this) ().end ())
92
+ it = (*this) ().insert ((*this) ().end (), value_type (i_, d_));
93
+ d_ = it->second;
94
+ }
95
+ BOOST_UBLAS_INLINE
96
+ ~sparse_storage_element () {
97
+ if (dirty_) {
98
+ if (! it_)
99
+ it_ = (*this) ().find (i_);
100
+ BOOST_UBLAS_CHECK (it_ != (*this) ().end (), internal_logic ());
101
+ it_->second = d_;
102
+ }
103
+ }
104
+
105
+ // Element access - only if data_const_reference is defined
106
+ BOOST_UBLAS_INLINE
107
+ typename data_value_type::data_const_reference
108
+ operator [] (index_type i) const {
109
+ return d_ [i];
110
+ }
111
+
112
+ // Assignment
113
+ BOOST_UBLAS_INLINE
114
+ sparse_storage_element &operator = (const sparse_storage_element &p) {
115
+ // Overide the implict copy assignment
116
+ d_ = p.d_;
117
+ dirty_ = true;
118
+ return *this;
119
+ }
120
+ template<class D>
121
+ BOOST_UBLAS_INLINE
122
+ sparse_storage_element &operator = (const D &d) {
123
+ d_ = d;
124
+ dirty_ = true;
125
+ return *this;
126
+ }
127
+ template<class D>
128
+ BOOST_UBLAS_INLINE
129
+ sparse_storage_element &operator += (const D &d) {
130
+ d_ += d;
131
+ dirty_ = true;
132
+ return *this;
133
+ }
134
+ template<class D>
135
+ BOOST_UBLAS_INLINE
136
+ sparse_storage_element &operator -= (const D &d) {
137
+ d_ -= d;
138
+ dirty_ = true;
139
+ return *this;
140
+ }
141
+ template<class D>
142
+ BOOST_UBLAS_INLINE
143
+ sparse_storage_element &operator *= (const D &d) {
144
+ d_ *= d;
145
+ dirty_ = true;
146
+ return *this;
147
+ }
148
+ template<class D>
149
+ BOOST_UBLAS_INLINE
150
+ sparse_storage_element &operator /= (const D &d) {
151
+ d_ /= d;
152
+ dirty_ = true;
153
+ return *this;
154
+ }
155
+
156
+ // Comparison
157
+ template<class D>
158
+ BOOST_UBLAS_INLINE
159
+ bool operator == (const D &d) const {
160
+ return d_ == d;
161
+ }
162
+ template<class D>
163
+ BOOST_UBLAS_INLINE
164
+ bool operator != (const D &d) const {
165
+ return d_ != d;
166
+ }
167
+
168
+ // Conversion
169
+ BOOST_UBLAS_INLINE
170
+ operator data_const_reference () const {
171
+ return d_;
172
+ }
173
+
174
+ // Swapping
175
+ BOOST_UBLAS_INLINE
176
+ void swap (sparse_storage_element p) {
177
+ if (this != &p) {
178
+ dirty_ = true;
179
+ p.dirty_ = true;
180
+ std::swap (d_, p.d_);
181
+ }
182
+ }
183
+ BOOST_UBLAS_INLINE
184
+ friend void swap (sparse_storage_element p1, sparse_storage_element p2) {
185
+ p1.swap (p2);
186
+ }
187
+
188
+ private:
189
+ pointer it_;
190
+ index_type i_;
191
+ data_value_type d_;
192
+ bool dirty_;
193
+ };
194
+ #endif
195
+
196
+
197
+ // Default map type is simply forwarded to std::map
198
+ template<class I, class T, class ALLOC>
199
+ class map_std : public std::map<I, T, std::less<I>, ALLOC> {
200
+ public:
201
+ // Serialization
202
+ template<class Archive>
203
+ void serialize(Archive & ar, const unsigned int /* file_version */){
204
+ ar & serialization::make_nvp("base", boost::serialization::base_object< std::map<I, T, std::less<I>, ALLOC> >(*this));
205
+ }
206
+ };
207
+
208
+
209
+
210
+
211
+ // Map array
212
+ // Implementation requires pair<I, T> allocator definition (without const)
213
+ template<class I, class T, class ALLOC>
214
+ class map_array {
215
+ public:
216
+ typedef ALLOC allocator_type;
217
+ typedef typename boost::allocator_size_type<ALLOC>::type size_type;
218
+ typedef typename boost::allocator_difference_type<ALLOC>::type difference_type;
219
+ typedef std::pair<I,T> value_type;
220
+ typedef I key_type;
221
+ typedef T mapped_type;
222
+ typedef const value_type &const_reference;
223
+ typedef value_type &reference;
224
+ typedef const value_type *const_pointer;
225
+ typedef value_type *pointer;
226
+ // Iterators simply are pointers.
227
+ typedef const_pointer const_iterator;
228
+ typedef pointer iterator;
229
+
230
+ typedef const T &data_const_reference;
231
+ #ifndef BOOST_UBLAS_STRICT_MAP_ARRAY
232
+ typedef T &data_reference;
233
+ #else
234
+ typedef sparse_storage_element<map_array> data_reference;
235
+ #endif
236
+
237
+ // Construction and destruction
238
+ BOOST_UBLAS_INLINE
239
+ map_array (const ALLOC &a = ALLOC()):
240
+ alloc_(a), capacity_ (0), size_ (0) {
241
+ data_ = 0;
242
+ }
243
+ BOOST_UBLAS_INLINE
244
+ map_array (const map_array &c):
245
+ alloc_ (c.alloc_), capacity_ (c.size_), size_ (c.size_) {
246
+ if (capacity_) {
247
+ data_ = alloc_.allocate (capacity_);
248
+ std::uninitialized_copy (data_, data_ + capacity_, c.data_);
249
+ // capacity != size_ requires uninitialized_fill (size_ to capacity_)
250
+ }
251
+ else
252
+ data_ = 0;
253
+ }
254
+ BOOST_UBLAS_INLINE
255
+ ~map_array () {
256
+ if (capacity_) {
257
+ std::for_each (data_, data_ + capacity_, static_destroy);
258
+ alloc_.deallocate (data_, capacity_);
259
+ }
260
+ }
261
+
262
+ private:
263
+ // Resizing - implicitly exposses uninitialized (but default constructed) mapped_type
264
+ BOOST_UBLAS_INLINE
265
+ void resize (size_type size) {
266
+ BOOST_UBLAS_CHECK (size_ <= capacity_, internal_logic ());
267
+ if (size > capacity_) {
268
+ const size_type capacity = size << 1;
269
+ BOOST_UBLAS_CHECK (capacity, internal_logic ());
270
+ pointer data = alloc_.allocate (capacity);
271
+ std::uninitialized_copy (data_, data_ + (std::min) (size, size_), data);
272
+ std::uninitialized_fill (data + (std::min) (size, size_), data + capacity, value_type ());
273
+
274
+ if (capacity_) {
275
+ std::for_each (data_, data_ + capacity_, static_destroy);
276
+ alloc_.deallocate (data_, capacity_);
277
+ }
278
+ capacity_ = capacity;
279
+ data_ = data;
280
+ }
281
+ size_ = size;
282
+ BOOST_UBLAS_CHECK (size_ <= capacity_, internal_logic ());
283
+ }
284
+ public:
285
+
286
+ // Reserving
287
+ BOOST_UBLAS_INLINE
288
+ void reserve (size_type capacity) {
289
+ BOOST_UBLAS_CHECK (size_ <= capacity_, internal_logic ());
290
+ // Reduce capacity_ if size_ allows
291
+ BOOST_UBLAS_CHECK (capacity >= size_, bad_size ());
292
+ pointer data;
293
+ if (capacity) {
294
+ data = alloc_.allocate (capacity);
295
+ std::uninitialized_copy (data_, data_ + size_, data);
296
+ std::uninitialized_fill (data + size_, data + capacity, value_type ());
297
+ }
298
+ else
299
+ data = 0;
300
+
301
+ if (capacity_) {
302
+ std::for_each (data_, data_ + capacity_, static_destroy);
303
+ alloc_.deallocate (data_, capacity_);
304
+ }
305
+ capacity_ = capacity;
306
+ data_ = data;
307
+ BOOST_UBLAS_CHECK (size_ <= capacity_, internal_logic ());
308
+ }
309
+
310
+ // Random Access Container
311
+ BOOST_UBLAS_INLINE
312
+ size_type size () const {
313
+ return size_;
314
+ }
315
+ BOOST_UBLAS_INLINE
316
+ size_type capacity () const {
317
+ return capacity_;
318
+ }
319
+ BOOST_UBLAS_INLINE
320
+ size_type max_size () const {
321
+ return 0; //TODO
322
+ }
323
+
324
+ BOOST_UBLAS_INLINE
325
+ bool empty () const {
326
+ return size_ == 0;
327
+ }
328
+
329
+ // Element access
330
+ BOOST_UBLAS_INLINE
331
+ data_reference operator [] (key_type i) {
332
+ #ifndef BOOST_UBLAS_STRICT_MAP_ARRAY
333
+ pointer it = find (i);
334
+ if (it == end ())
335
+ it = insert (end (), value_type (i, mapped_type (0)));
336
+ BOOST_UBLAS_CHECK (it != end (), internal_logic ());
337
+ return it->second;
338
+ #else
339
+ return data_reference (*this, i);
340
+ #endif
341
+ }
342
+
343
+ // Assignment
344
+ BOOST_UBLAS_INLINE
345
+ map_array &operator = (const map_array &a) {
346
+ if (this != &a) {
347
+ resize (a.size_);
348
+ std::copy (a.data_, a.data_ + a.size_, data_);
349
+ }
350
+ return *this;
351
+ }
352
+ BOOST_UBLAS_INLINE
353
+ map_array &assign_temporary (map_array &a) {
354
+ swap (a);
355
+ return *this;
356
+ }
357
+
358
+ // Swapping
359
+ BOOST_UBLAS_INLINE
360
+ void swap (map_array &a) {
361
+ if (this != &a) {
362
+ std::swap (capacity_, a.capacity_);
363
+ std::swap (data_, a.data_);
364
+ std::swap (size_, a.size_);
365
+ }
366
+ }
367
+ BOOST_UBLAS_INLINE
368
+ friend void swap (map_array &a1, map_array &a2) {
369
+ a1.swap (a2);
370
+ }
371
+
372
+ // Element insertion and deletion
373
+
374
+ // From Back Insertion Sequence concept
375
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
376
+ iterator push_back (iterator it, const value_type &p) {
377
+ if (size () == 0 || (it = end () - 1)->first < p.first) {
378
+ resize (size () + 1);
379
+ *(it = end () - 1) = p;
380
+ return it;
381
+ }
382
+ external_logic ().raise ();
383
+ return it;
384
+ }
385
+ // Form Unique Associative Container concept
386
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
387
+ std::pair<iterator,bool> insert (const value_type &p) {
388
+ iterator it = detail::lower_bound (begin (), end (), p, detail::less_pair<value_type> ());
389
+ if (it != end () && it->first == p.first)
390
+ return std::make_pair (it, false);
391
+ difference_type n = it - begin ();
392
+ resize (size () + 1);
393
+ it = begin () + n; // allow for invalidation
394
+ std::copy_backward (it, end () - 1, end ());
395
+ *it = p;
396
+ return std::make_pair (it, true);
397
+ }
398
+ // Form Sorted Associative Container concept
399
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
400
+ iterator insert (iterator /*hint*/, const value_type &p) {
401
+ return insert (p).first;
402
+ }
403
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
404
+ void erase (iterator it) {
405
+ BOOST_UBLAS_CHECK (begin () <= it && it < end (), bad_index ());
406
+ std::copy (it + 1, end (), it);
407
+ resize (size () - 1);
408
+ }
409
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
410
+ void erase (iterator it1, iterator it2) {
411
+ if (it1 == it2) return /* nothing to erase */;
412
+ BOOST_UBLAS_CHECK (begin () <= it1 && it1 < it2 && it2 <= end (), bad_index ());
413
+ std::copy (it2, end (), it1);
414
+ resize (size () - (it2 - it1));
415
+ }
416
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
417
+ void clear () {
418
+ resize (0);
419
+ }
420
+
421
+ // Element lookup
422
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
423
+ const_iterator find (key_type i) const {
424
+ const_iterator it (detail::lower_bound (begin (), end (), value_type (i, mapped_type (0)), detail::less_pair<value_type> ()));
425
+ if (it == end () || it->first != i)
426
+ it = end ();
427
+ return it;
428
+ }
429
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
430
+ iterator find (key_type i) {
431
+ iterator it (detail::lower_bound (begin (), end (), value_type (i, mapped_type (0)), detail::less_pair<value_type> ()));
432
+ if (it == end () || it->first != i)
433
+ it = end ();
434
+ return it;
435
+ }
436
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
437
+ const_iterator lower_bound (key_type i) const {
438
+ return detail::lower_bound (begin (), end (), value_type (i, mapped_type (0)), detail::less_pair<value_type> ());
439
+ }
440
+ // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it.
441
+ iterator lower_bound (key_type i) {
442
+ return detail::lower_bound (begin (), end (), value_type (i, mapped_type (0)), detail::less_pair<value_type> ());
443
+ }
444
+
445
+ BOOST_UBLAS_INLINE
446
+ const_iterator begin () const {
447
+ return data_;
448
+ }
449
+ BOOST_UBLAS_INLINE
450
+ const_iterator cbegin () const {
451
+ return begin ();
452
+ }
453
+ BOOST_UBLAS_INLINE
454
+ const_iterator end () const {
455
+ return data_ + size_;
456
+ }
457
+ BOOST_UBLAS_INLINE
458
+ const_iterator cend () const {
459
+ return end ();
460
+ }
461
+
462
+ BOOST_UBLAS_INLINE
463
+ iterator begin () {
464
+ return data_;
465
+ }
466
+ BOOST_UBLAS_INLINE
467
+ iterator end () {
468
+ return data_ + size_;
469
+ }
470
+
471
+ // Reverse iterators
472
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
473
+ typedef std::reverse_iterator<iterator> reverse_iterator;
474
+
475
+ BOOST_UBLAS_INLINE
476
+ const_reverse_iterator rbegin () const {
477
+ return const_reverse_iterator (end ());
478
+ }
479
+ BOOST_UBLAS_INLINE
480
+ const_reverse_iterator crbegin () const {
481
+ return rbegin ();
482
+ }
483
+ BOOST_UBLAS_INLINE
484
+ const_reverse_iterator rend () const {
485
+ return const_reverse_iterator (begin ());
486
+ }
487
+ BOOST_UBLAS_INLINE
488
+ const_reverse_iterator crend () const {
489
+ return rend ();
490
+ }
491
+
492
+ BOOST_UBLAS_INLINE
493
+ reverse_iterator rbegin () {
494
+ return reverse_iterator (end ());
495
+ }
496
+ BOOST_UBLAS_INLINE
497
+ reverse_iterator rend () {
498
+ return reverse_iterator (begin ());
499
+ }
500
+
501
+ // Allocator
502
+ allocator_type get_allocator () {
503
+ return alloc_;
504
+ }
505
+
506
+ // Serialization
507
+ template<class Archive>
508
+ void serialize(Archive & ar, const unsigned int /* file_version */){
509
+ serialization::collection_size_type s (size_);
510
+ ar & serialization::make_nvp("size",s);
511
+ if (Archive::is_loading::value) {
512
+ resize(s);
513
+ }
514
+ ar & serialization::make_array(data_, s);
515
+ }
516
+
517
+ private:
518
+ // Provide destroy as a non member function
519
+ BOOST_UBLAS_INLINE
520
+ static void static_destroy (reference p) {
521
+ (&p) -> ~value_type ();
522
+ }
523
+ ALLOC alloc_;
524
+ size_type capacity_;
525
+ pointer data_;
526
+ size_type size_;
527
+ };
528
+
529
+
530
+ namespace detail {
531
+ template<class A, class T>
532
+ struct map_traits {
533
+ typedef typename A::mapped_type &reference;
534
+ };
535
+ template<class I, class T, class ALLOC>
536
+ struct map_traits<map_array<I, T, ALLOC>, T > {
537
+ typedef typename map_array<I, T, ALLOC>::data_reference reference;
538
+ };
539
+
540
+ // reserve helpers for map_array and generic maps
541
+ // ISSUE should be in map_traits but want to use on all compilers
542
+
543
+ template<class M>
544
+ BOOST_UBLAS_INLINE
545
+ void map_reserve (M &/* m */, typename M::size_type /* capacity */) {
546
+ }
547
+ template<class I, class T, class ALLOC>
548
+ BOOST_UBLAS_INLINE
549
+ void map_reserve (map_array<I, T, ALLOC> &m, typename map_array<I, T, ALLOC>::size_type capacity) {
550
+ m.reserve (capacity);
551
+ }
552
+
553
+ template<class M>
554
+ struct map_capacity_traits {
555
+ typedef typename M::size_type type ;
556
+ type operator() ( M const& m ) const {
557
+ return m.size ();
558
+ }
559
+ } ;
560
+
561
+ template<class I, class T, class ALLOC>
562
+ struct map_capacity_traits< map_array<I, T, ALLOC> > {
563
+ typedef typename map_array<I, T, ALLOC>::size_type type ;
564
+ type operator() ( map_array<I, T, ALLOC> const& m ) const {
565
+ return m.capacity ();
566
+ }
567
+ } ;
568
+
569
+ template<class M>
570
+ BOOST_UBLAS_INLINE
571
+ typename map_capacity_traits<M>::type map_capacity (M const& m) {
572
+ return map_capacity_traits<M>() ( m );
573
+ }
574
+ }
575
+
576
+ }}}
577
+
578
+ #endif