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,113 @@
1
+ /* Boost interval/compare/possible.hpp template implementation file
2
+ *
3
+ * Copyright 2003 Guillaume Melquiond
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * (See accompanying file LICENSE_1_0.txt or
7
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ */
9
+
10
+ #ifndef BOOST_NUMERIC_INTERVAL_COMPARE_POSSIBLE_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_POSSIBLE_HPP
12
+
13
+ #include <boost/numeric/interval/detail/interval_prototype.hpp>
14
+ #include <boost/numeric/interval/detail/test_input.hpp>
15
+
16
+ namespace boost {
17
+ namespace numeric {
18
+ namespace interval_lib {
19
+ namespace compare {
20
+ namespace possible {
21
+
22
+ template<class T, class Policies1, class Policies2> inline
23
+ bool operator<(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
24
+ {
25
+ if (detail::test_input(x, y)) throw comparison_error();
26
+ return x.lower() < y.upper();
27
+ }
28
+
29
+ template<class T, class Policies> inline
30
+ bool operator<(const interval<T, Policies>& x, const T& y)
31
+ {
32
+ if (detail::test_input(x, y)) throw comparison_error();
33
+ return x.lower() < y;
34
+ }
35
+
36
+ template<class T, class Policies1, class Policies2> inline
37
+ bool operator<=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
38
+ {
39
+ if (detail::test_input(x, y)) throw comparison_error();
40
+ return x.lower() <= y.upper();
41
+ }
42
+
43
+ template<class T, class Policies> inline
44
+ bool operator<=(const interval<T, Policies>& x, const T& y)
45
+ {
46
+ if (detail::test_input(x, y)) throw comparison_error();
47
+ return x.lower() <= y;
48
+ }
49
+
50
+ template<class T, class Policies1, class Policies2> inline
51
+ bool operator>(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
52
+ {
53
+ if (detail::test_input(x, y)) throw comparison_error();
54
+ return x.upper() > y.lower();
55
+ }
56
+
57
+ template<class T, class Policies> inline
58
+ bool operator>(const interval<T, Policies>& x, const T& y)
59
+ {
60
+ if (detail::test_input(x, y)) throw comparison_error();
61
+ return x.upper() > y;
62
+ }
63
+
64
+ template<class T, class Policies1, class Policies2> inline
65
+ bool operator>=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
66
+ {
67
+ if (detail::test_input(x, y)) throw comparison_error();
68
+ return x.upper() >= y.lower();
69
+ }
70
+
71
+ template<class T, class Policies> inline
72
+ bool operator>=(const interval<T, Policies>& x, const T& y)
73
+ {
74
+ if (detail::test_input(x, y)) throw comparison_error();
75
+ return x.upper() >= y;
76
+ }
77
+
78
+ template<class T, class Policies1, class Policies2> inline
79
+ bool operator==(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
80
+ {
81
+ if (detail::test_input(x, y)) throw comparison_error();
82
+ return x.lower() <= y.upper() && x.upper() >= y.lower();
83
+ }
84
+
85
+ template<class T, class Policies> inline
86
+ bool operator==(const interval<T, Policies>& x, const T& y)
87
+ {
88
+ if (detail::test_input(x, y)) throw comparison_error();
89
+ return x.lower() <= y && x.upper() >= y;
90
+ }
91
+
92
+ template<class T, class Policies1, class Policies2> inline
93
+ bool operator!=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
94
+ {
95
+ if (detail::test_input(x, y)) throw comparison_error();
96
+ return x.lower() != y.upper() || x.upper() != y.lower();
97
+ }
98
+
99
+ template<class T, class Policies> inline
100
+ bool operator!=(const interval<T, Policies>& x, const T& y)
101
+ {
102
+ if (detail::test_input(x, y)) throw comparison_error();
103
+ return x.lower() != y || x.upper() != y;
104
+ }
105
+
106
+ } // namespace possible
107
+ } // namespace compare
108
+ } // namespace interval_lib
109
+ } // namespace numeric
110
+ } // namespace boost
111
+
112
+
113
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_POSSIBLE_HPP
@@ -0,0 +1,101 @@
1
+ /* Boost interval/compare/set.hpp template implementation file
2
+ *
3
+ * Copyright 2002-2003 Guillaume Melquiond
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * (See accompanying file LICENSE_1_0.txt or
7
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ */
9
+
10
+ #ifndef BOOST_NUMERIC_INTERVAL_COMPARE_SET_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_SET_HPP
12
+
13
+ #include <boost/numeric/interval/detail/interval_prototype.hpp>
14
+ #include <boost/numeric/interval/detail/test_input.hpp>
15
+ #include <boost/numeric/interval/utility.hpp>
16
+
17
+ namespace boost {
18
+ namespace numeric {
19
+ namespace interval_lib {
20
+ namespace compare {
21
+ namespace set {
22
+
23
+ template<class T, class Policies1, class Policies2> inline
24
+ bool operator<(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
25
+ {
26
+ return proper_subset(x, y);
27
+ }
28
+
29
+ template<class T, class Policies> inline
30
+ bool operator<(const interval<T, Policies>& , const T& )
31
+ {
32
+ throw comparison_error();
33
+ }
34
+
35
+ template<class T, class Policies1, class Policies2> inline
36
+ bool operator<=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
37
+ {
38
+ return subset(x, y);
39
+ }
40
+
41
+ template<class T, class Policies> inline
42
+ bool operator<=(const interval<T, Policies>& , const T& )
43
+ {
44
+ throw comparison_error();
45
+ }
46
+
47
+ template<class T, class Policies1, class Policies2> inline
48
+ bool operator>(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
49
+ {
50
+ return proper_subset(y, x);
51
+ }
52
+
53
+ template<class T, class Policies> inline
54
+ bool operator>(const interval<T, Policies>& , const T& )
55
+ {
56
+ throw comparison_error();
57
+ }
58
+
59
+ template<class T, class Policies1, class Policies2> inline
60
+ bool operator>=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
61
+ {
62
+ return subset(y, x);
63
+ }
64
+
65
+ template<class T, class Policies> inline
66
+ bool operator>=(const interval<T, Policies>& , const T& )
67
+ {
68
+ throw comparison_error();
69
+ }
70
+
71
+ template<class T, class Policies1, class Policies2> inline
72
+ bool operator==(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
73
+ {
74
+ return equal(y, x);
75
+ }
76
+
77
+ template<class T, class Policies> inline
78
+ bool operator==(const interval<T, Policies>& , const T& )
79
+ {
80
+ throw comparison_error();
81
+ }
82
+
83
+ template<class T, class Policies1, class Policies2> inline
84
+ bool operator!=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
85
+ {
86
+ return !equal(y, x);
87
+ }
88
+
89
+ template<class T, class Policies> inline
90
+ bool operator!=(const interval<T, Policies>& , const T& )
91
+ {
92
+ throw comparison_error();
93
+ }
94
+
95
+ } // namespace set
96
+ } // namespace compare
97
+ } // namespace interval_lib
98
+ } // namespace numeric
99
+ } // namespace boost
100
+
101
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_SET_HPP
@@ -0,0 +1,138 @@
1
+ /* Boost interval/compare/tribool.hpp template implementation file
2
+ *
3
+ * Copyright 2002-2003 Guillaume Melquiond
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * (See accompanying file LICENSE_1_0.txt or
7
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ */
9
+
10
+ #ifndef BOOST_NUMERIC_INTERVAL_COMPARE_TRIBOOL_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_TRIBOOL_HPP
12
+
13
+ #include <boost/numeric/interval/detail/interval_prototype.hpp>
14
+ #include <boost/numeric/interval/detail/test_input.hpp>
15
+ #include <boost/logic/tribool.hpp>
16
+
17
+ namespace boost {
18
+ namespace numeric {
19
+ namespace interval_lib {
20
+ namespace compare {
21
+ namespace tribool {
22
+
23
+ template<class T, class Policies1, class Policies2> inline
24
+ logic::tribool operator<(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
25
+ {
26
+ if (detail::test_input(x, y)) throw comparison_error();
27
+ if (x.upper() < y.lower()) return true;
28
+ if (x.lower() >= y.upper()) return false;
29
+ return logic::indeterminate;
30
+ }
31
+
32
+ template<class T, class Policies> inline
33
+ logic::tribool operator<(const interval<T, Policies>& x, const T& y)
34
+ {
35
+ if (detail::test_input(x, y)) throw comparison_error();
36
+ if (x.upper() < y) return true;
37
+ if (x.lower() >= y) return false;
38
+ return logic::indeterminate;
39
+ }
40
+
41
+ template<class T, class Policies1, class Policies2> inline
42
+ logic::tribool operator<=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
43
+ {
44
+ if (detail::test_input(x, y)) throw comparison_error();
45
+ if (x.upper() <= y.lower()) return true;
46
+ if (x.lower() > y.upper()) return false;
47
+ return logic::indeterminate;
48
+ }
49
+
50
+ template<class T, class Policies> inline
51
+ logic::tribool operator<=(const interval<T, Policies>& x, const T& y)
52
+ {
53
+ if (detail::test_input(x, y)) throw comparison_error();
54
+ if (x.upper() <= y) return true;
55
+ if (x.lower() > y) return false;
56
+ return logic::indeterminate;
57
+ }
58
+
59
+ template<class T, class Policies1, class Policies2> inline
60
+ logic::tribool operator>(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
61
+ {
62
+ if (detail::test_input(x, y)) throw comparison_error();
63
+ if (x.lower() > y.upper()) return true;
64
+ if (x.upper() <= y.lower()) return false;
65
+ return logic::indeterminate;
66
+ }
67
+
68
+ template<class T, class Policies> inline
69
+ logic::tribool operator>(const interval<T, Policies>& x, const T& y)
70
+ {
71
+ if (detail::test_input(x, y)) throw comparison_error();
72
+ if (x.lower() > y) return true;
73
+ if (x.upper() <= y) return false;
74
+ return logic::indeterminate;
75
+ }
76
+
77
+ template<class T, class Policies1, class Policies2> inline
78
+ logic::tribool operator>=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
79
+ {
80
+ if (detail::test_input(x, y)) throw comparison_error();
81
+ if (x.lower() >= y.upper()) return true;
82
+ if (x.upper() < y.lower()) return false;
83
+ return logic::indeterminate;
84
+ }
85
+
86
+ template<class T, class Policies> inline
87
+ logic::tribool operator>=(const interval<T, Policies>& x, const T& y)
88
+ {
89
+ if (detail::test_input(x, y)) throw comparison_error();
90
+ if (x.lower() >= y) return true;
91
+ if (x.upper() < y) return false;
92
+ return logic::indeterminate;
93
+ }
94
+
95
+ template<class T, class Policies1, class Policies2> inline
96
+ logic::tribool operator==(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
97
+ {
98
+ if (detail::test_input(x, y)) throw comparison_error();
99
+ if (x.upper() == y.lower() && x.lower() == y.upper()) return true;
100
+ if (x.upper() < y.lower() || x.lower() > y.upper()) return false;
101
+ return logic::indeterminate;
102
+ }
103
+
104
+ template<class T, class Policies> inline
105
+ logic::tribool operator==(const interval<T, Policies>& x, const T& y)
106
+ {
107
+ if (detail::test_input(x, y)) throw comparison_error();
108
+ if (x.upper() == y && x.lower() == y) return true;
109
+ if (x.upper() < y || x.lower() > y) return false;
110
+ return logic::indeterminate;
111
+ }
112
+
113
+ template<class T, class Policies1, class Policies2> inline
114
+ logic::tribool operator!=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
115
+ {
116
+ if (detail::test_input(x, y)) throw comparison_error();
117
+ if (x.upper() < y.lower() || x.lower() > y.upper()) return true;
118
+ if (x.upper() == y.lower() && x.lower() == y.upper()) return false;
119
+ return logic::indeterminate;
120
+ }
121
+
122
+ template<class T, class Policies> inline
123
+ logic::tribool operator!=(const interval<T, Policies>& x, const T& y)
124
+ {
125
+ if (detail::test_input(x, y)) throw comparison_error();
126
+ if (x.upper() < y || x.lower() > y) return true;
127
+ if (x.upper() == y && x.lower() == y) return false;
128
+ return logic::indeterminate;
129
+ }
130
+
131
+ } // namespace tribool
132
+ } // namespace compare
133
+ } // namespace interval_lib
134
+ } // namespace numeric
135
+ } // namespace boost
136
+
137
+
138
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_TRIBOOL_HPP
@@ -0,0 +1,19 @@
1
+ /* Boost interval/compare.hpp template implementation file
2
+ *
3
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * (See accompanying file LICENSE_1_0.txt or
7
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ */
9
+
10
+ #ifndef BOOST_NUMERIC_INTERVAL_COMPARE_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_HPP
12
+
13
+ #include <boost/numeric/interval/compare/certain.hpp>
14
+ #include <boost/numeric/interval/compare/possible.hpp>
15
+ #include <boost/numeric/interval/compare/explicit.hpp>
16
+ #include <boost/numeric/interval/compare/lexicographic.hpp>
17
+ #include <boost/numeric/interval/compare/set.hpp>
18
+
19
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_HPP
@@ -0,0 +1,85 @@
1
+ /* Boost interval/constants.hpp template implementation file
2
+ *
3
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * (See accompanying file LICENSE_1_0.txt or
7
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ */
9
+
10
+ #ifndef BOOST_NUMERIC_INTERVAL_CONSTANTS_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_CONSTANTS_HPP
12
+
13
+ namespace boost {
14
+ namespace numeric {
15
+ namespace interval_lib {
16
+ namespace constants {
17
+
18
+ // These constants should be exactly computed.
19
+ // Decimal representations wouldn't do it since the standard doesn't
20
+ // specify the rounding (even nearest) that should be used.
21
+
22
+ static const float pi_f_l = 13176794.0f/(1<<22);
23
+ static const float pi_f_u = 13176795.0f/(1<<22);
24
+ static const double pi_d_l = (3373259426.0 + 273688.0 / (1<<21)) / (1<<30);
25
+ static const double pi_d_u = (3373259426.0 + 273689.0 / (1<<21)) / (1<<30);
26
+
27
+ template<class T> inline T pi_lower() { return 3; }
28
+ template<class T> inline T pi_upper() { return 4; }
29
+ template<class T> inline T pi_half_lower() { return 1; }
30
+ template<class T> inline T pi_half_upper() { return 2; }
31
+ template<class T> inline T pi_twice_lower() { return 6; }
32
+ template<class T> inline T pi_twice_upper() { return 7; }
33
+
34
+ template<> inline float pi_lower<float>() { return pi_f_l; }
35
+ template<> inline float pi_upper<float>() { return pi_f_u; }
36
+ template<> inline float pi_half_lower<float>() { return pi_f_l / 2; }
37
+ template<> inline float pi_half_upper<float>() { return pi_f_u / 2; }
38
+ template<> inline float pi_twice_lower<float>() { return pi_f_l * 2; }
39
+ template<> inline float pi_twice_upper<float>() { return pi_f_u * 2; }
40
+
41
+ template<> inline double pi_lower<double>() { return pi_d_l; }
42
+ template<> inline double pi_upper<double>() { return pi_d_u; }
43
+ template<> inline double pi_half_lower<double>() { return pi_d_l / 2; }
44
+ template<> inline double pi_half_upper<double>() { return pi_d_u / 2; }
45
+ template<> inline double pi_twice_lower<double>() { return pi_d_l * 2; }
46
+ template<> inline double pi_twice_upper<double>() { return pi_d_u * 2; }
47
+
48
+ template<> inline long double pi_lower<long double>() { return pi_d_l; }
49
+ template<> inline long double pi_upper<long double>() { return pi_d_u; }
50
+ template<> inline long double pi_half_lower<long double>() { return pi_d_l / 2; }
51
+ template<> inline long double pi_half_upper<long double>() { return pi_d_u / 2; }
52
+ template<> inline long double pi_twice_lower<long double>() { return pi_d_l * 2; }
53
+ template<> inline long double pi_twice_upper<long double>() { return pi_d_u * 2; }
54
+
55
+ } // namespace constants
56
+
57
+ template<class I> inline
58
+ I pi()
59
+ {
60
+ typedef typename I::base_type T;
61
+ return I(constants::pi_lower<T>(),
62
+ constants::pi_upper<T>(), true);
63
+ }
64
+
65
+ template<class I> inline
66
+ I pi_half()
67
+ {
68
+ typedef typename I::base_type T;
69
+ return I(constants::pi_half_lower<T>(),
70
+ constants::pi_half_upper<T>(), true);
71
+ }
72
+
73
+ template<class I> inline
74
+ I pi_twice()
75
+ {
76
+ typedef typename I::base_type T;
77
+ return I(constants::pi_twice_lower<T>(),
78
+ constants::pi_twice_upper<T>(), true);
79
+ }
80
+
81
+ } // namespace interval_lib
82
+ } // namespace numeric
83
+ } // namespace boost
84
+
85
+ #endif // BOOST_NUMERIC_INTERVAL_CONSTANTS_HPP
@@ -0,0 +1,113 @@
1
+ /* Boost interval/detail/alpha_rounding_control.hpp file
2
+ *
3
+ * Copyright 2005 Felix Höfling, Guillaume Melquiond
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * (See accompanying file LICENSE_1_0.txt or
7
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ */
9
+
10
+ #ifndef BOOST_NUMERIC_INTERVAL_DETAIL_ALPHA_ROUNDING_CONTROL_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_ALPHA_ROUNDING_CONTROL_HPP
12
+
13
+ #if !defined(alpha) && !defined(__alpha__)
14
+ #error This header only works on Alpha CPUs.
15
+ #endif
16
+
17
+ #if defined(__GNUC__) || defined(__digital__) || defined(__DECCXX)
18
+
19
+ #include <float.h> // write_rnd() and read_rnd()
20
+
21
+ namespace boost {
22
+ namespace numeric {
23
+ namespace interval_lib {
24
+
25
+ namespace detail {
26
+ #if defined(__GNUC__ )
27
+ typedef union {
28
+ ::boost::long_long_type imode;
29
+ double dmode;
30
+ } rounding_mode_struct;
31
+
32
+ // set bits 59-58 (DYN),
33
+ // clear all exception bits and disable overflow (51) and inexact exceptions (62)
34
+ static const rounding_mode_struct mode_upward = { 0x4C08000000000000LL };
35
+ static const rounding_mode_struct mode_downward = { 0x4408000000000000LL };
36
+ static const rounding_mode_struct mode_to_nearest = { 0x4808000000000000LL };
37
+ static const rounding_mode_struct mode_toward_zero = { 0x4008000000000000LL };
38
+
39
+ struct alpha_rounding_control
40
+ {
41
+ typedef double rounding_mode;
42
+
43
+ static void set_rounding_mode(const rounding_mode mode)
44
+ { __asm__ __volatile__ ("mt_fpcr %0" : : "f"(mode)); }
45
+
46
+ static void get_rounding_mode(rounding_mode& mode)
47
+ { __asm__ __volatile__ ("mf_fpcr %0" : "=f"(mode)); }
48
+
49
+ static void downward() { set_rounding_mode(mode_downward.dmode); }
50
+ static void upward() { set_rounding_mode(mode_upward.dmode); }
51
+ static void to_nearest() { set_rounding_mode(mode_to_nearest.dmode); }
52
+ static void toward_zero() { set_rounding_mode(mode_toward_zero.dmode); }
53
+ };
54
+ #elif defined(__digital__) || defined(__DECCXX)
55
+
56
+ #if defined(__DECCXX) && !(defined(__FLT_ROUNDS) && __FLT_ROUNDS == -1)
57
+ #error Dynamic rounding mode not enabled. See cxx man page for details.
58
+ #endif
59
+
60
+ struct alpha_rounding_control
61
+ {
62
+ typedef unsigned int rounding_mode;
63
+
64
+ static void set_rounding_mode(const rounding_mode& mode) { write_rnd(mode); }
65
+ static void get_rounding_mode(rounding_mode& mode) { mode = read_rnd(); }
66
+
67
+ static void downward() { set_rounding_mode(FP_RND_RM); }
68
+ static void upward() { set_rounding_mode(FP_RND_RP); }
69
+ static void to_nearest() { set_rounding_mode(FP_RND_RN); }
70
+ static void toward_zero() { set_rounding_mode(FP_RND_RZ); }
71
+ };
72
+ #endif
73
+ } // namespace detail
74
+
75
+ extern "C" {
76
+ float rintf(float);
77
+ double rint(double);
78
+ long double rintl(long double);
79
+ }
80
+
81
+ template<>
82
+ struct rounding_control<float>:
83
+ detail::alpha_rounding_control
84
+ {
85
+ static float force_rounding(const float r)
86
+ { volatile float _r = r; return _r; }
87
+ static float to_int(const float& x) { return rintf(x); }
88
+ };
89
+
90
+ template<>
91
+ struct rounding_control<double>:
92
+ detail::alpha_rounding_control
93
+ {
94
+ static const double & force_rounding(const double& r) { return r; }
95
+ static double to_int(const double& r) { return rint(r); }
96
+ };
97
+
98
+ template<>
99
+ struct rounding_control<long double>:
100
+ detail::alpha_rounding_control
101
+ {
102
+ static const long double & force_rounding(const long double& r) { return r; }
103
+ static long double to_int(const long double& r) { return rintl(r); }
104
+ };
105
+
106
+ } // namespace interval_lib
107
+ } // namespace numeric
108
+ } // namespace boost
109
+
110
+ #undef BOOST_NUMERIC_INTERVAL_NO_HARDWARE
111
+ #endif
112
+
113
+ #endif /* BOOST_NUMERIC_INTERVAL_DETAIL_ALPHA_ROUNDING_CONTROL_HPP */
@@ -0,0 +1,57 @@
1
+ /* Boost interval/detail/bcc_rounding_control.hpp file
2
+ *
3
+ * Copyright 2000 Jens Maurer
4
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * (See accompanying file LICENSE_1_0.txt or
8
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ */
10
+
11
+ #ifndef BOOST_NUMERIC_INTERVAL_DETAIL_BCC_ROUNDING_CONTROL_HPP
12
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_BCC_ROUNDING_CONTROL_HPP
13
+
14
+ #if !defined(__BORLANDC__) || defined(__clang__)
15
+ # error This header is only intended for Borland C++.
16
+ #endif
17
+
18
+ #ifndef _M_IX86
19
+ # error This header only works on x86 CPUs.
20
+ #endif
21
+
22
+ #include <float.h> // Borland C++ rounding control
23
+
24
+ namespace boost {
25
+ namespace numeric {
26
+ namespace interval_lib {
27
+ namespace detail {
28
+
29
+ #ifndef BOOST_NUMERIC_INTERVAL_KEEP_EXCEPTIONS_FOR_BCC
30
+ extern "C" { unsigned int _RTLENTRY _fm_init(void); }
31
+
32
+ struct borland_workaround {
33
+ borland_workaround() { _fm_init(); }
34
+ };
35
+
36
+ static borland_workaround borland_workaround_exec;
37
+ #endif // BOOST_NUMERIC_INTERVAL_KEEP_EXCEPTIONS_FOR_BCC
38
+
39
+ __inline double rint(double)
40
+ { __emit__(0xD9); __emit__(0xFC); /* asm FRNDINT */ }
41
+
42
+ struct x86_rounding
43
+ {
44
+ typedef unsigned int rounding_mode;
45
+ static void get_rounding_mode(rounding_mode& mode)
46
+ { mode = _control87(0, 0); }
47
+ static void set_rounding_mode(const rounding_mode mode)
48
+ { _control87(mode, 0xffff); }
49
+ static double to_int(const double& x) { return rint(x); }
50
+ };
51
+
52
+ } // namespace detail
53
+ } // namespace interval_lib
54
+ } // namespace numeric
55
+ } // namespace boost
56
+
57
+ #endif /* BOOST_NUMERIC_INTERVAL_DETAIL_BCC_ROUNDING_CONTROL_HPP */
@@ -0,0 +1,48 @@
1
+ /* Boost interval/detail/bugs.hpp file
2
+ *
3
+ * Copyright 2000 Jens Maurer
4
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * (See accompanying file LICENSE_1_0.txt or
8
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ */
10
+
11
+ #ifndef BOOST_NUMERIC_INTERVAL_DETAIL_BUGS
12
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_BUGS
13
+
14
+ #include <boost/config.hpp>
15
+
16
+ #if defined(__GLIBC__) && (defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED) || defined(__USE_ISOC99)) && !defined(__ICC)
17
+ # define BOOST_HAS_INV_HYPERBOLIC
18
+ #endif
19
+
20
+ #ifdef BOOST_NO_STDC_NAMESPACE
21
+ # define BOOST_NUMERIC_INTERVAL_using_math(a) using ::a
22
+ # ifdef BOOST_HAS_INV_HYPERBOLIC
23
+ # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using ::a
24
+ # endif
25
+ #else
26
+ # define BOOST_NUMERIC_INTERVAL_using_math(a) using std::a
27
+ # if defined(BOOST_HAS_INV_HYPERBOLIC)
28
+ # if defined(__GLIBCPP__) || defined(__GLIBCXX__)
29
+ # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using ::a
30
+ # else
31
+ # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using std::a
32
+ # endif
33
+ # endif
34
+ #endif
35
+
36
+ #if defined(__COMO__) || defined(BOOST_INTEL)
37
+ # define BOOST_NUMERIC_INTERVAL_using_max(a) using std::a
38
+ #elif defined(BOOST_NO_STDC_NAMESPACE)
39
+ # define BOOST_NUMERIC_INTERVAL_using_max(a) using ::a
40
+ #else
41
+ # define BOOST_NUMERIC_INTERVAL_using_max(a) using std::a
42
+ #endif
43
+
44
+ #ifndef BOOST_NUMERIC_INTERVAL_using_ahyp
45
+ # define BOOST_NUMERIC_INTERVAL_using_ahyp(a)
46
+ #endif
47
+
48
+ #endif // BOOST_NUMERIC_INTERVAL_DETAIL_BUGS