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,878 @@
1
+ //
2
+ // Copyright (c) 2002-2003
3
+ // Toon Knapen, Kresimir Fresl, Joerg Walter
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
+ //
10
+
11
+ #ifndef _BOOST_UBLAS_RAW_
12
+ #define _BOOST_UBLAS_RAW_
13
+
14
+ namespace boost { namespace numeric { namespace ublas { namespace raw {
15
+
16
+ // We need data_const() mostly due to MSVC 6.0.
17
+ // But how shall we write portable code otherwise?
18
+
19
+ template < typename V >
20
+ BOOST_UBLAS_INLINE
21
+ int size( const V &v ) ;
22
+
23
+ template < typename V >
24
+ BOOST_UBLAS_INLINE
25
+ int size( const vector_reference<V> &v ) ;
26
+
27
+ template < typename M >
28
+ BOOST_UBLAS_INLINE
29
+ int size1( const M &m ) ;
30
+ template < typename M >
31
+ BOOST_UBLAS_INLINE
32
+ int size2( const M &m ) ;
33
+
34
+ template < typename M >
35
+ BOOST_UBLAS_INLINE
36
+ int size1( const matrix_reference<M> &m ) ;
37
+ template < typename M >
38
+ BOOST_UBLAS_INLINE
39
+ int size2( const matrix_reference<M> &m ) ;
40
+
41
+ template < typename M >
42
+ BOOST_UBLAS_INLINE
43
+ int leading_dimension( const M &m, row_major_tag ) ;
44
+ template < typename M >
45
+ BOOST_UBLAS_INLINE
46
+ int leading_dimension( const M &m, column_major_tag ) ;
47
+ template < typename M >
48
+ BOOST_UBLAS_INLINE
49
+ int leading_dimension( const M &m ) ;
50
+
51
+ template < typename M >
52
+ BOOST_UBLAS_INLINE
53
+ int leading_dimension( const matrix_reference<M> &m ) ;
54
+
55
+ template < typename V >
56
+ BOOST_UBLAS_INLINE
57
+ int stride( const V &v ) ;
58
+
59
+ template < typename V >
60
+ BOOST_UBLAS_INLINE
61
+ int stride( const vector_range<V> &v ) ;
62
+ template < typename V >
63
+ BOOST_UBLAS_INLINE
64
+ int stride( const vector_slice<V> &v ) ;
65
+
66
+ template < typename M >
67
+ BOOST_UBLAS_INLINE
68
+ int stride( const matrix_row<M> &v ) ;
69
+ template < typename M >
70
+ BOOST_UBLAS_INLINE
71
+ int stride( const matrix_column<M> &v ) ;
72
+
73
+ template < typename M >
74
+ BOOST_UBLAS_INLINE
75
+ int stride1( const M &m ) ;
76
+ template < typename M >
77
+ BOOST_UBLAS_INLINE
78
+ int stride2( const M &m ) ;
79
+
80
+ template < typename M >
81
+ BOOST_UBLAS_INLINE
82
+ int stride1( const matrix_reference<M> &m ) ;
83
+ template < typename M >
84
+ BOOST_UBLAS_INLINE
85
+ int stride2( const matrix_reference<M> &m ) ;
86
+
87
+ template < typename T, std::size_t M, std::size_t N >
88
+ BOOST_UBLAS_INLINE
89
+ int stride1( const c_matrix<T, M, N> &m ) ;
90
+ template < typename T, std::size_t M, std::size_t N >
91
+ BOOST_UBLAS_INLINE
92
+ int stride2( const c_matrix<T, M, N> &m ) ;
93
+
94
+ template < typename M >
95
+ BOOST_UBLAS_INLINE
96
+ int stride1( const matrix_range<M> &m ) ;
97
+ template < typename M >
98
+ BOOST_UBLAS_INLINE
99
+ int stride1( const matrix_slice<M> &m ) ;
100
+ template < typename M >
101
+ BOOST_UBLAS_INLINE
102
+ int stride2( const matrix_range<M> &m ) ;
103
+ template < typename M >
104
+ BOOST_UBLAS_INLINE
105
+ int stride2( const matrix_slice<M> &m ) ;
106
+
107
+ template < typename MV >
108
+ BOOST_UBLAS_INLINE
109
+ typename MV::array_type::array_type::const_pointer data( const MV &mv ) ;
110
+ template < typename MV >
111
+ BOOST_UBLAS_INLINE
112
+ typename MV::array_type::array_type::const_pointer data_const( const MV &mv ) ;
113
+ template < typename MV >
114
+ BOOST_UBLAS_INLINE
115
+ typename MV::array_type::pointer data( MV &mv ) ;
116
+
117
+ template < typename V >
118
+ BOOST_UBLAS_INLINE
119
+ typename V::array_type::array_type::const_pointer data( const vector_reference<V> &v ) ;
120
+ template < typename V >
121
+ BOOST_UBLAS_INLINE
122
+ typename V::array_type::array_type::const_pointer data_const( const vector_reference<V> &v ) ;
123
+ template < typename V >
124
+ BOOST_UBLAS_INLINE
125
+ typename V::array_type::pointer data( vector_reference<V> &v ) ;
126
+
127
+ template < typename T, std::size_t N >
128
+ BOOST_UBLAS_INLINE
129
+ typename c_vector<T, N>::array_type::array_type::const_pointer data( const c_vector<T, N> &v ) ;
130
+ template < typename T, std::size_t N >
131
+ BOOST_UBLAS_INLINE
132
+ typename c_vector<T, N>::array_type::array_type::const_pointer data_const( const c_vector<T, N> &v ) ;
133
+ template < typename T, std::size_t N >
134
+ BOOST_UBLAS_INLINE
135
+ typename c_vector<T, N>::pointer data( c_vector<T, N> &v ) ;
136
+
137
+ template < typename V >
138
+ BOOST_UBLAS_INLINE
139
+ typename V::array_type::array_type::const_pointer data( const vector_range<V> &v ) ;
140
+ template < typename V >
141
+ BOOST_UBLAS_INLINE
142
+ typename V::array_type::array_type::const_pointer data( const vector_slice<V> &v ) ;
143
+ template < typename V >
144
+ BOOST_UBLAS_INLINE
145
+ typename V::array_type::array_type::const_pointer data_const( const vector_range<V> &v ) ;
146
+ template < typename V >
147
+ BOOST_UBLAS_INLINE
148
+ typename V::array_type::array_type::const_pointer data_const( const vector_slice<V> &v ) ;
149
+ template < typename V >
150
+ BOOST_UBLAS_INLINE
151
+ typename V::array_type::pointer data( vector_range<V> &v ) ;
152
+ template < typename V >
153
+ BOOST_UBLAS_INLINE
154
+ typename V::array_type::pointer data( vector_slice<V> &v ) ;
155
+
156
+ template < typename M >
157
+ BOOST_UBLAS_INLINE
158
+ typename M::array_type::array_type::const_pointer data( const matrix_reference<M> &m ) ;
159
+ template < typename M >
160
+ BOOST_UBLAS_INLINE
161
+ typename M::array_type::array_type::const_pointer data_const( const matrix_reference<M> &m ) ;
162
+ template < typename M >
163
+ BOOST_UBLAS_INLINE
164
+ typename M::array_type::pointer data( matrix_reference<M> &m ) ;
165
+
166
+ template < typename T, std::size_t M, std::size_t N >
167
+ BOOST_UBLAS_INLINE
168
+ typename c_matrix<T, M, N>::array_type::array_type::const_pointer data( const c_matrix<T, M, N> &m ) ;
169
+ template < typename T, std::size_t M, std::size_t N >
170
+ BOOST_UBLAS_INLINE
171
+ typename c_matrix<T, M, N>::array_type::array_type::const_pointer data_const( const c_matrix<T, M, N> &m ) ;
172
+ template < typename T, std::size_t M, std::size_t N >
173
+ BOOST_UBLAS_INLINE
174
+ typename c_matrix<T, M, N>::pointer data( c_matrix<T, M, N> &m ) ;
175
+
176
+ template < typename M >
177
+ BOOST_UBLAS_INLINE
178
+ typename M::array_type::array_type::const_pointer data( const matrix_row<M> &v ) ;
179
+ template < typename M >
180
+ BOOST_UBLAS_INLINE
181
+ typename M::array_type::array_type::const_pointer data( const matrix_column<M> &v ) ;
182
+ template < typename M >
183
+ BOOST_UBLAS_INLINE
184
+ typename M::array_type::array_type::const_pointer data_const( const matrix_row<M> &v ) ;
185
+ template < typename M >
186
+ BOOST_UBLAS_INLINE
187
+ typename M::array_type::array_type::const_pointer data_const( const matrix_column<M> &v ) ;
188
+ template < typename M >
189
+ BOOST_UBLAS_INLINE
190
+ typename M::array_type::pointer data( matrix_row<M> &v ) ;
191
+ template < typename M >
192
+ BOOST_UBLAS_INLINE
193
+ typename M::array_type::pointer data( matrix_column<M> &v ) ;
194
+
195
+ template < typename M >
196
+ BOOST_UBLAS_INLINE
197
+ typename M::array_type::array_type::const_pointer data( const matrix_range<M> &m ) ;
198
+ template < typename M >
199
+ BOOST_UBLAS_INLINE
200
+ typename M::array_type::array_type::const_pointer data( const matrix_slice<M> &m ) ;
201
+ template < typename M >
202
+ BOOST_UBLAS_INLINE
203
+ typename M::array_type::array_type::const_pointer data_const( const matrix_range<M> &m ) ;
204
+ template < typename M >
205
+ BOOST_UBLAS_INLINE
206
+ typename M::array_type::array_type::const_pointer data_const( const matrix_slice<M> &m ) ;
207
+ template < typename M >
208
+ BOOST_UBLAS_INLINE
209
+ typename M::array_type::pointer data( matrix_range<M> &m ) ;
210
+ template < typename M >
211
+ BOOST_UBLAS_INLINE
212
+ typename M::array_type::pointer data( matrix_slice<M> &m ) ;
213
+
214
+ template < typename MV >
215
+ BOOST_UBLAS_INLINE
216
+ typename MV::array_type::array_type::const_pointer base( const MV &mv ) ;
217
+
218
+ template < typename MV >
219
+ BOOST_UBLAS_INLINE
220
+ typename MV::array_type::array_type::const_pointer base_const( const MV &mv ) ;
221
+ template < typename MV >
222
+ BOOST_UBLAS_INLINE
223
+ typename MV::array_type::pointer base( MV &mv ) ;
224
+
225
+ template < typename V >
226
+ BOOST_UBLAS_INLINE
227
+ typename V::array_type::array_type::const_pointer base( const vector_reference<V> &v ) ;
228
+ template < typename V >
229
+ BOOST_UBLAS_INLINE
230
+ typename V::array_type::array_type::const_pointer base_const( const vector_reference<V> &v ) ;
231
+ template < typename V >
232
+ BOOST_UBLAS_INLINE
233
+ typename V::array_type::pointer base( vector_reference<V> &v ) ;
234
+
235
+ template < typename T, std::size_t N >
236
+ BOOST_UBLAS_INLINE
237
+ typename c_vector<T, N>::array_type::array_type::const_pointer base( const c_vector<T, N> &v ) ;
238
+ template < typename T, std::size_t N >
239
+ BOOST_UBLAS_INLINE
240
+ typename c_vector<T, N>::array_type::array_type::const_pointer base_const( const c_vector<T, N> &v ) ;
241
+ template < typename T, std::size_t N >
242
+ BOOST_UBLAS_INLINE
243
+ typename c_vector<T, N>::pointer base( c_vector<T, N> &v ) ;
244
+
245
+ template < typename V >
246
+ BOOST_UBLAS_INLINE
247
+ typename V::array_type::array_type::const_pointer base( const vector_range<V> &v ) ;
248
+ template < typename V >
249
+ BOOST_UBLAS_INLINE
250
+ typename V::array_type::array_type::const_pointer base( const vector_slice<V> &v ) ;
251
+ template < typename V >
252
+ BOOST_UBLAS_INLINE
253
+ typename V::array_type::array_type::const_pointer base_const( const vector_range<V> &v ) ;
254
+ template < typename V >
255
+ BOOST_UBLAS_INLINE
256
+ typename V::array_type::array_type::const_pointer base_const( const vector_slice<V> &v ) ;
257
+ template < typename V >
258
+ BOOST_UBLAS_INLINE
259
+ typename V::array_type::pointer base( vector_range<V> &v ) ;
260
+ template < typename V >
261
+ BOOST_UBLAS_INLINE
262
+ typename V::array_type::pointer base( vector_slice<V> &v ) ;
263
+
264
+ template < typename M >
265
+ BOOST_UBLAS_INLINE
266
+ typename M::array_type::array_type::const_pointer base( const matrix_reference<M> &m ) ;
267
+ template < typename M >
268
+ BOOST_UBLAS_INLINE
269
+ typename M::array_type::array_type::const_pointer base_const( const matrix_reference<M> &m ) ;
270
+ template < typename M >
271
+ BOOST_UBLAS_INLINE
272
+ typename M::array_type::pointer base( matrix_reference<M> &m ) ;
273
+
274
+ template < typename T, std::size_t M, std::size_t N >
275
+ BOOST_UBLAS_INLINE
276
+ typename c_matrix<T, M, N>::array_type::array_type::const_pointer base( const c_matrix<T, M, N> &m ) ;
277
+ template < typename T, std::size_t M, std::size_t N >
278
+ BOOST_UBLAS_INLINE
279
+ typename c_matrix<T, M, N>::array_type::array_type::const_pointer base_const( const c_matrix<T, M, N> &m ) ;
280
+ template < typename T, std::size_t M, std::size_t N >
281
+ BOOST_UBLAS_INLINE
282
+ typename c_matrix<T, M, N>::pointer base( c_matrix<T, M, N> &m ) ;
283
+
284
+ template < typename M >
285
+ BOOST_UBLAS_INLINE
286
+ typename M::array_type::array_type::const_pointer base( const matrix_row<M> &v ) ;
287
+ template < typename M >
288
+ BOOST_UBLAS_INLINE
289
+ typename M::array_type::array_type::const_pointer base( const matrix_column<M> &v ) ;
290
+ template < typename M >
291
+ BOOST_UBLAS_INLINE
292
+ typename M::array_type::array_type::const_pointer base_const( const matrix_row<M> &v ) ;
293
+ template < typename M >
294
+ BOOST_UBLAS_INLINE
295
+ typename M::array_type::array_type::const_pointer base_const( const matrix_column<M> &v ) ;
296
+ template < typename M >
297
+ BOOST_UBLAS_INLINE
298
+ typename M::array_type::pointer base( matrix_row<M> &v ) ;
299
+ template < typename M >
300
+ BOOST_UBLAS_INLINE
301
+ typename M::array_type::pointer base( matrix_column<M> &v ) ;
302
+
303
+ template < typename M >
304
+ BOOST_UBLAS_INLINE
305
+ typename M::array_type::array_type::const_pointer base( const matrix_range<M> &m ) ;
306
+ template < typename M >
307
+ BOOST_UBLAS_INLINE
308
+ typename M::array_type::array_type::const_pointer base( const matrix_slice<M> &m ) ;
309
+ template < typename M >
310
+ BOOST_UBLAS_INLINE
311
+ typename M::array_type::array_type::const_pointer base_const( const matrix_range<M> &m ) ;
312
+ template < typename M >
313
+ BOOST_UBLAS_INLINE
314
+ typename M::array_type::array_type::const_pointer base_const( const matrix_slice<M> &m ) ;
315
+ template < typename M >
316
+ BOOST_UBLAS_INLINE
317
+ typename M::array_type::pointer base( matrix_range<M> &m ) ;
318
+ template < typename M >
319
+ BOOST_UBLAS_INLINE
320
+ typename M::array_type::pointer base( matrix_slice<M> &m ) ;
321
+
322
+ template < typename MV >
323
+ BOOST_UBLAS_INLINE
324
+ typename MV::size_type start( const MV &mv ) ;
325
+
326
+ template < typename V >
327
+ BOOST_UBLAS_INLINE
328
+ typename V::size_type start( const vector_range<V> &v ) ;
329
+ template < typename V >
330
+ BOOST_UBLAS_INLINE
331
+ typename V::size_type start( const vector_slice<V> &v ) ;
332
+
333
+ template < typename M >
334
+ BOOST_UBLAS_INLINE
335
+ typename M::size_type start( const matrix_row<M> &v ) ;
336
+ template < typename M >
337
+ BOOST_UBLAS_INLINE
338
+ typename M::size_type start( const matrix_column<M> &v ) ;
339
+
340
+ template < typename M >
341
+ BOOST_UBLAS_INLINE
342
+ typename M::size_type start( const matrix_range<M> &m ) ;
343
+ template < typename M >
344
+ BOOST_UBLAS_INLINE
345
+ typename M::size_type start( const matrix_slice<M> &m ) ;
346
+
347
+
348
+
349
+ template < typename V >
350
+ BOOST_UBLAS_INLINE
351
+ int size( const V &v ) {
352
+ return v.size() ;
353
+ }
354
+
355
+ template < typename V >
356
+ BOOST_UBLAS_INLINE
357
+ int size( const vector_reference<V> &v ) {
358
+ return size( v ) ;
359
+ }
360
+
361
+ template < typename M >
362
+ BOOST_UBLAS_INLINE
363
+ int size1( const M &m ) {
364
+ return m.size1() ;
365
+ }
366
+ template < typename M >
367
+ BOOST_UBLAS_INLINE
368
+ int size2( const M &m ) {
369
+ return m.size2() ;
370
+ }
371
+
372
+ template < typename M >
373
+ BOOST_UBLAS_INLINE
374
+ int size1( const matrix_reference<M> &m ) {
375
+ return size1( m.expression() ) ;
376
+ }
377
+ template < typename M >
378
+ BOOST_UBLAS_INLINE
379
+ int size2( const matrix_reference<M> &m ) {
380
+ return size2( m.expression() ) ;
381
+ }
382
+
383
+ template < typename M >
384
+ BOOST_UBLAS_INLINE
385
+ int leading_dimension( const M &m, row_major_tag ) {
386
+ return m.size2() ;
387
+ }
388
+ template < typename M >
389
+ BOOST_UBLAS_INLINE
390
+ int leading_dimension( const M &m, column_major_tag ) {
391
+ return m.size1() ;
392
+ }
393
+ template < typename M >
394
+ BOOST_UBLAS_INLINE
395
+ int leading_dimension( const M &m ) {
396
+ return leading_dimension( m, typename M::orientation_category() ) ;
397
+ }
398
+
399
+ template < typename M >
400
+ BOOST_UBLAS_INLINE
401
+ int leading_dimension( const matrix_reference<M> &m ) {
402
+ return leading_dimension( m.expression() ) ;
403
+ }
404
+
405
+ template < typename V >
406
+ BOOST_UBLAS_INLINE
407
+ int stride( const V &v ) {
408
+ return 1 ;
409
+ }
410
+
411
+ template < typename V >
412
+ BOOST_UBLAS_INLINE
413
+ int stride( const vector_range<V> &v ) {
414
+ return stride( v.data() ) ;
415
+ }
416
+ template < typename V >
417
+ BOOST_UBLAS_INLINE
418
+ int stride( const vector_slice<V> &v ) {
419
+ return v.stride() * stride( v.data() ) ;
420
+ }
421
+
422
+ template < typename M >
423
+ BOOST_UBLAS_INLINE
424
+ int stride( const matrix_row<M> &v ) {
425
+ return stride2( v.data() ) ;
426
+ }
427
+ template < typename M >
428
+ BOOST_UBLAS_INLINE
429
+ int stride( const matrix_column<M> &v ) {
430
+ return stride1( v.data() ) ;
431
+ }
432
+
433
+ template < typename M >
434
+ BOOST_UBLAS_INLINE
435
+ int stride1( const M &m ) {
436
+ typedef typename M::functor_type functor_type;
437
+ return functor_type::one1( m.size1(), m.size2() ) ;
438
+ }
439
+ template < typename M >
440
+ BOOST_UBLAS_INLINE
441
+ int stride2( const M &m ) {
442
+ typedef typename M::functor_type functor_type;
443
+ return functor_type::one2( m.size1(), m.size2() ) ;
444
+ }
445
+
446
+ template < typename M >
447
+ BOOST_UBLAS_INLINE
448
+ int stride1( const matrix_reference<M> &m ) {
449
+ return stride1( m.expression() ) ;
450
+ }
451
+ template < typename M >
452
+ BOOST_UBLAS_INLINE
453
+ int stride2( const matrix_reference<M> &m ) {
454
+ return stride2( m.expression() ) ;
455
+ }
456
+
457
+ template < typename T, std::size_t M, std::size_t N >
458
+ BOOST_UBLAS_INLINE
459
+ int stride1( const c_matrix<T, M, N> &m ) {
460
+ return N ;
461
+ }
462
+ template < typename T, std::size_t M, std::size_t N >
463
+ BOOST_UBLAS_INLINE
464
+ int stride2( const c_matrix<T, M, N> &m ) {
465
+ return 1 ;
466
+ }
467
+
468
+ template < typename M >
469
+ BOOST_UBLAS_INLINE
470
+ int stride1( const matrix_range<M> &m ) {
471
+ return stride1( m.data() ) ;
472
+ }
473
+ template < typename M >
474
+ BOOST_UBLAS_INLINE
475
+ int stride1( const matrix_slice<M> &m ) {
476
+ return m.stride1() * stride1( m.data() ) ;
477
+ }
478
+ template < typename M >
479
+ BOOST_UBLAS_INLINE
480
+ int stride2( const matrix_range<M> &m ) {
481
+ return stride2( m.data() ) ;
482
+ }
483
+ template < typename M >
484
+ BOOST_UBLAS_INLINE
485
+ int stride2( const matrix_slice<M> &m ) {
486
+ return m.stride2() * stride2( m.data() ) ;
487
+ }
488
+
489
+ template < typename MV >
490
+ BOOST_UBLAS_INLINE
491
+ typename MV::array_type::array_type::array_type::const_pointer data( const MV &mv ) {
492
+ return &mv.data().begin()[0] ;
493
+ }
494
+ template < typename MV >
495
+ BOOST_UBLAS_INLINE
496
+ typename MV::array_type::array_type::const_pointer data_const( const MV &mv ) {
497
+ return &mv.data().begin()[0] ;
498
+ }
499
+ template < typename MV >
500
+ BOOST_UBLAS_INLINE
501
+ typename MV::array_type::pointer data( MV &mv ) {
502
+ return &mv.data().begin()[0] ;
503
+ }
504
+
505
+
506
+ template < typename V >
507
+ BOOST_UBLAS_INLINE
508
+ typename V::array_type::array_type::const_pointer data( const vector_reference<V> &v ) {
509
+ return data( v.expression () ) ;
510
+ }
511
+ template < typename V >
512
+ BOOST_UBLAS_INLINE
513
+ typename V::array_type::array_type::const_pointer data_const( const vector_reference<V> &v ) {
514
+ return data_const( v.expression () ) ;
515
+ }
516
+ template < typename V >
517
+ BOOST_UBLAS_INLINE
518
+ typename V::array_type::pointer data( vector_reference<V> &v ) {
519
+ return data( v.expression () ) ;
520
+ }
521
+
522
+ template < typename T, std::size_t N >
523
+ BOOST_UBLAS_INLINE
524
+ typename c_vector<T, N>::array_type::array_type::const_pointer data( const c_vector<T, N> &v ) {
525
+ return v.data() ;
526
+ }
527
+ template < typename T, std::size_t N >
528
+ BOOST_UBLAS_INLINE
529
+ typename c_vector<T, N>::array_type::array_type::const_pointer data_const( const c_vector<T, N> &v ) {
530
+ return v.data() ;
531
+ }
532
+ template < typename T, std::size_t N >
533
+ BOOST_UBLAS_INLINE
534
+ typename c_vector<T, N>::pointer data( c_vector<T, N> &v ) {
535
+ return v.data() ;
536
+ }
537
+
538
+ template < typename V >
539
+ BOOST_UBLAS_INLINE
540
+ typename V::array_type::array_type::const_pointer data( const vector_range<V> &v ) {
541
+ return data( v.data() ) + v.start() * stride (v.data() ) ;
542
+ }
543
+ template < typename V >
544
+ BOOST_UBLAS_INLINE
545
+ typename V::array_type::array_type::const_pointer data( const vector_slice<V> &v ) {
546
+ return data( v.data() ) + v.start() * stride (v.data() ) ;
547
+ }
548
+ template < typename V >
549
+ BOOST_UBLAS_INLINE
550
+ typename V::array_type::array_type::const_pointer data_const( const vector_range<V> &v ) {
551
+ return data_const( v.data() ) + v.start() * stride (v.data() ) ;
552
+ }
553
+ template < typename V >
554
+ BOOST_UBLAS_INLINE
555
+ typename V::array_type::const_pointer data_const( const vector_slice<V> &v ) {
556
+ return data_const( v.data() ) + v.start() * stride (v.data() ) ;
557
+ }
558
+ template < typename V >
559
+ BOOST_UBLAS_INLINE
560
+ typename V::array_type::pointer data( vector_range<V> &v ) {
561
+ return data( v.data() ) + v.start() * stride (v.data() ) ;
562
+ }
563
+ template < typename V >
564
+ BOOST_UBLAS_INLINE
565
+ typename V::array_type::pointer data( vector_slice<V> &v ) {
566
+ return data( v.data() ) + v.start() * stride (v.data() ) ;
567
+ }
568
+
569
+ template < typename M >
570
+ BOOST_UBLAS_INLINE
571
+ typename M::array_type::const_pointer data( const matrix_reference<M> &m ) {
572
+ return data( m.expression () ) ;
573
+ }
574
+ template < typename M >
575
+ BOOST_UBLAS_INLINE
576
+ typename M::array_type::const_pointer data_const( const matrix_reference<M> &m ) {
577
+ return data_const( m.expression () ) ;
578
+ }
579
+ template < typename M >
580
+ BOOST_UBLAS_INLINE
581
+ typename M::array_type::pointer data( matrix_reference<M> &m ) {
582
+ return data( m.expression () ) ;
583
+ }
584
+
585
+ template < typename T, std::size_t M, std::size_t N >
586
+ BOOST_UBLAS_INLINE
587
+ typename c_matrix<T, M, N>::array_type::const_pointer data( const c_matrix<T, M, N> &m ) {
588
+ return m.data() ;
589
+ }
590
+ template < typename T, std::size_t M, std::size_t N >
591
+ BOOST_UBLAS_INLINE
592
+ typename c_matrix<T, M, N>::array_type::const_pointer data_const( const c_matrix<T, M, N> &m ) {
593
+ return m.data() ;
594
+ }
595
+ template < typename T, std::size_t M, std::size_t N >
596
+ BOOST_UBLAS_INLINE
597
+ typename c_matrix<T, M, N>::pointer data( c_matrix<T, M, N> &m ) {
598
+ return m.data() ;
599
+ }
600
+
601
+ template < typename M >
602
+ BOOST_UBLAS_INLINE
603
+ typename M::array_type::const_pointer data( const matrix_row<M> &v ) {
604
+ return data( v.data() ) + v.index() * stride1( v.data() ) ;
605
+ }
606
+ template < typename M >
607
+ BOOST_UBLAS_INLINE
608
+ typename M::array_type::const_pointer data( const matrix_column<M> &v ) {
609
+ return data( v.data() ) + v.index() * stride2( v.data() ) ;
610
+ }
611
+ template < typename M >
612
+ BOOST_UBLAS_INLINE
613
+ typename M::array_type::const_pointer data_const( const matrix_row<M> &v ) {
614
+ return data_const( v.data() ) + v.index() * stride1( v.data() ) ;
615
+ }
616
+ template < typename M >
617
+ BOOST_UBLAS_INLINE
618
+ typename M::array_type::const_pointer data_const( const matrix_column<M> &v ) {
619
+ return data_const( v.data() ) + v.index() * stride2( v.data() ) ;
620
+ }
621
+ template < typename M >
622
+ BOOST_UBLAS_INLINE
623
+ typename M::array_type::pointer data( matrix_row<M> &v ) {
624
+ return data( v.data() ) + v.index() * stride1( v.data() ) ;
625
+ }
626
+ template < typename M >
627
+ BOOST_UBLAS_INLINE
628
+ typename M::array_type::pointer data( matrix_column<M> &v ) {
629
+ return data( v.data() ) + v.index() * stride2( v.data() ) ;
630
+ }
631
+
632
+ template < typename M >
633
+ BOOST_UBLAS_INLINE
634
+ typename M::array_type::const_pointer data( const matrix_range<M> &m ) {
635
+ return data( m.data() ) + m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
636
+ }
637
+ template < typename M >
638
+ BOOST_UBLAS_INLINE
639
+ typename M::array_type::const_pointer data( const matrix_slice<M> &m ) {
640
+ return data( m.data() ) + m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
641
+ }
642
+ template < typename M >
643
+ BOOST_UBLAS_INLINE
644
+ typename M::array_type::const_pointer data_const( const matrix_range<M> &m ) {
645
+ return data_const( m.data() ) + m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
646
+ }
647
+ template < typename M >
648
+ BOOST_UBLAS_INLINE
649
+ typename M::array_type::const_pointer data_const( const matrix_slice<M> &m ) {
650
+ return data_const( m.data() ) + m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
651
+ }
652
+ template < typename M >
653
+ BOOST_UBLAS_INLINE
654
+ typename M::array_type::pointer data( matrix_range<M> &m ) {
655
+ return data( m.data() ) + m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
656
+ }
657
+ template < typename M >
658
+ BOOST_UBLAS_INLINE
659
+ typename M::array_type::pointer data( matrix_slice<M> &m ) {
660
+ return data( m.data() ) + m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
661
+ }
662
+
663
+
664
+ template < typename MV >
665
+ BOOST_UBLAS_INLINE
666
+ typename MV::array_type::const_pointer base( const MV &mv ) {
667
+ return &mv.data().begin()[0] ;
668
+ }
669
+ template < typename MV >
670
+ BOOST_UBLAS_INLINE
671
+ typename MV::array_type::const_pointer base_const( const MV &mv ) {
672
+ return &mv.data().begin()[0] ;
673
+ }
674
+ template < typename MV >
675
+ BOOST_UBLAS_INLINE
676
+ typename MV::array_type::pointer base( MV &mv ) {
677
+ return &mv.data().begin()[0] ;
678
+ }
679
+
680
+ template < typename V >
681
+ BOOST_UBLAS_INLINE
682
+ typename V::array_type::const_pointer base( const vector_reference<V> &v ) {
683
+ return base( v.expression () ) ;
684
+ }
685
+ template < typename V >
686
+ BOOST_UBLAS_INLINE
687
+ typename V::array_type::const_pointer base_const( const vector_reference<V> &v ) {
688
+ return base_const( v.expression () ) ;
689
+ }
690
+ template < typename V >
691
+ BOOST_UBLAS_INLINE
692
+ typename V::array_type::pointer base( vector_reference<V> &v ) {
693
+ return base( v.expression () ) ;
694
+ }
695
+
696
+ template < typename T, std::size_t N >
697
+ BOOST_UBLAS_INLINE
698
+ typename c_vector<T, N>::array_type::const_pointer base( const c_vector<T, N> &v ) {
699
+ return v.data() ;
700
+ }
701
+ template < typename T, std::size_t N >
702
+ BOOST_UBLAS_INLINE
703
+ typename c_vector<T, N>::array_type::const_pointer base_const( const c_vector<T, N> &v ) {
704
+ return v.data() ;
705
+ }
706
+ template < typename T, std::size_t N >
707
+ BOOST_UBLAS_INLINE
708
+ typename c_vector<T, N>::pointer base( c_vector<T, N> &v ) {
709
+ return v.data() ;
710
+ }
711
+
712
+ template < typename V >
713
+ BOOST_UBLAS_INLINE
714
+ typename V::array_type::const_pointer base( const vector_range<V> &v ) {
715
+ return base( v.data() ) ;
716
+ }
717
+ template < typename V >
718
+ BOOST_UBLAS_INLINE
719
+ typename V::array_type::const_pointer base( const vector_slice<V> &v ) {
720
+ return base( v.data() ) ;
721
+ }
722
+ template < typename V >
723
+ BOOST_UBLAS_INLINE
724
+ typename V::array_type::const_pointer base_const( const vector_range<V> &v ) {
725
+ return base_const( v.data() ) ;
726
+ }
727
+ template < typename V >
728
+ BOOST_UBLAS_INLINE
729
+ typename V::array_type::const_pointer base_const( const vector_slice<V> &v ) {
730
+ return base_const( v.data() ) ;
731
+ }
732
+ template < typename V >
733
+ BOOST_UBLAS_INLINE
734
+ typename V::array_type::pointer base( vector_range<V> &v ) {
735
+ return base( v.data() ) ;
736
+ }
737
+ template < typename V >
738
+ BOOST_UBLAS_INLINE
739
+ typename V::array_type::pointer base( vector_slice<V> &v ) {
740
+ return base( v.data() ) ;
741
+ }
742
+
743
+ template < typename M >
744
+ BOOST_UBLAS_INLINE
745
+ typename M::array_type::const_pointer base( const matrix_reference<M> &m ) {
746
+ return base( m.expression () ) ;
747
+ }
748
+ template < typename M >
749
+ BOOST_UBLAS_INLINE
750
+ typename M::array_type::const_pointer base_const( const matrix_reference<M> &m ) {
751
+ return base_const( m.expression () ) ;
752
+ }
753
+ template < typename M >
754
+ BOOST_UBLAS_INLINE
755
+ typename M::array_type::pointer base( matrix_reference<M> &m ) {
756
+ return base( m.expression () ) ;
757
+ }
758
+
759
+ template < typename T, std::size_t M, std::size_t N >
760
+ BOOST_UBLAS_INLINE
761
+ typename c_matrix<T, M, N>::array_type::const_pointer base( const c_matrix<T, M, N> &m ) {
762
+ return m.data() ;
763
+ }
764
+ template < typename T, std::size_t M, std::size_t N >
765
+ BOOST_UBLAS_INLINE
766
+ typename c_matrix<T, M, N>::array_type::const_pointer base_const( const c_matrix<T, M, N> &m ) {
767
+ return m.data() ;
768
+ }
769
+ template < typename T, std::size_t M, std::size_t N >
770
+ BOOST_UBLAS_INLINE
771
+ typename c_matrix<T, M, N>::pointer base( c_matrix<T, M, N> &m ) {
772
+ return m.data() ;
773
+ }
774
+
775
+ template < typename M >
776
+ BOOST_UBLAS_INLINE
777
+ typename M::array_type::const_pointer base( const matrix_row<M> &v ) {
778
+ return base( v.data() ) ;
779
+ }
780
+ template < typename M >
781
+ BOOST_UBLAS_INLINE
782
+ typename M::array_type::const_pointer base( const matrix_column<M> &v ) {
783
+ return base( v.data() ) ;
784
+ }
785
+ template < typename M >
786
+ BOOST_UBLAS_INLINE
787
+ typename M::array_type::const_pointer base_const( const matrix_row<M> &v ) {
788
+ return base_const( v.data() ) ;
789
+ }
790
+ template < typename M >
791
+ BOOST_UBLAS_INLINE
792
+ typename M::array_type::const_pointer base_const( const matrix_column<M> &v ) {
793
+ return base_const( v.data() ) ;
794
+ }
795
+ template < typename M >
796
+ BOOST_UBLAS_INLINE
797
+ typename M::array_type::pointer base( matrix_row<M> &v ) {
798
+ return base( v.data() ) ;
799
+ }
800
+ template < typename M >
801
+ BOOST_UBLAS_INLINE
802
+ typename M::array_type::pointer base( matrix_column<M> &v ) {
803
+ return base( v.data() ) ;
804
+ }
805
+
806
+ template < typename M >
807
+ BOOST_UBLAS_INLINE
808
+ typename M::array_type::const_pointer base( const matrix_range<M> &m ) {
809
+ return base( m.data() ) ;
810
+ }
811
+ template < typename M >
812
+ BOOST_UBLAS_INLINE
813
+ typename M::array_type::const_pointer base( const matrix_slice<M> &m ) {
814
+ return base( m.data() ) ;
815
+ }
816
+ template < typename M >
817
+ BOOST_UBLAS_INLINE
818
+ typename M::array_type::const_pointer base_const( const matrix_range<M> &m ) {
819
+ return base_const( m.data() ) ;
820
+ }
821
+ template < typename M >
822
+ BOOST_UBLAS_INLINE
823
+ typename M::array_type::const_pointer base_const( const matrix_slice<M> &m ) {
824
+ return base_const( m.data() ) ;
825
+ }
826
+ template < typename M >
827
+ BOOST_UBLAS_INLINE
828
+ typename M::array_type::pointer base( matrix_range<M> &m ) {
829
+ return base( m.data() ) ;
830
+ }
831
+ template < typename M >
832
+ BOOST_UBLAS_INLINE
833
+ typename M::array_type::pointer base( matrix_slice<M> &m ) {
834
+ return base( m.data() ) ;
835
+ }
836
+
837
+ template < typename MV >
838
+ BOOST_UBLAS_INLINE
839
+ typename MV::size_type start( const MV &mv ) {
840
+ return 0 ;
841
+ }
842
+
843
+ template < typename V >
844
+ BOOST_UBLAS_INLINE
845
+ typename V::size_type start( const vector_range<V> &v ) {
846
+ return v.start() * stride (v.data() ) ;
847
+ }
848
+ template < typename V >
849
+ BOOST_UBLAS_INLINE
850
+ typename V::size_type start( const vector_slice<V> &v ) {
851
+ return v.start() * stride (v.data() ) ;
852
+ }
853
+
854
+ template < typename M >
855
+ BOOST_UBLAS_INLINE
856
+ typename M::size_type start( const matrix_row<M> &v ) {
857
+ return v.index() * stride1( v.data() ) ;
858
+ }
859
+ template < typename M >
860
+ BOOST_UBLAS_INLINE
861
+ typename M::size_type start( const matrix_column<M> &v ) {
862
+ return v.index() * stride2( v.data() ) ;
863
+ }
864
+
865
+ template < typename M >
866
+ BOOST_UBLAS_INLINE
867
+ typename M::size_type start( const matrix_range<M> &m ) {
868
+ return m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
869
+ }
870
+ template < typename M >
871
+ BOOST_UBLAS_INLINE
872
+ typename M::size_type start( const matrix_slice<M> &m ) {
873
+ return m.start1() * stride1( m.data () ) + m.start2() * stride2( m.data () ) ;
874
+ }
875
+
876
+ }}}}
877
+
878
+ #endif