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,297 @@
1
+ // Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot
2
+ //
3
+ // Distributed under the Boost Software License, Version 1.0. (See
4
+ // accompanying file LICENSE_1_0.txt or copy at
5
+ // http://www.boost.org/LICENSE_1_0.txt)
6
+
7
+ #ifndef _BOOST_UBLAS_EXCEPTION_
8
+ #define _BOOST_UBLAS_EXCEPTION_
9
+
10
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
11
+ #include <stdexcept>
12
+ #else
13
+ #include <cstdlib>
14
+ #endif
15
+ #ifndef BOOST_UBLAS_NO_STD_CERR
16
+ #include <iostream>
17
+ #endif
18
+
19
+ #include <boost/numeric/ublas/detail/config.hpp>
20
+
21
+ namespace boost { namespace numeric { namespace ublas {
22
+
23
+ /** \brief Exception raised when a division by zero occurs
24
+ */
25
+ struct divide_by_zero
26
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
27
+ // Inherit from standard exceptions as requested during review.
28
+ : public std::runtime_error
29
+ {
30
+ explicit divide_by_zero (const char *s = "divide by zero") :
31
+ std::runtime_error (s) {}
32
+ void raise () {
33
+ throw *this;
34
+ }
35
+ #else
36
+ {
37
+ divide_by_zero ()
38
+ {}
39
+ explicit divide_by_zero (const char *)
40
+ {}
41
+ void raise () {
42
+ std::abort ();
43
+ }
44
+ #endif
45
+ };
46
+
47
+ /** \brief Expception raised when some interal errors occurs like computations errors, zeros values where you should not have zeros, etc...
48
+ */
49
+ struct internal_logic
50
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
51
+ // Inherit from standard exceptions as requested during review.
52
+ : public std::logic_error {
53
+ explicit internal_logic (const char *s = "internal logic") :
54
+ std::logic_error (s) {}
55
+ void raise () {
56
+ throw *this;
57
+ }
58
+ #else
59
+ {
60
+ internal_logic ()
61
+ {}
62
+ explicit internal_logic (const char *)
63
+ {}
64
+ void raise () {
65
+ std::abort ();
66
+ }
67
+ #endif
68
+ };
69
+
70
+ struct external_logic
71
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
72
+ // Inherit from standard exceptions as requested during review.
73
+ : public std::logic_error {
74
+ explicit external_logic (const char *s = "external logic") :
75
+ std::logic_error (s) {}
76
+ // virtual const char *what () const throw () {
77
+ // return "exception: external logic";
78
+ // }
79
+ void raise () {
80
+ throw *this;
81
+ }
82
+ #else
83
+ {
84
+ external_logic ()
85
+ {}
86
+ explicit external_logic (const char *)
87
+ {}
88
+ void raise () {
89
+ std::abort ();
90
+ }
91
+ #endif
92
+ };
93
+
94
+ struct bad_argument
95
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
96
+ // Inherit from standard exceptions as requested during review.
97
+ : public std::invalid_argument {
98
+ explicit bad_argument (const char *s = "bad argument") :
99
+ std::invalid_argument (s) {}
100
+ void raise () {
101
+ throw *this;
102
+ }
103
+ #else
104
+ {
105
+ bad_argument ()
106
+ {}
107
+ explicit bad_argument (const char *)
108
+ {}
109
+ void raise () {
110
+ std::abort ();
111
+ }
112
+ #endif
113
+ };
114
+
115
+ /**
116
+ */
117
+ struct bad_size
118
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
119
+ // Inherit from standard exceptions as requested during review.
120
+ : public std::domain_error {
121
+ explicit bad_size (const char *s = "bad size") :
122
+ std::domain_error (s) {}
123
+ void raise () {
124
+ throw *this;
125
+ }
126
+ #else
127
+ {
128
+ bad_size ()
129
+ {}
130
+ explicit bad_size (const char *)
131
+ {}
132
+ void raise () {
133
+ std::abort ();
134
+ }
135
+ #endif
136
+ };
137
+
138
+ struct bad_index
139
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
140
+ // Inherit from standard exceptions as requested during review.
141
+ : public std::out_of_range {
142
+ explicit bad_index (const char *s = "bad index") :
143
+ std::out_of_range (s) {}
144
+ void raise () {
145
+ throw *this;
146
+ }
147
+ #else
148
+ {
149
+ bad_index ()
150
+ {}
151
+ explicit bad_index (const char *)
152
+ {}
153
+ void raise () {
154
+ std::abort ();
155
+ }
156
+ #endif
157
+ };
158
+
159
+ struct singular
160
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
161
+ // Inherit from standard exceptions as requested during review.
162
+ : public std::runtime_error {
163
+ explicit singular (const char *s = "singular") :
164
+ std::runtime_error (s) {}
165
+ void raise () {
166
+ throw *this;
167
+ }
168
+ #else
169
+ {
170
+ singular ()
171
+ {}
172
+ explicit singular (const char *)
173
+ {}
174
+ void raise () {
175
+ std::abort ();
176
+ }
177
+ #endif
178
+ };
179
+
180
+ struct non_real
181
+ #if ! defined (BOOST_NO_EXCEPTIONS) && ! defined (BOOST_UBLAS_NO_EXCEPTIONS)
182
+ // Inherit from standard exceptions as requested during review.
183
+ : public std::domain_error {
184
+ explicit non_real (const char *s = "exception: non real") :
185
+ std::domain_error (s) {}
186
+ void raise () {
187
+ throw *this;
188
+ }
189
+ #else
190
+ {
191
+ non_real ()
192
+ {}
193
+ explicit non_real (const char *)
194
+ {}
195
+ void raise () {
196
+ std::abort ();
197
+ }
198
+ #endif
199
+ };
200
+
201
+ #if BOOST_UBLAS_CHECK_ENABLE
202
+ // Macros are equivilent to
203
+ // template<class E>
204
+ // BOOST_UBLAS_INLINE
205
+ // void check (bool expression, const E &e) {
206
+ // if (! expression)
207
+ // e.raise ();
208
+ // }
209
+ // template<class E>
210
+ // BOOST_UBLAS_INLINE
211
+ // void check_ex (bool expression, const char *file, int line, const E &e) {
212
+ // if (! expression)
213
+ // e.raise ();
214
+ // }
215
+ #ifndef BOOST_UBLAS_NO_STD_CERR
216
+ #define BOOST_UBLAS_CHECK_FALSE(e) \
217
+ std::cerr << "Check failed in file " << __FILE__ << " at line " << __LINE__ << ":" << std::endl; \
218
+ e.raise ();
219
+ #define BOOST_UBLAS_CHECK(expression, e) \
220
+ if (! (expression)) { \
221
+ std::cerr << "Check failed in file " << __FILE__ << " at line " << __LINE__ << ":" << std::endl; \
222
+ std::cerr << #expression << std::endl; \
223
+ e.raise (); \
224
+ }
225
+ #define BOOST_UBLAS_CHECK_EX(expression, file, line, e) \
226
+ if (! (expression)) { \
227
+ std::cerr << "Check failed in file " << (file) << " at line " << (line) << ":" << std::endl; \
228
+ std::cerr << #expression << std::endl; \
229
+ e.raise (); \
230
+ }
231
+ #else
232
+ #define BOOST_UBLAS_CHECK_FALSE(e) \
233
+ e.raise ();
234
+ #define BOOST_UBLAS_CHECK(expression, e) \
235
+ if (! (expression)) { \
236
+ e.raise (); \
237
+ }
238
+ #define BOOST_UBLAS_CHECK_EX(expression, file, line, e) \
239
+ if (! (expression)) { \
240
+ e.raise (); \
241
+ }
242
+ #endif
243
+ #else
244
+ // Macros are equivilent to
245
+ // template<class E>
246
+ // BOOST_UBLAS_INLINE
247
+ // void check (bool expression, const E &e) {}
248
+ // template<class E>
249
+ // BOOST_UBLAS_INLINE
250
+ // void check_ex (bool expression, const char *file, int line, const E &e) {}
251
+ #define BOOST_UBLAS_CHECK_FALSE(e)
252
+ #define BOOST_UBLAS_CHECK(expression, e)
253
+ #define BOOST_UBLAS_CHECK_EX(expression, file, line, e)
254
+ #endif
255
+
256
+
257
+ #ifndef BOOST_UBLAS_USE_FAST_SAME
258
+ // Macro is equivilent to
259
+ // template<class T>
260
+ // BOOST_UBLAS_INLINE
261
+ // const T &same_impl (const T &size1, const T &size2) {
262
+ // BOOST_UBLAS_CHECK (size1 == size2, bad_argument ());
263
+ // return (std::min) (size1, size2);
264
+ // }
265
+ // #define BOOST_UBLAS_SAME(size1, size2) same_impl ((size1), (size2))
266
+ // need two types here because different containers can have
267
+ // different size_types (especially sparse types)
268
+ template<class T1, class T2>
269
+ BOOST_UBLAS_INLINE
270
+ // Kresimir Fresl and Dan Muller reported problems with COMO.
271
+ // We better change the signature instead of libcomo ;-)
272
+ // const T &same_impl_ex (const T &size1, const T &size2, const char *file, int line) {
273
+ T1 same_impl_ex (const T1 &size1, const T2 &size2, const char *file, int line) {
274
+ BOOST_UBLAS_CHECK_EX (size1 == size2, file, line, bad_argument ());
275
+ return (size1 < size2)?(size1):(size2);
276
+ }
277
+ template<class T>
278
+ BOOST_UBLAS_INLINE
279
+ T same_impl_ex (const T &size1, const T &size2, const char *file, int line) {
280
+ BOOST_UBLAS_CHECK_EX (size1 == size2, file, line, bad_argument ());
281
+ return (std::min) (size1, size2);
282
+ }
283
+ #define BOOST_UBLAS_SAME(size1, size2) same_impl_ex ((size1), (size2), __FILE__, __LINE__)
284
+ #else
285
+ // Macros are equivilent to
286
+ // template<class T>
287
+ // BOOST_UBLAS_INLINE
288
+ // const T &same_impl (const T &size1, const T &size2) {
289
+ // return size1;
290
+ // }
291
+ // #define BOOST_UBLAS_SAME(size1, size2) same_impl ((size1), (size2))
292
+ #define BOOST_UBLAS_SAME(size1, size2) (size1)
293
+ #endif
294
+
295
+ }}}
296
+
297
+ #endif
@@ -0,0 +1,317 @@
1
+ //
2
+ // Copyright (c) 2009
3
+ // Gunter Winkler
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_SPARSE_VIEW_
12
+ #define _BOOST_UBLAS_SPARSE_VIEW_
13
+
14
+ #include <boost/numeric/ublas/matrix_expression.hpp>
15
+ #include <boost/numeric/ublas/detail/matrix_assign.hpp>
16
+ #if BOOST_UBLAS_TYPE_CHECK
17
+ #include <boost/numeric/ublas/matrix.hpp>
18
+ #endif
19
+
20
+ #include <boost/next_prior.hpp>
21
+ #include <boost/type_traits/remove_cv.hpp>
22
+ #include <boost/numeric/ublas/storage.hpp>
23
+
24
+ namespace boost { namespace numeric { namespace ublas {
25
+
26
+ // view a chunk of memory as ublas array
27
+
28
+ template < class T >
29
+ class c_array_view
30
+ : public storage_array< c_array_view<T> > {
31
+ private:
32
+ typedef c_array_view<T> self_type;
33
+ typedef T * pointer;
34
+
35
+ public:
36
+ // TODO: think about a const pointer
37
+ typedef const pointer array_type;
38
+
39
+ typedef std::size_t size_type;
40
+ typedef std::ptrdiff_t difference_type;
41
+
42
+ typedef T value_type;
43
+ typedef const T &const_reference;
44
+ typedef const T *const_pointer;
45
+
46
+ typedef const_pointer const_iterator;
47
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
48
+
49
+ //
50
+ // typedefs required by vector concept
51
+ //
52
+
53
+ typedef dense_tag storage_category;
54
+ typedef const vector_reference<const self_type> const_closure_type;
55
+
56
+ c_array_view(size_type size, array_type data) :
57
+ size_(size), data_(data)
58
+ {}
59
+
60
+ ~c_array_view()
61
+ {}
62
+
63
+ //
64
+ // immutable methods of container concept
65
+ //
66
+
67
+ BOOST_UBLAS_INLINE
68
+ size_type size () const {
69
+ return size_;
70
+ }
71
+
72
+ BOOST_UBLAS_INLINE
73
+ const_reference operator [] (size_type i) const {
74
+ BOOST_UBLAS_CHECK (i < size_, bad_index ());
75
+ return data_ [i];
76
+ }
77
+
78
+ BOOST_UBLAS_INLINE
79
+ const_iterator begin () const {
80
+ return data_;
81
+ }
82
+ BOOST_UBLAS_INLINE
83
+ const_iterator end () const {
84
+ return data_ + size_;
85
+ }
86
+
87
+ BOOST_UBLAS_INLINE
88
+ const_reverse_iterator rbegin () const {
89
+ return const_reverse_iterator (end ());
90
+ }
91
+ BOOST_UBLAS_INLINE
92
+ const_reverse_iterator rend () const {
93
+ return const_reverse_iterator (begin ());
94
+ }
95
+
96
+ private:
97
+ size_type size_;
98
+ array_type data_;
99
+ };
100
+
101
+
102
+ /** \brief Present existing arrays as compressed array based
103
+ * sparse matrix.
104
+ * This class provides CRS / CCS storage layout.
105
+ *
106
+ * see also http://www.netlib.org/utk/papers/templates/node90.html
107
+ *
108
+ * \param L layout type, either row_major or column_major
109
+ * \param IB index base, use 0 for C indexing and 1 for
110
+ * FORTRAN indexing of the internal index arrays. This
111
+ * does not affect the operator()(int,int) where the first
112
+ * row/column has always index 0.
113
+ * \param IA index array type, e.g., int[]
114
+ * \param TA value array type, e.g., double[]
115
+ */
116
+ template<class L, std::size_t IB, class IA, class JA, class TA>
117
+ class compressed_matrix_view:
118
+ public matrix_expression<compressed_matrix_view<L, IB, IA, JA, TA> > {
119
+
120
+ public:
121
+ typedef typename vector_view_traits<TA>::value_type value_type;
122
+
123
+ private:
124
+ typedef value_type &true_reference;
125
+ typedef value_type *pointer;
126
+ typedef const value_type *const_pointer;
127
+ typedef L layout_type;
128
+ typedef compressed_matrix_view<L, IB, IA, JA, TA> self_type;
129
+
130
+ public:
131
+ #ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS
132
+ using matrix_expression<self_type>::operator ();
133
+ #endif
134
+ // ISSUE require type consistency check
135
+ // is_convertable (IA::size_type, TA::size_type)
136
+ typedef typename boost::remove_cv<typename vector_view_traits<JA>::value_type>::type index_type;
137
+ // for compatibility, should be removed some day ...
138
+ typedef index_type size_type;
139
+ // size_type for the data arrays.
140
+ typedef typename vector_view_traits<JA>::size_type array_size_type;
141
+ typedef typename vector_view_traits<JA>::difference_type difference_type;
142
+ typedef const value_type & const_reference;
143
+
144
+ // do NOT define reference type, because class is read only
145
+ // typedef value_type & reference;
146
+
147
+ typedef IA rowptr_array_type;
148
+ typedef JA index_array_type;
149
+ typedef TA value_array_type;
150
+ typedef const matrix_reference<const self_type> const_closure_type;
151
+ typedef matrix_reference<self_type> closure_type;
152
+
153
+ // FIXME: define a corresponding temporary type
154
+ // typedef compressed_vector<T, IB, IA, TA> vector_temporary_type;
155
+
156
+ // FIXME: define a corresponding temporary type
157
+ // typedef self_type matrix_temporary_type;
158
+
159
+ typedef sparse_tag storage_category;
160
+ typedef typename L::orientation_category orientation_category;
161
+
162
+ //
163
+ // private types for internal use
164
+ //
165
+
166
+ private:
167
+ typedef typename vector_view_traits<index_array_type>::const_iterator const_subiterator_type;
168
+
169
+ //
170
+ // Construction and destruction
171
+ //
172
+ private:
173
+ /// private default constructor because data must be filled by caller
174
+ BOOST_UBLAS_INLINE
175
+ compressed_matrix_view () { }
176
+
177
+ public:
178
+ BOOST_UBLAS_INLINE
179
+ compressed_matrix_view (index_type n_rows, index_type n_cols, array_size_type nnz
180
+ , const rowptr_array_type & iptr
181
+ , const index_array_type & jptr
182
+ , const value_array_type & values):
183
+ matrix_expression<self_type> (),
184
+ size1_ (n_rows), size2_ (n_cols),
185
+ nnz_ (nnz),
186
+ index1_data_ (iptr),
187
+ index2_data_ (jptr),
188
+ value_data_ (values) {
189
+ storage_invariants ();
190
+ }
191
+
192
+ BOOST_UBLAS_INLINE
193
+ compressed_matrix_view(const compressed_matrix_view& o) :
194
+ size1_(o.size1_), size2_(o.size2_),
195
+ nnz_(o.nnz_),
196
+ index1_data_(o.index1_data_),
197
+ index2_data_(o.index2_data_),
198
+ value_data_(o.value_data_)
199
+ {}
200
+
201
+ //
202
+ // implement immutable iterator types
203
+ //
204
+
205
+ class const_iterator1 {};
206
+ class const_iterator2 {};
207
+
208
+ typedef reverse_iterator_base1<const_iterator1> const_reverse_iterator1;
209
+ typedef reverse_iterator_base2<const_iterator2> const_reverse_iterator2;
210
+
211
+ //
212
+ // implement all read only methods for the matrix expression concept
213
+ //
214
+
215
+ //! return the number of rows
216
+ index_type size1() const {
217
+ return size1_;
218
+ }
219
+
220
+ //! return the number of columns
221
+ index_type size2() const {
222
+ return size2_;
223
+ }
224
+
225
+ //! return value at position (i,j)
226
+ value_type operator()(index_type i, index_type j) const {
227
+ const_pointer p = find_element(i,j);
228
+ if (!p) {
229
+ return zero_;
230
+ } else {
231
+ return *p;
232
+ }
233
+ }
234
+
235
+
236
+ private:
237
+ //
238
+ // private helper functions
239
+ //
240
+
241
+ const_pointer find_element (index_type i, index_type j) const {
242
+ index_type element1 (layout_type::index_M (i, j));
243
+ index_type element2 (layout_type::index_m (i, j));
244
+
245
+ const array_size_type itv = zero_based( index1_data_[element1] );
246
+ const array_size_type itv_next = zero_based( index1_data_[element1+1] );
247
+
248
+ const_subiterator_type it_start = boost::next(vector_view_traits<index_array_type>::begin(index2_data_),itv);
249
+ const_subiterator_type it_end = boost::next(vector_view_traits<index_array_type>::begin(index2_data_),itv_next);
250
+ const_subiterator_type it = find_index_in_row(it_start, it_end, element2) ;
251
+
252
+ if (it == it_end || *it != k_based (element2))
253
+ return 0;
254
+ return &value_data_ [it - vector_view_traits<index_array_type>::begin(index2_data_)];
255
+ }
256
+
257
+ const_subiterator_type find_index_in_row(const_subiterator_type it_start
258
+ , const_subiterator_type it_end
259
+ , index_type index) const {
260
+ return std::lower_bound( it_start
261
+ , it_end
262
+ , k_based (index) );
263
+ }
264
+
265
+
266
+ private:
267
+ void storage_invariants () const {
268
+ BOOST_UBLAS_CHECK (index1_data_ [layout_type::size_M (size1_, size2_)] == k_based (nnz_), external_logic ());
269
+ }
270
+
271
+ index_type size1_;
272
+ index_type size2_;
273
+
274
+ array_size_type nnz_;
275
+
276
+ const rowptr_array_type & index1_data_;
277
+ const index_array_type & index2_data_;
278
+ const value_array_type & value_data_;
279
+
280
+ static const value_type zero_;
281
+
282
+ BOOST_UBLAS_INLINE
283
+ static index_type zero_based (index_type k_based_index) {
284
+ return k_based_index - IB;
285
+ }
286
+ BOOST_UBLAS_INLINE
287
+ static index_type k_based (index_type zero_based_index) {
288
+ return zero_based_index + IB;
289
+ }
290
+
291
+ friend class iterator1;
292
+ friend class iterator2;
293
+ friend class const_iterator1;
294
+ friend class const_iterator2;
295
+ };
296
+
297
+ template<class L, std::size_t IB, class IA, class JA, class TA >
298
+ const typename compressed_matrix_view<L,IB,IA,JA,TA>::value_type
299
+ compressed_matrix_view<L,IB,IA,JA,TA>::zero_ = value_type/*zero*/();
300
+
301
+
302
+ template<class L, std::size_t IB, class IA, class JA, class TA >
303
+ compressed_matrix_view<L,IB,IA,JA,TA>
304
+ make_compressed_matrix_view(typename vector_view_traits<JA>::value_type n_rows
305
+ , typename vector_view_traits<JA>::value_type n_cols
306
+ , typename vector_view_traits<JA>::size_type nnz
307
+ , const IA & ia
308
+ , const JA & ja
309
+ , const TA & ta) {
310
+
311
+ return compressed_matrix_view<L,IB,IA,JA,TA>(n_rows, n_cols, nnz, ia, ja, ta);
312
+
313
+ }
314
+
315
+ }}}
316
+
317
+ #endif