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,110 @@
1
+ //
2
+ // Copyright (c) 2018-2019, Cem Bassoy, cem.bassoy@gmail.com
3
+ //
4
+ // Distributed under the Boost Software License, Version 1.0. (See
5
+ // accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+ //
8
+ // The authors gratefully acknowledge the support of
9
+ // Fraunhofer IOSB, Ettlingen, Germany
10
+ //
11
+
12
+ #ifndef BOOST_UBLAS_TENSOR_MULTI_INDEX_HPP
13
+ #define BOOST_UBLAS_TENSOR_MULTI_INDEX_HPP
14
+
15
+
16
+ #include <cstddef>
17
+ #include <array>
18
+ #include <vector>
19
+
20
+ #include "multi_index_utility.hpp"
21
+
22
+ namespace boost {
23
+ namespace numeric {
24
+ namespace ublas {
25
+ namespace index {
26
+
27
+ template<std::size_t I>
28
+ struct index_type;
29
+
30
+ } // namespace indices
31
+ }
32
+ }
33
+ }
34
+
35
+
36
+ namespace boost {
37
+ namespace numeric {
38
+ namespace ublas {
39
+
40
+ /** @brief Proxy class for the einstein summation notation
41
+ *
42
+ * Denotes an array of index_type types ::_a for 0<=K<=16 is used in tensor::operator()
43
+ */
44
+ template<std::size_t N>
45
+ class multi_index
46
+ {
47
+ public:
48
+ multi_index() = delete;
49
+
50
+ template<std::size_t I, class ... indexes>
51
+ constexpr multi_index(index::index_type<I> const& i, indexes ... is )
52
+ : _base{i(), is()... }
53
+ {
54
+ static_assert( sizeof...(is)+1 == N,
55
+ "Static assert in boost::numeric::ublas::multi_index: number of constructor arguments is not equal to the template parameter." );
56
+
57
+ static_assert( valid_multi_index<std::tuple<index::index_type<I>, indexes ...> >::value,
58
+ "Static assert in boost::numeric::ublas::multi_index: indexes occur twice in multi-index." );
59
+ }
60
+
61
+ multi_index(multi_index const& other)
62
+ : _base(other._base)
63
+ {
64
+ }
65
+
66
+ multi_index& operator=(multi_index const& other)
67
+ {
68
+ this->_base = other._base;
69
+ return *this;
70
+ }
71
+
72
+ ~multi_index() = default;
73
+
74
+ auto const& base() const { return _base; }
75
+ constexpr auto size() const { return _base.size(); }
76
+ constexpr auto at(std::size_t i) const { return _base.at(i); }
77
+ constexpr auto operator[](std::size_t i) const { return _base.at(i); }
78
+
79
+ private:
80
+ std::array<std::size_t, N> _base;
81
+ };
82
+
83
+ template<std::size_t K, std::size_t N>
84
+ constexpr auto get(multi_index<N> const& m) { return std::get<K>(m.base()); }
85
+
86
+ template<std::size_t M, std::size_t N>
87
+ auto array_to_vector(multi_index<M> const& lhs, multi_index<N> const& rhs)
88
+ {
89
+ using vtype = std::vector<std::size_t>;
90
+
91
+ auto pair_of_vector = std::make_pair( vtype {}, vtype{} );
92
+
93
+ for(auto i = 0u; i < N; ++i)
94
+ for(auto j = 0u; j < M; ++j)
95
+ if ( lhs.at(i) == rhs.at(j) && lhs.at(i) != boost::numeric::ublas::index::_())
96
+ pair_of_vector.first .push_back( i+1 ),
97
+ pair_of_vector.second.push_back( j+1 );
98
+
99
+ return pair_of_vector;
100
+ }
101
+
102
+
103
+
104
+
105
+
106
+ } // namespace ublas
107
+ } // namespace numeric
108
+ } // namespace boost
109
+
110
+ #endif // MULTI_INDEX_HPP
@@ -0,0 +1,364 @@
1
+ //
2
+ // Copyright (c) 2018-2019, Cem Bassoy, cem.bassoy@gmail.com
3
+ //
4
+ // Distributed under the Boost Software License, Version 1.0. (See
5
+ // accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+ //
8
+ // The authors gratefully acknowledge the support of
9
+ // Fraunhofer IOSB, Ettlingen, Germany
10
+ //
11
+
12
+ #ifndef BOOST_UBLAS_TENSOR_MULTI_INDEX_UTILITY_HPP
13
+ #define BOOST_UBLAS_TENSOR_MULTI_INDEX_UTILITY_HPP
14
+
15
+
16
+ #include <tuple>
17
+ #include <type_traits>
18
+
19
+
20
+ namespace boost {
21
+ namespace numeric {
22
+ namespace ublas {
23
+ namespace detail {
24
+
25
+
26
+ template<class ... index_types>
27
+ struct has_index_impl;
28
+
29
+ template<class itype_left, class itype_right>
30
+ struct has_index_impl<itype_left, itype_right>
31
+ {
32
+ static constexpr bool value = itype_left::value == itype_right::value;
33
+ };
34
+
35
+ template<class itype_left>
36
+ struct has_index_impl <itype_left, std::tuple<> >
37
+ {
38
+ static constexpr bool value = false;
39
+ };
40
+
41
+ template<class itype_left, class itype_right>
42
+ struct has_index_impl <itype_left, std::tuple<itype_right> >
43
+ {
44
+ static constexpr bool value = has_index_impl<itype_left,itype_right>::value;
45
+ };
46
+
47
+ template<class itype_left, class itype_right, class ... index_types>
48
+ struct has_index_impl <itype_left, std::tuple<itype_right, index_types...> >
49
+ {
50
+ using next_type = has_index_impl<itype_left, std::tuple<index_types...>>;
51
+ static constexpr bool value = has_index_impl<itype_left,itype_right>::value || next_type::value;
52
+ };
53
+ } // namespace detail
54
+
55
+
56
+
57
+ /** @brief has_index is true if index occurs once or more in a multi-index
58
+ *
59
+ * @note a multi-index represents as tuple of single indexes of type boost::numeric::ublas::index::index_type
60
+ *
61
+ * @code auto has_index_value = has_index<index_type<1>, std::tuple<index_type<2>,index_type<1>> >::value; @endcode
62
+ *
63
+ * @tparam index_type type of index
64
+ * @tparam tuple_type type of std::tuple representing a multi-index
65
+ */
66
+ template<class index_type, class tuple_type>
67
+ struct has_index
68
+ {
69
+ static constexpr bool value = detail::has_index_impl<std::decay_t<index_type>,std::decay_t<tuple_type>>::value;
70
+ };
71
+
72
+ } // namespace ublas
73
+ } // namespace numeric
74
+ } // namespace boost
75
+
76
+ ////////////////////////////////////////////////
77
+ ////////////////////////////////////////////////
78
+
79
+ namespace boost {
80
+ namespace numeric {
81
+ namespace ublas {
82
+ namespace detail {
83
+
84
+
85
+ template<class ... index_types>
86
+ struct valid_multi_index_impl;
87
+
88
+ template<>
89
+ struct valid_multi_index_impl<std::tuple<>>
90
+ {
91
+ static constexpr bool value = true;
92
+ };
93
+
94
+ template<class itype>
95
+ struct valid_multi_index_impl<std::tuple<itype>>
96
+ {
97
+ static constexpr bool value = true;
98
+ };
99
+
100
+
101
+ template<class itype, class ... index_types>
102
+ struct valid_multi_index_impl<std::tuple<itype,index_types...>>
103
+ {
104
+ using ttype = std::tuple<index_types...>;
105
+ using has_index_type = has_index<itype, ttype>;
106
+
107
+ static constexpr bool is_index_zero = itype::value==0ul;
108
+ static constexpr bool has_index_value = has_index_type::value && !is_index_zero;
109
+ static constexpr bool value = !has_index_value && valid_multi_index_impl<ttype>::value;
110
+ };
111
+ } // namespace detail
112
+
113
+ /** @brief valid_multi_index is true if indexes occur only once in a multi-index
114
+ *
115
+ * @note a multi-index represents as tuple of single indexes of type boost::numeric::ublas::index::index_type
116
+ *
117
+ * @code auto valid = valid_multi_index< std::tuple<index_type<2>,index_type<1>> >::value;
118
+ * @endcode
119
+ *
120
+ * @tparam tuple_type type of std::tuple representing a multi-index
121
+ */
122
+ template<class tupe_type>
123
+ struct valid_multi_index
124
+ {
125
+ static constexpr bool value = detail::valid_multi_index_impl<std::decay_t<tupe_type>>::value;
126
+ };
127
+
128
+ } // namespace ublas
129
+ } // namespace numeric
130
+ } // namespace boost
131
+
132
+ ////////////////////////////////////////////////
133
+ ////////////////////////////////////////////////
134
+
135
+ namespace boost {
136
+ namespace numeric {
137
+ namespace ublas {
138
+ namespace detail {
139
+
140
+ template<class ... index_types >
141
+ struct number_equal_indexes_impl;
142
+
143
+ template<class ... itypes_right >
144
+ struct number_equal_indexes_impl < std::tuple<>, std::tuple<itypes_right...>>
145
+ {
146
+ static constexpr unsigned value = 0;
147
+ };
148
+
149
+ template<class itype, class ... itypes_left, class ... itypes_right>
150
+ struct number_equal_indexes_impl < std::tuple<itype,itypes_left...>, std::tuple<itypes_right...>>
151
+ {
152
+ using tuple_right = std::tuple<itypes_right...>;
153
+ using has_index_type = has_index<itype, tuple_right>;
154
+
155
+ static constexpr bool is_index_zero = itype::value==0ul;
156
+ static constexpr bool has_index_value = has_index_type::value && !is_index_zero;
157
+
158
+ using next_type = number_equal_indexes_impl< std::tuple<itypes_left...>, tuple_right >;
159
+ static constexpr unsigned v = has_index_value ? 1 : 0;
160
+ static constexpr unsigned value = v + next_type::value;
161
+ };
162
+ } // namespace detail
163
+
164
+
165
+ /** @brief number_equal_indexes contains the number of equal indexes of two multi-indexes
166
+ *
167
+ * @note a multi-index represents as tuple of single indexes of type boost::numeric::ublas::index::index_type
168
+ *
169
+ *
170
+ * @code auto num = number_equal_indexes<
171
+ * std::tuple<index_type<2>,index_type<1>>,
172
+ * std::tuple<index_type<1>,index_type<3>> >::value;
173
+ * @endcode
174
+ *
175
+ * @tparam tuple_type_left type of left std::tuple representing a multi-index
176
+ * @tparam tuple_type_right type of right std::tuple representing a multi-index
177
+ */
178
+ template<class tuple_left, class tuple_right>
179
+ struct number_equal_indexes
180
+ {
181
+ static constexpr unsigned value =
182
+ detail::number_equal_indexes_impl< std::decay_t<tuple_left>, std::decay_t<tuple_right>>::value;
183
+ };
184
+
185
+ } // namespace ublas
186
+ } // namespace numeric
187
+ } // namespace boost
188
+
189
+
190
+ ////////////////////////////////////////////////
191
+ ////////////////////////////////////////////////
192
+
193
+ namespace boost {
194
+ namespace numeric {
195
+ namespace ublas {
196
+ namespace detail {
197
+
198
+
199
+ template<std::size_t r, std::size_t m, class itype, class ttype>
200
+ struct index_position_impl
201
+ {
202
+ static constexpr auto is_same = std::is_same< std::decay_t<itype>, std::decay_t<std::tuple_element_t<r,ttype>> >::value;
203
+ static constexpr auto value = is_same ? r : index_position_impl<r+1,m,itype,ttype>::value;
204
+ };
205
+
206
+
207
+
208
+ template<std::size_t m, class itype, class ttype>
209
+ struct index_position_impl < m, m, itype, ttype>
210
+ {
211
+ static constexpr auto value = std::tuple_size<ttype>::value;
212
+ };
213
+
214
+ } // namespace detail
215
+
216
+
217
+
218
+ /** @brief index_position contains the zero-based index position of an index type within a multi-index
219
+ *
220
+ * @note a multi-index represents as tuple of single indexes of type boost::numeric::ublas::index::index_type
221
+ *
222
+ * @code auto num = index_position<
223
+ * index_type<1>,
224
+ * std::tuple<index_type<2>,index_type<1>> >::value;
225
+ * @endcode
226
+ *
227
+ * @returns value returns 0 and N-1 if index_type is found, N otherwise where N is tuple_size_v<tuple_type>.
228
+ *
229
+ * @tparam index_type type of index
230
+ * @tparam tuple_type type of std::tuple that is searched for index
231
+ */
232
+ template<class index_type, class tuple_type>
233
+ struct index_position
234
+ {
235
+ static constexpr auto value = detail::index_position_impl<0ul,std::tuple_size<tuple_type>::value,std::decay_t<index_type>,std::decay_t<tuple_type>>::value;
236
+ };
237
+
238
+ } // namespace ublas
239
+ } // namespace numeric
240
+ } // namespace boost
241
+
242
+ ////////////////////////////////////////////////
243
+ ////////////////////////////////////////////////
244
+
245
+
246
+ namespace boost {
247
+ namespace numeric {
248
+ namespace ublas {
249
+ namespace detail {
250
+
251
+ template<std::size_t r, std::size_t m>
252
+ struct index_position_pairs_impl
253
+ {
254
+ template<class array_type, class tuple_left, class tuple_right>
255
+ static constexpr void run(array_type& out, tuple_left const& lhs, tuple_right const& rhs, std::size_t p)
256
+ {
257
+ using index_type = std::tuple_element_t<r-1,tuple_left>;
258
+ using has_index_type = has_index<index_type, tuple_right>;
259
+ using get_index_type = index_position<index_type,tuple_right>;
260
+ using next_type = index_position_pairs_impl<r+1,m>;
261
+ if constexpr ( has_index_type::value && index_type::value != 0)
262
+ out[p++] = std::make_pair(r-1,get_index_type::value);
263
+ next_type::run( out, lhs, rhs, p );
264
+ }
265
+ };
266
+
267
+ template<std::size_t m>
268
+ struct index_position_pairs_impl<m,m>
269
+ {
270
+ template<class array_type, class tuple_left, class tuple_right>
271
+ static constexpr void run(array_type& out, tuple_left const& , tuple_right const& , std::size_t p)
272
+ {
273
+ using index_type = std::tuple_element_t<m-1,tuple_left>;
274
+ using has_index_type = has_index<index_type, tuple_right>;
275
+ using get_index_type = index_position<index_type, tuple_right>;
276
+ if constexpr ( has_index_type::value && index_type::value != 0 )
277
+ out[p] = std::make_pair(m-1,get_index_type::value);
278
+ }
279
+ };
280
+
281
+ template<std::size_t r>
282
+ struct index_position_pairs_impl<r,0>
283
+ {
284
+ template<class array_type, class tuple_left, class tuple_right>
285
+ static constexpr void run(array_type&, tuple_left const& , tuple_right const& , std::size_t)
286
+ {}
287
+ };
288
+
289
+
290
+ } // namespace detail
291
+
292
+
293
+ /** @brief index_position_pairs returns zero-based index positions of matching indexes of two multi-indexes
294
+ *
295
+ * @note a multi-index represents as tuple of single indexes of type boost::numeric::ublas::index::index_type
296
+ *
297
+ * @code auto pairs = index_position_pairs(std::make_tuple(_a,_b), std::make_tuple(_b,_c));
298
+ * @endcode
299
+ *
300
+ * @returns a std::array instance containing index position pairs of type std::pair<std::size_t, std::size_t>.
301
+ *
302
+ * @param lhs left std::tuple instance representing a multi-index
303
+ * @param rhs right std::tuple instance representing a multi-index
304
+ */
305
+ template<class tuple_left, class tuple_right>
306
+ auto index_position_pairs(tuple_left const& lhs, tuple_right const& rhs)
307
+ {
308
+ using pair_type = std::pair<std::size_t,std::size_t>;
309
+ constexpr auto m = std::tuple_size<tuple_left >::value;
310
+ constexpr auto p = number_equal_indexes<tuple_left, tuple_right>::value;
311
+ auto array = std::array<pair_type,p>{};
312
+ detail::index_position_pairs_impl<1,m>::run(array, lhs, rhs,0);
313
+ return array;
314
+ }
315
+
316
+ } // namespace ublas
317
+ } // namespace numeric
318
+ } // namespace boost
319
+
320
+ ////////////////////////////
321
+ ////////////////////////////
322
+ ////////////////////////////
323
+ ////////////////////////////
324
+
325
+
326
+ namespace boost {
327
+ namespace numeric {
328
+ namespace ublas {
329
+ namespace detail {
330
+
331
+ template<class array_type, std::size_t ... R>
332
+ constexpr auto array_to_vector_impl( array_type const& array, std::index_sequence<R...> )
333
+ {
334
+ return std::make_pair(
335
+ std::vector<std::size_t>{std::get<0>( std::get<R>(array) )+1 ...} ,
336
+ std::vector<std::size_t>{std::get<1>( std::get<R>(array) )+1 ...} );
337
+ }
338
+
339
+ } // namespace detail
340
+
341
+
342
+ /** @brief array_to_vector converts a std::array of zero-based index position pairs into two std::vector of one-based index positions
343
+ *
344
+ * @code auto two_vectors = array_to_vector(std::make_array ( std::make_pair(1,2), std::make_pair(3,4) ) ) ;
345
+ * @endcode
346
+ *
347
+ * @returns two std::vector of one-based index positions
348
+ *
349
+ * @param array std::array of zero-based index position pairs
350
+ */
351
+ template<class pair_type, std::size_t N>
352
+ constexpr auto array_to_vector( std::array<pair_type,N> const& array)
353
+ {
354
+ constexpr auto sequence = std::make_index_sequence<N>{};
355
+ return detail::array_to_vector_impl( array, sequence );
356
+ }
357
+
358
+
359
+ } // namespace ublas
360
+ } // namespace numeric
361
+ } // namespace boost
362
+
363
+
364
+ #endif // _BOOST_UBLAS_TENSOR_MULTI_INDEX_UTILITY_HPP_