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,112 @@
1
+ /* Boost interval/detail/sparc_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
+ * The basic code in this file was kindly provided by Jeremy Siek.
11
+ */
12
+
13
+ #ifndef BOOST_NUMERIC_INTERVAL_DETAIL_SPARC_ROUNDING_CONTROL_HPP
14
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_SPARC_ROUNDING_CONTROL_HPP
15
+
16
+ #if !defined(sparc) && !defined(__sparc__)
17
+ # error This header is only intended for SPARC CPUs.
18
+ #endif
19
+
20
+ #ifdef __SUNPRO_CC
21
+ # include <ieeefp.h>
22
+ #endif
23
+
24
+
25
+ namespace boost {
26
+ namespace numeric {
27
+ namespace interval_lib {
28
+ namespace detail {
29
+
30
+ struct sparc_rounding_control
31
+ {
32
+ typedef unsigned int rounding_mode;
33
+
34
+ static void set_rounding_mode(const rounding_mode& mode)
35
+ {
36
+ # if defined(__GNUC__)
37
+ __asm__ __volatile__("ld %0, %%fsr" : : "m"(mode));
38
+ # elif defined (__SUNPRO_CC)
39
+ fpsetround(fp_rnd(mode));
40
+ # elif defined(__KCC)
41
+ asm("sethi %hi(mode), %o1");
42
+ asm("ld [%o1+%lo(mode)], %fsr");
43
+ # else
44
+ # error Unsupported compiler for Sparc rounding control.
45
+ # endif
46
+ }
47
+
48
+ static void get_rounding_mode(rounding_mode& mode)
49
+ {
50
+ # if defined(__GNUC__)
51
+ __asm__ __volatile__("st %%fsr, %0" : "=m"(mode));
52
+ # elif defined (__SUNPRO_CC)
53
+ mode = fpgetround();
54
+ # elif defined(__KCC)
55
+ # error KCC on Sun SPARC get_round_mode: please fix me
56
+ asm("st %fsr, [mode]");
57
+ # else
58
+ # error Unsupported compiler for Sparc rounding control.
59
+ # endif
60
+ }
61
+
62
+ #if defined(__SUNPRO_CC)
63
+ static void downward() { set_rounding_mode(FP_RM); }
64
+ static void upward() { set_rounding_mode(FP_RP); }
65
+ static void to_nearest() { set_rounding_mode(FP_RN); }
66
+ static void toward_zero() { set_rounding_mode(FP_RZ); }
67
+ #else
68
+ static void downward() { set_rounding_mode(0xc0000000); }
69
+ static void upward() { set_rounding_mode(0x80000000); }
70
+ static void to_nearest() { set_rounding_mode(0x00000000); }
71
+ static void toward_zero() { set_rounding_mode(0x40000000); }
72
+ #endif
73
+ };
74
+
75
+ } // namespace detail
76
+
77
+ extern "C" {
78
+ float rintf(float);
79
+ double rint(double);
80
+ }
81
+
82
+ template<>
83
+ struct rounding_control<float>:
84
+ detail::sparc_rounding_control
85
+ {
86
+ static const float& force_rounding(const float& x) { return x; }
87
+ static float to_int(const float& x) { return rintf(x); }
88
+ };
89
+
90
+ template<>
91
+ struct rounding_control<double>:
92
+ detail::sparc_rounding_control
93
+ {
94
+ static const double& force_rounding(const double& x) { return x; }
95
+ static double to_int(const double& x) { return rint(x); }
96
+ };
97
+
98
+ template<>
99
+ struct rounding_control<long double>:
100
+ detail::sparc_rounding_control
101
+ {
102
+ static const long double& force_rounding(const long double& x) { return x; }
103
+ static long double to_int(const long double& x) { return rint(x); }
104
+ };
105
+
106
+ } // namespace interval_lib
107
+ } // namespace numeric
108
+ } // namespace boost
109
+
110
+ #undef BOOST_NUMERIC_INTERVAL_NO_HARDWARE
111
+
112
+ #endif /* BOOST_NUMERIC_INTERVAL_DETAIL_SPARC_ROUNDING_CONTROL_HPP */
@@ -0,0 +1,76 @@
1
+ /* Boost interval/detail/test_input.hpp 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_DETAIL_TEST_INPUT_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_TEST_INPUT_HPP
12
+
13
+ #include <boost/numeric/interval/detail/interval_prototype.hpp>
14
+
15
+ namespace boost {
16
+ namespace numeric {
17
+ namespace interval_lib {
18
+ namespace user {
19
+
20
+ template<class T> inline
21
+ bool is_zero(T const &v) { return v == static_cast<T>(0); }
22
+
23
+ template<class T> inline
24
+ bool is_neg (T const &v) { return v < static_cast<T>(0); }
25
+
26
+ template<class T> inline
27
+ bool is_pos (T const &v) { return v > static_cast<T>(0); }
28
+
29
+ } // namespace user
30
+
31
+ namespace detail {
32
+
33
+ template<class T, class Policies> inline
34
+ bool test_input(const interval<T, Policies>& x) {
35
+ typedef typename Policies::checking checking;
36
+ return checking::is_empty(x.lower(), x.upper());
37
+ }
38
+
39
+ template<class T, class Policies1, class Policies2> inline
40
+ bool test_input(const interval<T, Policies1>& x, const interval<T, Policies2>& y) {
41
+ typedef typename Policies1::checking checking1;
42
+ typedef typename Policies2::checking checking2;
43
+ return checking1::is_empty(x.lower(), x.upper()) ||
44
+ checking2::is_empty(y.lower(), y.upper());
45
+ }
46
+
47
+ template<class T, class Policies> inline
48
+ bool test_input(const T& x, const interval<T, Policies>& y) {
49
+ typedef typename Policies::checking checking;
50
+ return checking::is_nan(x) || checking::is_empty(y.lower(), y.upper());
51
+ }
52
+
53
+ template<class T, class Policies> inline
54
+ bool test_input(const interval<T, Policies>& x, const T& y) {
55
+ typedef typename Policies::checking checking;
56
+ return checking::is_empty(x.lower(), x.upper()) || checking::is_nan(y);
57
+ }
58
+
59
+ template<class T, class Policies> inline
60
+ bool test_input(const T& x) {
61
+ typedef typename Policies::checking checking;
62
+ return checking::is_nan(x);
63
+ }
64
+
65
+ template<class T, class Policies> inline
66
+ bool test_input(const T& x, const T& y) {
67
+ typedef typename Policies::checking checking;
68
+ return checking::is_nan(x) || checking::is_nan(y);
69
+ }
70
+
71
+ } // namespace detail
72
+ } // namespace interval_lib
73
+ } // namespace numeric
74
+ } // namespace boost
75
+
76
+ #endif // BOOST_NUMERIC_INTERVAL_DETAIL_TEST_INPUT_HPP
@@ -0,0 +1,108 @@
1
+ /* Boost interval/detail/x86_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_X86_ROUNDING_CONTROL_HPP
12
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_X86_ROUNDING_CONTROL_HPP
13
+
14
+ #if defined(__GNUC__) || defined(__BORLANDC__) && defined(__clang__)
15
+ # include <boost/numeric/interval/detail/x86gcc_rounding_control.hpp>
16
+ #elif defined(__BORLANDC__)
17
+ # include <boost/numeric/interval/detail/bcc_rounding_control.hpp>
18
+ #elif defined(_MSC_VER)
19
+ # include <boost/numeric/interval/detail/msvc_rounding_control.hpp>
20
+ #elif defined(__MWERKS__) || defined(__ICC) || defined (__SUNPRO_CC)
21
+ # define BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
22
+ # include <boost/numeric/interval/detail/c99sub_rounding_control.hpp>
23
+ #else
24
+ # error Unsupported C++ compiler.
25
+ #endif
26
+
27
+ namespace boost {
28
+ namespace numeric {
29
+ namespace interval_lib {
30
+
31
+ namespace detail {
32
+
33
+ #ifdef BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
34
+ typedef c99_rounding_control x86_rounding_control;
35
+ #undef BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
36
+ #else
37
+ struct fpu_rounding_modes
38
+ {
39
+ unsigned short to_nearest;
40
+ unsigned short downward;
41
+ unsigned short upward;
42
+ unsigned short toward_zero;
43
+ };
44
+
45
+ // exceptions masked, extended precision
46
+ // hardware default is 0x037f (0x1000 only has a meaning on 287)
47
+ static const fpu_rounding_modes rnd_mode = { 0x137f, 0x177f, 0x1b7f, 0x1f7f };
48
+
49
+ struct x86_rounding_control: x86_rounding
50
+ {
51
+ static void to_nearest() { set_rounding_mode(rnd_mode.to_nearest); }
52
+ static void downward() { set_rounding_mode(rnd_mode.downward); }
53
+ static void upward() { set_rounding_mode(rnd_mode.upward); }
54
+ static void toward_zero() { set_rounding_mode(rnd_mode.toward_zero); }
55
+ };
56
+ #endif // BOOST_NUMERIC_INTERVAL_USE_C99_SUBSYSTEM
57
+
58
+ } // namespace detail
59
+
60
+ template<>
61
+ struct rounding_control<float>: detail::x86_rounding_control
62
+ {
63
+ static float force_rounding(const float& r)
64
+ { volatile float r_ = r; return r_; }
65
+ };
66
+
67
+ template<>
68
+ struct rounding_control<double>: detail::x86_rounding_control
69
+ {
70
+ /*static double force_rounding(double r)
71
+ { asm volatile ("" : "+m"(r) : ); return r; }*/
72
+ static double force_rounding(const double& r)
73
+ { volatile double r_ = r; return r_; }
74
+ };
75
+
76
+ namespace detail {
77
+
78
+ template<bool>
79
+ struct x86_rounding_control_long_double;
80
+
81
+ template<>
82
+ struct x86_rounding_control_long_double<false>: x86_rounding_control
83
+ {
84
+ static long double force_rounding(long double const &r)
85
+ { volatile long double r_ = r; return r_; }
86
+ };
87
+
88
+ template<>
89
+ struct x86_rounding_control_long_double<true>: x86_rounding_control
90
+ {
91
+ static long double const &force_rounding(long double const &r)
92
+ { return r; }
93
+ };
94
+
95
+ } // namespace detail
96
+
97
+ template<>
98
+ struct rounding_control<long double>:
99
+ detail::x86_rounding_control_long_double< (sizeof(long double) >= 10) >
100
+ {};
101
+
102
+ } // namespace interval_lib
103
+ } // namespace numeric
104
+ } // namespace boost
105
+
106
+ #undef BOOST_NUMERIC_INTERVAL_NO_HARDWARE
107
+
108
+ #endif /* BOOST_NUMERIC_INTERVAL_DETAIL_X86_ROUNDING_CONTROL_HPP */
@@ -0,0 +1,51 @@
1
+ /* Boost interval/detail/x86gcc_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_X86GCC_ROUNDING_CONTROL_HPP
12
+ #define BOOST_NUMERIC_INTERVAL_DETAIL_X86GCC_ROUNDING_CONTROL_HPP
13
+
14
+ #if !defined(__GNUC__) && !(defined(__BORLANDC__) && defined(__clang__))
15
+ # error This header only works with GNU CC.
16
+ #endif
17
+
18
+ #if !defined(__i386__) && !defined(__x86_64__)
19
+ # error This header only works on x86 CPUs.
20
+ #endif
21
+
22
+ namespace boost {
23
+ namespace numeric {
24
+ namespace interval_lib {
25
+ namespace detail {
26
+
27
+ struct x86_rounding
28
+ {
29
+ typedef unsigned short rounding_mode;
30
+
31
+ static void set_rounding_mode(const rounding_mode& mode)
32
+ { __asm__ __volatile__ ("fldcw %0" : : "m"(mode)); }
33
+
34
+ static void get_rounding_mode(rounding_mode& mode)
35
+ { __asm__ __volatile__ ("fnstcw %0" : "=m"(mode)); }
36
+
37
+ template<class T>
38
+ static T to_int(T r)
39
+ {
40
+ T r_;
41
+ __asm__ ("frndint" : "=&t"(r_) : "0"(r));
42
+ return r_;
43
+ }
44
+ };
45
+
46
+ } // namespace detail
47
+ } // namespace interval_lib
48
+ } // namespace numeric
49
+ } // namespace boost
50
+
51
+ #endif /* BOOST_NUMERIC_INTERVAL_DETAIL_X86GCC_ROUNDING_CONTROL_HPP */
@@ -0,0 +1,70 @@
1
+ /* Boost interval/ext/integer.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_EXT_INTEGER_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_EXT_INTEGER_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
+
19
+ template<class T, class Policies> inline
20
+ interval<T, Policies> operator+ (const interval<T, Policies>& x, int y)
21
+ {
22
+ return x + static_cast<T>(y);
23
+ }
24
+
25
+ template<class T, class Policies> inline
26
+ interval<T, Policies> operator+ (int x, const interval<T, Policies>& y)
27
+ {
28
+ return static_cast<T>(x) + y;
29
+ }
30
+
31
+ template<class T, class Policies> inline
32
+ interval<T, Policies> operator- (const interval<T, Policies>& x, int y)
33
+ {
34
+ return x - static_cast<T>(y);
35
+ }
36
+
37
+ template<class T, class Policies> inline
38
+ interval<T, Policies> operator- (int x, const interval<T, Policies>& y)
39
+ {
40
+ return static_cast<T>(x) - y;
41
+ }
42
+
43
+ template<class T, class Policies> inline
44
+ interval<T, Policies> operator* (const interval<T, Policies>& x, int y)
45
+ {
46
+ return x * static_cast<T>(y);
47
+ }
48
+
49
+ template<class T, class Policies> inline
50
+ interval<T, Policies> operator* (int x, const interval<T, Policies>& y)
51
+ {
52
+ return static_cast<T>(x) * y;
53
+ }
54
+
55
+ template<class T, class Policies> inline
56
+ interval<T, Policies> operator/ (const interval<T, Policies>& x, int y)
57
+ {
58
+ return x / static_cast<T>(y);
59
+ }
60
+
61
+ template<class T, class Policies> inline
62
+ interval<T, Policies> operator/ (int x, const interval<T, Policies>& y)
63
+ {
64
+ return static_cast<T>(x) / y;
65
+ }
66
+
67
+ } // namespace numeric
68
+ } // namespace boost
69
+
70
+ #endif // BOOST_NUMERIC_INTERVAL_EXT_INTEGER_HPP
@@ -0,0 +1,70 @@
1
+ /* Boost interval/detail/x86gcc_rounding_control.hpp file
2
+ *
3
+ * This header provides a rounding control policy
4
+ * that avoids flushing results to memory. In
5
+ * order for this optimization to be reliable, it
6
+ * should be used only when no underflow or
7
+ * overflow would happen without it. Indeed, only
8
+ * values in range are correctly rounded.
9
+ *
10
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
11
+ *
12
+ * Distributed under the Boost Software License, Version 1.0.
13
+ * (See accompanying file LICENSE_1_0.txt or
14
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
15
+ */
16
+
17
+ #ifndef BOOST_NUMERIC_INTERVAL_EXT_X86_FAST_ROUNDING_CONTROL_HPP
18
+ #define BOOST_NUMERIC_INTERVAL_EXT_X86_FAST_ROUNDING_CONTROL_HPP
19
+
20
+ namespace boost {
21
+ namespace numeric {
22
+ namespace interval_lib {
23
+
24
+ namespace detail {
25
+
26
+ // exceptions masked, expected precision (the mask is 0x0300)
27
+ static const fpu_rounding_modes rnd_mode_f = { 0x107f, 0x147f, 0x187f, 0x1c7f };
28
+ static const fpu_rounding_modes rnd_mode_d = { 0x127f, 0x167f, 0x1a7f, 0x1e7f };
29
+ static const fpu_rounding_modes rnd_mode_l = { 0x137f, 0x177f, 0x1b7f, 0x1f7f };
30
+
31
+ } // namespace detail
32
+
33
+ template<class T>
34
+ struct x86_fast_rounding_control;
35
+
36
+ template<>
37
+ struct x86_fast_rounding_control<float>: detail::x86_rounding
38
+ {
39
+ static void to_nearest() { set_rounding_mode(detail::rnd_mode_f.to_nearest); }
40
+ static void downward() { set_rounding_mode(detail::rnd_mode_f.downward); }
41
+ static void upward() { set_rounding_mode(detail::rnd_mode_f.upward); }
42
+ static void toward_zero() { set_rounding_mode(detail::rnd_mode_f.toward_zero); }
43
+ static const float& force_rounding(const float& r) { return r; }
44
+ };
45
+
46
+ template<>
47
+ struct x86_fast_rounding_control<double>: detail::x86_rounding
48
+ {
49
+ static void to_nearest() { set_rounding_mode(detail::rnd_mode_d.to_nearest); }
50
+ static void downward() { set_rounding_mode(detail::rnd_mode_d.downward); }
51
+ static void upward() { set_rounding_mode(detail::rnd_mode_d.upward); }
52
+ static void toward_zero() { set_rounding_mode(detail::rnd_mode_d.toward_zero); }
53
+ static const double& force_rounding(const double& r) { return r; }
54
+ };
55
+
56
+ template<>
57
+ struct x86_fast_rounding_control<long double>: detail::x86_rounding
58
+ {
59
+ static void to_nearest() { set_rounding_mode(detail::rnd_mode_l.to_nearest); }
60
+ static void downward() { set_rounding_mode(detail::rnd_mode_l.downward); }
61
+ static void upward() { set_rounding_mode(detail::rnd_mode_l.upward); }
62
+ static void toward_zero() { set_rounding_mode(detail::rnd_mode_l.toward_zero); }
63
+ static const long double& force_rounding(const long double& r) { return r; }
64
+ };
65
+
66
+ } // namespace interval_lib
67
+ } // namespace numeric
68
+ } // namespace boost
69
+
70
+ #endif // BOOST_NUMERIC_INTERVAL_EXT_X86_FAST_ROUNDING_CONTROL_HPP
@@ -0,0 +1,73 @@
1
+ /* Boost interval/hw_rounding.hpp template implementation file
2
+ *
3
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
4
+ * Copyright 2005 Guillaume Melquiond
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_HW_ROUNDING_HPP
12
+ #define BOOST_NUMERIC_INTERVAL_HW_ROUNDING_HPP
13
+
14
+ #include <boost/config.hpp>
15
+ #include <boost/numeric/interval/rounding.hpp>
16
+ #include <boost/numeric/interval/rounded_arith.hpp>
17
+
18
+ #define BOOST_NUMERIC_INTERVAL_NO_HARDWARE
19
+
20
+ // define appropriate specialization of rounding_control for built-in types
21
+ #if defined(__x86_64__) && !defined(BOOST_NO_FENV_H)
22
+ # include <boost/numeric/interval/detail/c99_rounding_control.hpp>
23
+ #elif defined(__i386__) || defined(_M_IX86) || defined(__BORLANDC__) && !defined(__clang__) || defined(_M_X64)
24
+ # include <boost/numeric/interval/detail/x86_rounding_control.hpp>
25
+ #elif defined(__i386) && defined(__SUNPRO_CC)
26
+ # include <boost/numeric/interval/detail/x86_rounding_control.hpp>
27
+ #elif defined(powerpc) || defined(__powerpc__) || defined(__ppc__)
28
+ # include <boost/numeric/interval/detail/ppc_rounding_control.hpp>
29
+ #elif defined(sparc) || defined(__sparc__)
30
+ # include <boost/numeric/interval/detail/sparc_rounding_control.hpp>
31
+ #elif defined(alpha) || defined(__alpha__)
32
+ # include <boost/numeric/interval/detail/alpha_rounding_control.hpp>
33
+ #elif defined(ia64) || defined(__ia64) || defined(__ia64__)
34
+ # include <boost/numeric/interval/detail/ia64_rounding_control.hpp>
35
+ #endif
36
+
37
+ #if defined(BOOST_NUMERIC_INTERVAL_NO_HARDWARE) && !defined(BOOST_NO_FENV_H)
38
+ # include <boost/numeric/interval/detail/c99_rounding_control.hpp>
39
+ #endif
40
+
41
+ #if defined(BOOST_NUMERIC_INTERVAL_NO_HARDWARE)
42
+ # undef BOOST_NUMERIC_INTERVAL_NO_HARDWARE
43
+ # error Boost.Numeric.Interval: Please specify rounding control mechanism.
44
+ #endif
45
+
46
+ namespace boost {
47
+ namespace numeric {
48
+ namespace interval_lib {
49
+
50
+ /*
51
+ * Three specializations of rounded_math<T>
52
+ */
53
+
54
+ template<>
55
+ struct rounded_math<float>
56
+ : save_state<rounded_arith_opp<float> >
57
+ {};
58
+
59
+ template<>
60
+ struct rounded_math<double>
61
+ : save_state<rounded_arith_opp<double> >
62
+ {};
63
+
64
+ template<>
65
+ struct rounded_math<long double>
66
+ : save_state<rounded_arith_opp<long double> >
67
+ {};
68
+
69
+ } // namespace interval_lib
70
+ } // namespace numeric
71
+ } // namespace boost
72
+
73
+ #endif // BOOST_NUMERIC_INTERVAL_HW_ROUNDING_HPP