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,304 @@
1
+ //
2
+ // Copyright (c) 2000-2002
3
+ // Joerg Walter, Mathias Koch
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // The authors gratefully acknowledge the support of
10
+ // GeNeSys mbH & Co. KG in producing this work.
11
+ //
12
+
13
+ #ifndef _BOOST_UBLAS_CONFIG_
14
+ #define _BOOST_UBLAS_CONFIG_
15
+
16
+ #include <cassert>
17
+ #include <cstddef>
18
+ #include <algorithm>
19
+ #include <limits>
20
+
21
+ #include <boost/config.hpp>
22
+ #include <boost/static_assert.hpp>
23
+ #include <boost/noncopyable.hpp>
24
+ #include <boost/mpl/if.hpp>
25
+ #include <boost/mpl/and.hpp>
26
+ #include <boost/type_traits/is_same.hpp>
27
+ #include <boost/type_traits/is_convertible.hpp>
28
+ #include <boost/type_traits/is_const.hpp>
29
+ #include <boost/type_traits/remove_reference.hpp>
30
+
31
+ // C++11
32
+ #if defined(__cplusplus) && __cplusplus >= 201103L
33
+
34
+ #define BOOST_UBLAS_CPP_GE_2011
35
+
36
+ #elif BOOST_MSVC >= 1800
37
+
38
+ #define BOOST_UBLAS_CPP_GE_2011
39
+
40
+ #else
41
+
42
+ #undef BOOST_UBLAS_CPP_GE_2011 // Make sure no one defined it
43
+
44
+ #endif
45
+
46
+ // Microsoft Visual C++
47
+ #if defined (BOOST_MSVC) && ! defined (BOOST_STRICT_CONFIG)
48
+
49
+ // Version 7.1
50
+ #if BOOST_MSVC == 1310
51
+ // One of these workarounds is needed for MSVC 7.1 AFAIK
52
+ // (thanks to John Maddock and Martin Lauer).
53
+ #if !(defined(BOOST_UBLAS_NO_NESTED_CLASS_RELATION) || defined(BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION))
54
+ #define BOOST_UBLAS_NO_NESTED_CLASS_RELATION
55
+ #endif
56
+
57
+ #endif
58
+
59
+ #endif
60
+
61
+
62
+ // GNU Compiler Collection
63
+ #if defined (__GNUC__) && ! defined (BOOST_STRICT_CONFIG)
64
+
65
+ #if __GNUC__ >= 4 || (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)
66
+ // Specified by ABI definition see GCC bug id 9982
67
+ #define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
68
+ #endif
69
+
70
+ #if __GNUC__ < 3
71
+ #define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
72
+ #endif
73
+
74
+ #endif
75
+
76
+
77
+ // Intel Compiler
78
+ #if defined (BOOST_INTEL) && ! defined (BOOST_STRICT_CONFIG)
79
+
80
+ #if defined (BOOST_INTEL_LINUX) && (BOOST_INTEL_LINUX >= 800)
81
+ // By inspection of compiler results
82
+ #define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
83
+ #endif
84
+
85
+ #if (BOOST_INTEL < 700)
86
+ #define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
87
+ #endif
88
+
89
+ // Define swap for index_pair and triple.
90
+ #if (BOOST_INTEL <= 800)
91
+ namespace boost { namespace numeric { namespace ublas {
92
+ template<class C, class IC>
93
+ class indexed_iterator;
94
+
95
+ template<class V>
96
+ class index_pair;
97
+ template<class M>
98
+ class index_triple;
99
+ }}}
100
+
101
+ namespace std {
102
+ template<class V>
103
+ inline
104
+ void swap (boost::numeric::ublas::index_pair<V> i1, boost::numeric::ublas::index_pair<V> i2) {
105
+ i1.swap (i2);
106
+ }
107
+ template<class M>
108
+ inline
109
+ void swap (boost::numeric::ublas::index_triple<M> i1, boost::numeric::ublas::index_triple<M> i2) {
110
+ i1.swap (i2);
111
+ }
112
+ // iter_swap also needed for ICC on Itanium?
113
+ template<class C, class IC>
114
+ inline
115
+ void iter_swap (boost::numeric::ublas::indexed_iterator<C, IC> it1,
116
+ boost::numeric::ublas::indexed_iterator<C, IC> it2) {
117
+ swap (*it1, *it2);
118
+ }
119
+ }
120
+ #endif
121
+
122
+ #endif
123
+
124
+
125
+ // Comeau compiler - thanks to Kresimir Fresl
126
+ #if defined (__COMO__) && ! defined (BOOST_STRICT_CONFIG)
127
+
128
+ // Missing std::abs overloads for float types in <cmath> are in <cstdlib>
129
+ #if defined(__LIBCOMO__) && (__LIBCOMO_VERSION__ <= 31)
130
+ #include <cstdlib>
131
+ #endif
132
+
133
+ #endif
134
+
135
+ // PGI compiler
136
+ #ifdef __PGIC__
137
+ #define BOOST_UBLAS_UNSUPPORTED_COMPILER 0
138
+ #endif
139
+
140
+ // HP aCC C++ compiler
141
+ #if defined (__HP_aCC) && ! defined (BOOST_STRICT_CONFIG)
142
+ # if (__HP_aCC >= 60000 )
143
+ # define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
144
+ #endif
145
+ #endif
146
+
147
+
148
+ // SGI MIPSpro C++ compiler
149
+ #if defined (__sgi) && ! defined (BOOST_STRICT_CONFIG)
150
+
151
+ // Missing std::abs overloads for float types in <cmath> are in <cstdlib>
152
+ // This test should be library version specific.
153
+ #include <cstdlib>
154
+
155
+ #if __COMPILER_VERSION >=650
156
+ // By inspection of compiler results - thanks to Peter Schmitteckert
157
+ #define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
158
+ #endif
159
+
160
+ #endif
161
+
162
+
163
+ // Metrowerks Codewarrior
164
+ #if defined (__MWERKS__) && ! defined (BOOST_STRICT_CONFIG)
165
+
166
+ // 8.x
167
+ #if __MWERKS__ <= 0x3003
168
+ #define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
169
+ #endif
170
+
171
+ #endif
172
+
173
+
174
+ // Detect other compilers with serious defects - override by defineing BOOST_UBLAS_UNSUPPORTED_COMPILER=0
175
+ #ifndef BOOST_UBLAS_UNSUPPORTED_COMPILER
176
+ #if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STDC_NAMESPACE)
177
+ #define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
178
+ #endif
179
+ #endif
180
+
181
+ // Cannot continue with an unsupported compiler
182
+ #if defined(BOOST_UBLAS_UNSUPPORTED_COMPILER) && (BOOST_UBLAS_UNSUPPORTED_COMPILER != 0)
183
+ #error Your compiler and/or configuration is unsupported by this verions of uBLAS. Define BOOST_UBLAS_UNSUPPORTED_COMPILER=0 to override this message. Boost 1.32.0 includes uBLAS with support for many older compilers.
184
+ #endif
185
+
186
+
187
+
188
+ // Enable performance options in RELEASE mode
189
+ #if defined (NDEBUG) || defined (BOOST_UBLAS_NDEBUG)
190
+
191
+ #ifndef BOOST_UBLAS_INLINE
192
+ #define BOOST_UBLAS_INLINE inline
193
+ #endif
194
+
195
+ // Do not check sizes!
196
+ #define BOOST_UBLAS_USE_FAST_SAME
197
+
198
+ // NO runtime error checks with BOOST_UBLAS_CHECK macro
199
+ #ifndef BOOST_UBLAS_CHECK_ENABLE
200
+ #define BOOST_UBLAS_CHECK_ENABLE 0
201
+ #endif
202
+
203
+ // NO type compatibility numeric checks
204
+ #ifndef BOOST_UBLAS_TYPE_CHECK
205
+ #define BOOST_UBLAS_TYPE_CHECK 0
206
+ #endif
207
+
208
+
209
+ // Disable performance options in DEBUG mode
210
+ #else
211
+
212
+ #ifndef BOOST_UBLAS_INLINE
213
+ #define BOOST_UBLAS_INLINE
214
+ #endif
215
+
216
+ // Enable runtime error checks with BOOST_UBLAS_CHECK macro. Check bounds etc
217
+ #ifndef BOOST_UBLAS_CHECK_ENABLE
218
+ #define BOOST_UBLAS_CHECK_ENABLE 1
219
+ #endif
220
+
221
+ // Type compatibiltity numeric checks
222
+ #ifndef BOOST_UBLAS_TYPE_CHECK
223
+ #define BOOST_UBLAS_TYPE_CHECK 1
224
+ #endif
225
+
226
+ #endif
227
+
228
+
229
+ /*
230
+ * Type compatibility checks
231
+ * Control type compatibility numeric runtime checks for non dense matrices.
232
+ * Require additional storage and complexity
233
+ */
234
+ #if BOOST_UBLAS_TYPE_CHECK
235
+ template <class Dummy>
236
+ struct disable_type_check
237
+ {
238
+ static bool value;
239
+ };
240
+ template <class Dummy>
241
+ bool disable_type_check<Dummy>::value = false;
242
+ #endif
243
+ #ifndef BOOST_UBLAS_TYPE_CHECK_EPSILON
244
+ #define BOOST_UBLAS_TYPE_CHECK_EPSILON (type_traits<real_type>::type_sqrt (std::numeric_limits<real_type>::epsilon ()))
245
+ #endif
246
+ #ifndef BOOST_UBLAS_TYPE_CHECK_MIN
247
+ #define BOOST_UBLAS_TYPE_CHECK_MIN (type_traits<real_type>::type_sqrt ( (std::numeric_limits<real_type>::min) ()))
248
+ #endif
249
+
250
+
251
+ /*
252
+ * General Configuration
253
+ */
254
+
255
+ // Proxy shortcuts overload the alreadly heavily over used operator ()
256
+ //#define BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS
257
+
258
+ // In order to simplify debugging is is possible to simplify expression template
259
+ // so they are restricted to a single operation
260
+ // #define BOOST_UBLAS_SIMPLE_ET_DEBUG
261
+
262
+ // Use invariant hoisting.
263
+ // #define BOOST_UBLAS_USE_INVARIANT_HOISTING
264
+
265
+ // Use Duff's device in element access loops
266
+ // #define BOOST_UBLAS_USE_DUFF_DEVICE
267
+
268
+ // Choose evaluation method for dense vectors and matrices
269
+ #if !(defined(BOOST_UBLAS_USE_INDEXING) || defined(BOOST_UBLAS_USE_ITERATING))
270
+ #define BOOST_UBLAS_USE_INDEXING
271
+ #endif
272
+ // #define BOOST_UBLAS_ITERATOR_THRESHOLD 0
273
+
274
+ // Use indexed iterators - unsupported implementation experiment
275
+ // #define BOOST_UBLAS_USE_INDEXED_ITERATOR
276
+
277
+ // Alignment of bounded_array type
278
+ #ifndef BOOST_UBLAS_BOUNDED_ARRAY_ALIGN
279
+ #define BOOST_UBLAS_BOUNDED_ARRAY_ALIGN
280
+ #endif
281
+
282
+ // Enable different sparse element proxies
283
+ #ifndef BOOST_UBLAS_NO_ELEMENT_PROXIES
284
+ // Sparse proxies prevent reference invalidation problems in expressions such as:
285
+ // a [1] = a [0] = 1 Thanks to Marc Duflot for spotting this.
286
+ // #define BOOST_UBLAS_STRICT_MAP_ARRAY
287
+ #define BOOST_UBLAS_STRICT_VECTOR_SPARSE
288
+ #define BOOST_UBLAS_STRICT_MATRIX_SPARSE
289
+ // Hermitian matrices use element proxies to allow assignment to conjugate triangle
290
+ #define BOOST_UBLAS_STRICT_HERMITIAN
291
+ #endif
292
+
293
+ // Define to configure special settings for reference returning members
294
+ // #define BOOST_UBLAS_REFERENCE_CONST_MEMBER
295
+ // #define BOOST_UBLAS_PROXY_CONST_MEMBER
296
+
297
+
298
+ // Include type declerations and functions
299
+ #include <boost/numeric/ublas/fwd.hpp>
300
+ #include <boost/numeric/ublas/detail/definitions.hpp>
301
+
302
+
303
+ #endif
304
+
@@ -0,0 +1,212 @@
1
+ //
2
+ // Copyright (c) 2000-2002
3
+ // Joerg Walter, Mathias Koch
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // The authors gratefully acknowledge the support of
10
+ // GeNeSys mbH & Co. KG in producing this work.
11
+ //
12
+
13
+ #ifndef _BOOST_UBLAS_DEFINITIONS_
14
+ #define _BOOST_UBLAS_DEFINITIONS_
15
+
16
+
17
+ namespace boost { namespace numeric { namespace ublas {
18
+
19
+ namespace detail {
20
+ /* Borrowed from boost/concept_checks.hpp
21
+ "inline" is used for ignore_unused_variable_warning()
22
+ to make sure there is no overhead with g++.
23
+ */
24
+ template <class T> inline
25
+ void ignore_unused_variable_warning(const T&) {}
26
+ } // namespace detail
27
+
28
+ // Borrowed from Dave Abraham's noncopyable.
29
+ // I believe this should be part of utility.hpp one day...
30
+ namespace nonassignable_ // protection from unintended ADL
31
+ {
32
+ class nonassignable {
33
+ protected:
34
+ nonassignable () {}
35
+ ~nonassignable () {}
36
+ private: // emphasize the following members are private
37
+ const nonassignable& operator= (const nonassignable &);
38
+ }; // nonassignable
39
+ }
40
+ typedef nonassignable_::nonassignable nonassignable;
41
+
42
+
43
+ // Assignment proxy.
44
+ // Provides temporary free assigment when LHS has no alias on RHS
45
+ template<class C>
46
+ class noalias_proxy:
47
+ private nonassignable {
48
+ public:
49
+ typedef typename C::closure_type closure_type;
50
+
51
+ BOOST_UBLAS_INLINE
52
+ noalias_proxy (C& lval):
53
+ nonassignable (), lval_ (lval) {}
54
+ BOOST_UBLAS_INLINE
55
+ noalias_proxy (const noalias_proxy& p):
56
+ nonassignable (), lval_ (p.lval_) {}
57
+
58
+ template <class E>
59
+ BOOST_UBLAS_INLINE
60
+ closure_type &operator= (const E& e) {
61
+ lval_.assign (e);
62
+ return lval_;
63
+ }
64
+
65
+ template <class E>
66
+ BOOST_UBLAS_INLINE
67
+ closure_type &operator+= (const E& e) {
68
+ lval_.plus_assign (e);
69
+ return lval_;
70
+ }
71
+
72
+ template <class E>
73
+ BOOST_UBLAS_INLINE
74
+ closure_type &operator-= (const E& e) {
75
+ lval_.minus_assign (e);
76
+ return lval_;
77
+ }
78
+
79
+ private:
80
+ closure_type lval_;
81
+ };
82
+
83
+ // Improve syntax of efficient assignment where no aliases of LHS appear on the RHS
84
+ // noalias(lhs) = rhs_expression
85
+ template <class C>
86
+ BOOST_UBLAS_INLINE
87
+ noalias_proxy<C> noalias (C& lvalue) {
88
+ return noalias_proxy<C> (lvalue);
89
+ }
90
+ template <class C>
91
+ BOOST_UBLAS_INLINE
92
+ noalias_proxy<const C> noalias (const C& lvalue) {
93
+ return noalias_proxy<const C> (lvalue);
94
+ }
95
+
96
+ // Possible future compatible syntax where lvalue possible has an unsafe alias on the RHS
97
+ // safe(lhs) = rhs_expression
98
+ template <class C>
99
+ BOOST_UBLAS_INLINE
100
+ C& safe (C& lvalue) {
101
+ return lvalue;
102
+ }
103
+ template <class C>
104
+ BOOST_UBLAS_INLINE
105
+ const C& safe (const C& lvalue) {
106
+ return lvalue;
107
+ }
108
+
109
+
110
+ // Dimension accessors
111
+ namespace dimension {
112
+
113
+ // Generic accessors
114
+ template<unsigned dimension>
115
+ struct dimension_properties {};
116
+
117
+ template<>
118
+ struct dimension_properties<1> {
119
+ template <class E>
120
+ BOOST_UBLAS_INLINE static
121
+ typename E::size_type size (const vector_expression<E> &e) {
122
+ return e ().size ();
123
+ }
124
+ template <class E>
125
+ BOOST_UBLAS_INLINE static
126
+ typename E::size_type size (const matrix_expression<E> &e) {
127
+ return e ().size1 ();
128
+ }
129
+ // Note: Index functions cannot deduce dependant template parameter V or M from i
130
+ template <class V>
131
+ BOOST_UBLAS_INLINE static
132
+ typename V::size_type index (const typename V::iterator &i) {
133
+ return i.index ();
134
+ }
135
+ template <class M>
136
+ BOOST_UBLAS_INLINE static
137
+ typename M::size_type index (const typename M::iterator1 &i) {
138
+ return i.index1 ();
139
+ }
140
+ template <class M>
141
+ BOOST_UBLAS_INLINE static
142
+ typename M::size_type index (const typename M::iterator2 &i) {
143
+ return i.index1 ();
144
+ }
145
+ };
146
+ template<>
147
+ struct dimension_properties<2> {
148
+ template <class E>
149
+ BOOST_UBLAS_INLINE static
150
+ typename E::size_type size (const vector_expression<E> &) {
151
+ return 1;
152
+ }
153
+ template <class E>
154
+ BOOST_UBLAS_INLINE static
155
+ typename E::size_type size (const matrix_expression<E> &e) {
156
+ return e ().size2 ();
157
+ }
158
+ template <class V>
159
+ BOOST_UBLAS_INLINE static
160
+ typename V::size_type index (const typename V::iterator &) {
161
+ return 1;
162
+ }
163
+ template <class M>
164
+ BOOST_UBLAS_INLINE static
165
+ typename M::size_type index (const typename M::iterator1 &i) {
166
+ return i.index2 ();
167
+ }
168
+ template <class M>
169
+ BOOST_UBLAS_INLINE static
170
+ typename M::size_type index (const typename M::iterator2 &i) {
171
+ return i.index2 ();
172
+ }
173
+ };
174
+
175
+ template<unsigned dimension, class E>
176
+ BOOST_UBLAS_INLINE
177
+ typename E::size_type size (const E& e) {
178
+ return dimension_properties<dimension>::size (e);
179
+ }
180
+
181
+ template<unsigned dimension, class I>
182
+ BOOST_UBLAS_INLINE
183
+ typename I::container_type::size_type
184
+ index (const I& i) {
185
+ typedef typename I::container_type container_type;
186
+ return dimension_properties<dimension>::template index<container_type> (i);
187
+ }
188
+
189
+
190
+ // Named accessors - just syntactic sugar
191
+ template<class V>
192
+ typename V::size_type num_elements (const V &v) {
193
+ return v.size ();
194
+ }
195
+ template<class M>
196
+ typename M::size_type num_rows (const M &m) {
197
+ return m.size1 ();
198
+ }
199
+ template<class M>
200
+ typename M::size_type num_columns (const M &m) {
201
+ return m.size2 ();
202
+ }
203
+ template<class MV>
204
+ typename MV::size_type num_non_zeros (const MV &mv) {
205
+ return mv.non_zeros ();
206
+ }
207
+ }
208
+
209
+
210
+ }}}
211
+
212
+ #endif
@@ -0,0 +1,33 @@
1
+ //
2
+ // Copyright (c) 2000-2004
3
+ // Joerg Walter, Mathias Koch
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // The authors gratefully acknowledge the support of
10
+ // GeNeSys mbH & Co. KG in producing this work.
11
+ //
12
+
13
+ // this file should not contain any code, but the documentation
14
+ // global to all files
15
+
16
+ /** \namespace boost::numeric::ublas
17
+ \brief contains all important classes and functions of uBLAS
18
+
19
+ all ublas definitions ...
20
+ \todo expand this section
21
+ */
22
+
23
+ /** \defgroup blas1 Level 1 BLAS
24
+ \brief level 1 basic linear algebra subroutines
25
+ */
26
+
27
+ /** \defgroup blas2 Level 2 BLAS
28
+ \brief level 2 basic linear algebra subroutines
29
+ */
30
+
31
+ /** \defgroup blas3 Level 3 BLAS
32
+ \brief level 3 basic linear algebra subroutines
33
+ */
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright (c) 2000-2002
3
+ // Joerg Walter, Mathias Koch
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // The authors gratefully acknowledge the support of
10
+ // GeNeSys mbH & Co. KG in producing this work.
11
+ //
12
+
13
+ #ifndef _BOOST_UBLAS_DUFF_
14
+ #define _BOOST_UBLAS_DUFF_
15
+
16
+ #define DD_SWITCH(n, d, r, expr) \
17
+ { \
18
+ unsigned r = ((n) + (d) - 1) / (d); \
19
+ switch ((n) % (d)) { \
20
+ case 0: do { expr;
21
+ #define DD_CASE_I(i, expr) \
22
+ case (i): expr;
23
+ #define DD_WHILE(r) \
24
+ } while (-- (r) > 0); \
25
+ } \
26
+ }
27
+
28
+ #define DD_1T(n, d, r, expr) \
29
+ DD_WHILE(r)
30
+ #define DD_2T(n, d, r, expr) \
31
+ DD_CASE_I(1, expr) \
32
+ DD_1T(n, d, r, expr)
33
+ #define DD_3T(n, d, r, expr) \
34
+ DD_CASE_I(2, expr) \
35
+ DD_2T(n, d, r, expr)
36
+ #define DD_4T(n, d, r, expr) \
37
+ DD_CASE_I(3, expr) \
38
+ DD_3T(n, d, r, expr)
39
+ #define DD_5T(n, d, r, expr) \
40
+ DD_CASE_I(4, expr) \
41
+ DD_4T(n, d, r, expr)
42
+ #define DD_6T(n, d, r, expr) \
43
+ DD_CASE_I(5, expr) \
44
+ DD_5T(n, d, r, expr)
45
+ #define DD_7T(n, d, r, expr) \
46
+ DD_CASE_I(6, expr) \
47
+ DD_6T(n, d, r, expr)
48
+ #define DD_8T(n, d, r, expr) \
49
+ DD_CASE_I(7, expr) \
50
+ DD_7T(n, d, r, expr)
51
+
52
+ #define DD(n, d, r, expr) \
53
+ DD_SWITCH(n, d, r, expr) \
54
+ DD_##d##T(n, d, r, expr)
55
+
56
+ #endif