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,499 @@
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
+ // The authors gratefully acknowledge the support of
8
+ // GeNeSys mbH & Co. KG in producing this work.
9
+
10
+ #ifndef _BOOST_UBLAS_BLAS_
11
+ #define _BOOST_UBLAS_BLAS_
12
+
13
+ #include <boost/numeric/ublas/traits.hpp>
14
+
15
+ namespace boost { namespace numeric { namespace ublas {
16
+
17
+
18
+ /** Interface and implementation of BLAS level 1
19
+ * This includes functions which perform \b vector-vector operations.
20
+ * More information about BLAS can be found at
21
+ * <a href="http://en.wikipedia.org/wiki/BLAS">http://en.wikipedia.org/wiki/BLAS</a>
22
+ */
23
+ namespace blas_1 {
24
+
25
+ /** 1-Norm: \f$\sum_i |x_i|\f$ (also called \f$\mathcal{L}_1\f$ or Manhattan norm)
26
+ *
27
+ * \param v a vector or vector expression
28
+ * \return the 1-Norm with type of the vector's type
29
+ *
30
+ * \tparam V type of the vector (not needed by default)
31
+ */
32
+ template<class V>
33
+ typename type_traits<typename V::value_type>::real_type
34
+ asum (const V &v) {
35
+ return norm_1 (v);
36
+ }
37
+
38
+ /** 2-Norm: \f$\sum_i |x_i|^2\f$ (also called \f$\mathcal{L}_2\f$ or Euclidean norm)
39
+ *
40
+ * \param v a vector or vector expression
41
+ * \return the 2-Norm with type of the vector's type
42
+ *
43
+ * \tparam V type of the vector (not needed by default)
44
+ */
45
+ template<class V>
46
+ typename type_traits<typename V::value_type>::real_type
47
+ nrm2 (const V &v) {
48
+ return norm_2 (v);
49
+ }
50
+
51
+ /** Infinite-norm: \f$\max_i |x_i|\f$ (also called \f$\mathcal{L}_\infty\f$ norm)
52
+ *
53
+ * \param v a vector or vector expression
54
+ * \return the Infinite-Norm with type of the vector's type
55
+ *
56
+ * \tparam V type of the vector (not needed by default)
57
+ */
58
+ template<class V>
59
+ typename type_traits<typename V::value_type>::real_type
60
+ amax (const V &v) {
61
+ return norm_inf (v);
62
+ }
63
+
64
+ /** Inner product of vectors \f$v_1\f$ and \f$v_2\f$
65
+ *
66
+ * \param v1 first vector of the inner product
67
+ * \param v2 second vector of the inner product
68
+ * \return the inner product of the type of the most generic type of the 2 vectors
69
+ *
70
+ * \tparam V1 type of first vector (not needed by default)
71
+ * \tparam V2 type of second vector (not needed by default)
72
+ */
73
+ template<class V1, class V2>
74
+ typename promote_traits<typename V1::value_type, typename V2::value_type>::promote_type
75
+ dot (const V1 &v1, const V2 &v2) {
76
+ return inner_prod (v1, v2);
77
+ }
78
+
79
+ /** Copy vector \f$v_2\f$ to \f$v_1\f$
80
+ *
81
+ * \param v1 target vector
82
+ * \param v2 source vector
83
+ * \return a reference to the target vector
84
+ *
85
+ * \tparam V1 type of first vector (not needed by default)
86
+ * \tparam V2 type of second vector (not needed by default)
87
+ */
88
+ template<class V1, class V2>
89
+ V1 & copy (V1 &v1, const V2 &v2)
90
+ {
91
+ return v1.assign (v2);
92
+ }
93
+
94
+ /** Swap vectors \f$v_1\f$ and \f$v_2\f$
95
+ *
96
+ * \param v1 first vector
97
+ * \param v2 second vector
98
+ *
99
+ * \tparam V1 type of first vector (not needed by default)
100
+ * \tparam V2 type of second vector (not needed by default)
101
+ */
102
+ template<class V1, class V2>
103
+ void swap (V1 &v1, V2 &v2)
104
+ {
105
+ v1.swap (v2);
106
+ }
107
+
108
+ /** scale vector \f$v\f$ with scalar \f$t\f$
109
+ *
110
+ * \param v vector to be scaled
111
+ * \param t the scalar
112
+ * \return \c t*v
113
+ *
114
+ * \tparam V type of the vector (not needed by default)
115
+ * \tparam T type of the scalar (not needed by default)
116
+ */
117
+ template<class V, class T>
118
+ V & scal (V &v, const T &t)
119
+ {
120
+ return v *= t;
121
+ }
122
+
123
+ /** Compute \f$v_1= v_1 + t.v_2\f$
124
+ *
125
+ * \param v1 target and first vector
126
+ * \param t the scalar
127
+ * \param v2 second vector
128
+ * \return a reference to the first and target vector
129
+ *
130
+ * \tparam V1 type of the first vector (not needed by default)
131
+ * \tparam T type of the scalar (not needed by default)
132
+ * \tparam V2 type of the second vector (not needed by default)
133
+ */
134
+ template<class V1, class T, class V2>
135
+ V1 & axpy (V1 &v1, const T &t, const V2 &v2)
136
+ {
137
+ return v1.plus_assign (t * v2);
138
+ }
139
+
140
+ /** Performs rotation of points in the plane and assign the result to the first vector
141
+ *
142
+ * Each point is defined as a pair \c v1(i) and \c v2(i), being respectively
143
+ * the \f$x\f$ and \f$y\f$ coordinates. The parameters \c t1 and \t2 are respectively
144
+ * the cosine and sine of the angle of the rotation.
145
+ * Results are not returned but directly written into \c v1.
146
+ *
147
+ * \param t1 cosine of the rotation
148
+ * \param v1 vector of \f$x\f$ values
149
+ * \param t2 sine of the rotation
150
+ * \param v2 vector of \f$y\f$ values
151
+ *
152
+ * \tparam T1 type of the cosine value (not needed by default)
153
+ * \tparam V1 type of the \f$x\f$ vector (not needed by default)
154
+ * \tparam T2 type of the sine value (not needed by default)
155
+ * \tparam V2 type of the \f$y\f$ vector (not needed by default)
156
+ */
157
+ template<class T1, class V1, class T2, class V2>
158
+ void rot (const T1 &t1, V1 &v1, const T2 &t2, V2 &v2)
159
+ {
160
+ typedef typename promote_traits<typename V1::value_type, typename V2::value_type>::promote_type promote_type;
161
+ vector<promote_type> vt (t1 * v1 + t2 * v2);
162
+ v2.assign (- t2 * v1 + t1 * v2);
163
+ v1.assign (vt);
164
+ }
165
+
166
+ }
167
+
168
+ /** \brief Interface and implementation of BLAS level 2
169
+ * This includes functions which perform \b matrix-vector operations.
170
+ * More information about BLAS can be found at
171
+ * <a href="http://en.wikipedia.org/wiki/BLAS">http://en.wikipedia.org/wiki/BLAS</a>
172
+ */
173
+ namespace blas_2 {
174
+
175
+ /** \brief multiply vector \c v with triangular matrix \c m
176
+ *
177
+ * \param v a vector
178
+ * \param m a triangular matrix
179
+ * \return the result of the product
180
+ *
181
+ * \tparam V type of the vector (not needed by default)
182
+ * \tparam M type of the matrix (not needed by default)
183
+ */
184
+ template<class V, class M>
185
+ V & tmv (V &v, const M &m)
186
+ {
187
+ return v = prod (m, v);
188
+ }
189
+
190
+ /** \brief solve \f$m.x = v\f$ in place, where \c m is a triangular matrix
191
+ *
192
+ * \param v a vector
193
+ * \param m a matrix
194
+ * \param C (this parameter is not needed)
195
+ * \return a result vector from the above operation
196
+ *
197
+ * \tparam V type of the vector (not needed by default)
198
+ * \tparam M type of the matrix (not needed by default)
199
+ * \tparam C n/a
200
+ */
201
+ template<class V, class M, class C>
202
+ V & tsv (V &v, const M &m, C)
203
+ {
204
+ return v = solve (m, v, C ());
205
+ }
206
+
207
+ /** \brief compute \f$ v_1 = t_1.v_1 + t_2.(m.v_2)\f$, a general matrix-vector product
208
+ *
209
+ * \param v1 a vector
210
+ * \param t1 a scalar
211
+ * \param t2 another scalar
212
+ * \param m a matrix
213
+ * \param v2 another vector
214
+ * \return the vector \c v1 with the result from the above operation
215
+ *
216
+ * \tparam V1 type of first vector (not needed by default)
217
+ * \tparam T1 type of first scalar (not needed by default)
218
+ * \tparam T2 type of second scalar (not needed by default)
219
+ * \tparam M type of matrix (not needed by default)
220
+ * \tparam V2 type of second vector (not needed by default)
221
+ */
222
+ template<class V1, class T1, class T2, class M, class V2>
223
+ V1 & gmv (V1 &v1, const T1 &t1, const T2 &t2, const M &m, const V2 &v2)
224
+ {
225
+ return v1 = t1 * v1 + t2 * prod (m, v2);
226
+ }
227
+
228
+ /** \brief Rank 1 update: \f$ m = m + t.(v_1.v_2^T)\f$
229
+ *
230
+ * \param m a matrix
231
+ * \param t a scalar
232
+ * \param v1 a vector
233
+ * \param v2 another vector
234
+ * \return a matrix with the result from the above operation
235
+ *
236
+ * \tparam M type of matrix (not needed by default)
237
+ * \tparam T type of scalar (not needed by default)
238
+ * \tparam V1 type of first vector (not needed by default)
239
+ * \tparam V2type of second vector (not needed by default)
240
+ */
241
+ template<class M, class T, class V1, class V2>
242
+ M & gr (M &m, const T &t, const V1 &v1, const V2 &v2)
243
+ {
244
+ #ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG
245
+ return m += t * outer_prod (v1, v2);
246
+ #else
247
+ return m = m + t * outer_prod (v1, v2);
248
+ #endif
249
+ }
250
+
251
+ /** \brief symmetric rank 1 update: \f$m = m + t.(v.v^T)\f$
252
+ *
253
+ * \param m a matrix
254
+ * \param t a scalar
255
+ * \param v a vector
256
+ * \return a matrix with the result from the above operation
257
+ *
258
+ * \tparam M type of matrix (not needed by default)
259
+ * \tparam T type of scalar (not needed by default)
260
+ * \tparam V type of vector (not needed by default)
261
+ */
262
+ template<class M, class T, class V>
263
+ M & sr (M &m, const T &t, const V &v)
264
+ {
265
+ #ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG
266
+ return m += t * outer_prod (v, v);
267
+ #else
268
+ return m = m + t * outer_prod (v, v);
269
+ #endif
270
+ }
271
+
272
+ /** \brief hermitian rank 1 update: \f$m = m + t.(v.v^H)\f$
273
+ *
274
+ * \param m a matrix
275
+ * \param t a scalar
276
+ * \param v a vector
277
+ * \return a matrix with the result from the above operation
278
+ *
279
+ * \tparam M type of matrix (not needed by default)
280
+ * \tparam T type of scalar (not needed by default)
281
+ * \tparam V type of vector (not needed by default)
282
+ */
283
+ template<class M, class T, class V>
284
+ M & hr (M &m, const T &t, const V &v)
285
+ {
286
+ #ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG
287
+ return m += t * outer_prod (v, conj (v));
288
+ #else
289
+ return m = m + t * outer_prod (v, conj (v));
290
+ #endif
291
+ }
292
+
293
+ /** \brief symmetric rank 2 update: \f$ m=m+ t.(v_1.v_2^T + v_2.v_1^T)\f$
294
+ *
295
+ * \param m a matrix
296
+ * \param t a scalar
297
+ * \param v1 a vector
298
+ * \param v2 another vector
299
+ * \return a matrix with the result from the above operation
300
+ *
301
+ * \tparam M type of matrix (not needed by default)
302
+ * \tparam T type of scalar (not needed by default)
303
+ * \tparam V1 type of first vector (not needed by default)
304
+ * \tparam V2type of second vector (not needed by default)
305
+ */
306
+ template<class M, class T, class V1, class V2>
307
+ M & sr2 (M &m, const T &t, const V1 &v1, const V2 &v2)
308
+ {
309
+ #ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG
310
+ return m += t * (outer_prod (v1, v2) + outer_prod (v2, v1));
311
+ #else
312
+ return m = m + t * (outer_prod (v1, v2) + outer_prod (v2, v1));
313
+ #endif
314
+ }
315
+
316
+ /** \brief hermitian rank 2 update: \f$m=m+t.(v_1.v_2^H) + v_2.(t.v_1)^H)\f$
317
+ *
318
+ * \param m a matrix
319
+ * \param t a scalar
320
+ * \param v1 a vector
321
+ * \param v2 another vector
322
+ * \return a matrix with the result from the above operation
323
+ *
324
+ * \tparam M type of matrix (not needed by default)
325
+ * \tparam T type of scalar (not needed by default)
326
+ * \tparam V1 type of first vector (not needed by default)
327
+ * \tparam V2type of second vector (not needed by default)
328
+ */
329
+ template<class M, class T, class V1, class V2>
330
+ M & hr2 (M &m, const T &t, const V1 &v1, const V2 &v2)
331
+ {
332
+ #ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG
333
+ return m += t * outer_prod (v1, conj (v2)) + type_traits<T>::conj (t) * outer_prod (v2, conj (v1));
334
+ #else
335
+ return m = m + t * outer_prod (v1, conj (v2)) + type_traits<T>::conj (t) * outer_prod (v2, conj (v1));
336
+ #endif
337
+ }
338
+
339
+ }
340
+
341
+ /** \brief Interface and implementation of BLAS level 3
342
+ * This includes functions which perform \b matrix-matrix operations.
343
+ * More information about BLAS can be found at
344
+ * <a href="http://en.wikipedia.org/wiki/BLAS">http://en.wikipedia.org/wiki/BLAS</a>
345
+ */
346
+ namespace blas_3 {
347
+
348
+ /** \brief triangular matrix multiplication \f$m_1=t.m_2.m_3\f$ where \f$m_2\f$ and \f$m_3\f$ are triangular
349
+ *
350
+ * \param m1 a matrix for storing result
351
+ * \param t a scalar
352
+ * \param m2 a triangular matrix
353
+ * \param m3 a triangular matrix
354
+ * \return the matrix \c m1
355
+ *
356
+ * \tparam M1 type of the result matrix (not needed by default)
357
+ * \tparam T type of the scalar (not needed by default)
358
+ * \tparam M2 type of the first triangular matrix (not needed by default)
359
+ * \tparam M3 type of the second triangular matrix (not needed by default)
360
+ *
361
+ */
362
+ template<class M1, class T, class M2, class M3>
363
+ M1 & tmm (M1 &m1, const T &t, const M2 &m2, const M3 &m3)
364
+ {
365
+ return m1 = t * prod (m2, m3);
366
+ }
367
+
368
+ /** \brief triangular solve \f$ m_2.x = t.m_1\f$ in place, \f$m_2\f$ is a triangular matrix
369
+ *
370
+ * \param m1 a matrix
371
+ * \param t a scalar
372
+ * \param m2 a triangular matrix
373
+ * \param C (not used)
374
+ * \return the \f$m_1\f$ matrix
375
+ *
376
+ * \tparam M1 type of the first matrix (not needed by default)
377
+ * \tparam T type of the scalar (not needed by default)
378
+ * \tparam M2 type of the triangular matrix (not needed by default)
379
+ * \tparam C (n/a)
380
+ */
381
+ template<class M1, class T, class M2, class C>
382
+ M1 & tsm (M1 &m1, const T &t, const M2 &m2, C)
383
+ {
384
+ return m1 = solve (m2, t * m1, C ());
385
+ }
386
+
387
+ /** \brief general matrix multiplication \f$m_1=t_1.m_1 + t_2.m_2.m_3\f$
388
+ *
389
+ * \param m1 first matrix
390
+ * \param t1 first scalar
391
+ * \param t2 second scalar
392
+ * \param m2 second matrix
393
+ * \param m3 third matrix
394
+ * \return the matrix \c m1
395
+ *
396
+ * \tparam M1 type of the first matrix (not needed by default)
397
+ * \tparam T1 type of the first scalar (not needed by default)
398
+ * \tparam T2 type of the second scalar (not needed by default)
399
+ * \tparam M2 type of the second matrix (not needed by default)
400
+ * \tparam M3 type of the third matrix (not needed by default)
401
+ */
402
+ template<class M1, class T1, class T2, class M2, class M3>
403
+ M1 & gmm (M1 &m1, const T1 &t1, const T2 &t2, const M2 &m2, const M3 &m3)
404
+ {
405
+ return m1 = t1 * m1 + t2 * prod (m2, m3);
406
+ }
407
+
408
+ /** \brief symmetric rank \a k update: \f$m_1=t.m_1+t_2.(m_2.m_2^T)\f$
409
+ *
410
+ * \param m1 first matrix
411
+ * \param t1 first scalar
412
+ * \param t2 second scalar
413
+ * \param m2 second matrix
414
+ * \return matrix \c m1
415
+ *
416
+ * \tparam M1 type of the first matrix (not needed by default)
417
+ * \tparam T1 type of the first scalar (not needed by default)
418
+ * \tparam T2 type of the second scalar (not needed by default)
419
+ * \tparam M2 type of the second matrix (not needed by default)
420
+ * \todo use opb_prod()
421
+ */
422
+ template<class M1, class T1, class T2, class M2>
423
+ M1 & srk (M1 &m1, const T1 &t1, const T2 &t2, const M2 &m2)
424
+ {
425
+ return m1 = t1 * m1 + t2 * prod (m2, trans (m2));
426
+ }
427
+
428
+ /** \brief hermitian rank \a k update: \f$m_1=t.m_1+t_2.(m_2.m2^H)\f$
429
+ *
430
+ * \param m1 first matrix
431
+ * \param t1 first scalar
432
+ * \param t2 second scalar
433
+ * \param m2 second matrix
434
+ * \return matrix \c m1
435
+ *
436
+ * \tparam M1 type of the first matrix (not needed by default)
437
+ * \tparam T1 type of the first scalar (not needed by default)
438
+ * \tparam T2 type of the second scalar (not needed by default)
439
+ * \tparam M2 type of the second matrix (not needed by default)
440
+ * \todo use opb_prod()
441
+ */
442
+ template<class M1, class T1, class T2, class M2>
443
+ M1 & hrk (M1 &m1, const T1 &t1, const T2 &t2, const M2 &m2)
444
+ {
445
+ return m1 = t1 * m1 + t2 * prod (m2, herm (m2));
446
+ }
447
+
448
+ /** \brief generalized symmetric rank \a k update: \f$m_1=t_1.m_1+t_2.(m_2.m3^T)+t_2.(m_3.m2^T)\f$
449
+ *
450
+ * \param m1 first matrix
451
+ * \param t1 first scalar
452
+ * \param t2 second scalar
453
+ * \param m2 second matrix
454
+ * \param m3 third matrix
455
+ * \return matrix \c m1
456
+ *
457
+ * \tparam M1 type of the first matrix (not needed by default)
458
+ * \tparam T1 type of the first scalar (not needed by default)
459
+ * \tparam T2 type of the second scalar (not needed by default)
460
+ * \tparam M2 type of the second matrix (not needed by default)
461
+ * \tparam M3 type of the third matrix (not needed by default)
462
+ * \todo use opb_prod()
463
+ */
464
+ template<class M1, class T1, class T2, class M2, class M3>
465
+ M1 & sr2k (M1 &m1, const T1 &t1, const T2 &t2, const M2 &m2, const M3 &m3)
466
+ {
467
+ return m1 = t1 * m1 + t2 * (prod (m2, trans (m3)) + prod (m3, trans (m2)));
468
+ }
469
+
470
+ /** \brief generalized hermitian rank \a k update: * \f$m_1=t_1.m_1+t_2.(m_2.m_3^H)+(m_3.(t_2.m_2)^H)\f$
471
+ *
472
+ * \param m1 first matrix
473
+ * \param t1 first scalar
474
+ * \param t2 second scalar
475
+ * \param m2 second matrix
476
+ * \param m3 third matrix
477
+ * \return matrix \c m1
478
+ *
479
+ * \tparam M1 type of the first matrix (not needed by default)
480
+ * \tparam T1 type of the first scalar (not needed by default)
481
+ * \tparam T2 type of the second scalar (not needed by default)
482
+ * \tparam M2 type of the second matrix (not needed by default)
483
+ * \tparam M3 type of the third matrix (not needed by default)
484
+ * \todo use opb_prod()
485
+ */
486
+ template<class M1, class T1, class T2, class M2, class M3>
487
+ M1 & hr2k (M1 &m1, const T1 &t1, const T2 &t2, const M2 &m2, const M3 &m3)
488
+ {
489
+ return m1 =
490
+ t1 * m1
491
+ + t2 * prod (m2, herm (m3))
492
+ + type_traits<T2>::conj (t2) * prod (m3, herm (m2));
493
+ }
494
+
495
+ }
496
+
497
+ }}}
498
+
499
+ #endif