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,69 @@
1
+ /* Boost interval/arith3.hpp template implementation file
2
+ *
3
+ * This headers provides arithmetical functions
4
+ * which compute an interval given some base
5
+ * numbers. The resulting interval encloses the
6
+ * real result of the arithmetic operation.
7
+ *
8
+ * Copyright 2003 Guillaume Melquiond
9
+ *
10
+ * Distributed under the Boost Software License, Version 1.0.
11
+ * (See accompanying file LICENSE_1_0.txt or
12
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
13
+ */
14
+
15
+ #ifndef BOOST_NUMERIC_INTERVAL_ARITH3_HPP
16
+ #define BOOST_NUMERIC_INTERVAL_ARITH3_HPP
17
+
18
+ #include <boost/numeric/interval/detail/interval_prototype.hpp>
19
+ #include <boost/numeric/interval/detail/test_input.hpp>
20
+
21
+ namespace boost {
22
+ namespace numeric {
23
+ namespace interval_lib {
24
+
25
+ template<class I> inline
26
+ I add(const typename I::base_type& x, const typename I::base_type& y)
27
+ {
28
+ typedef typename I::traits_type Policies;
29
+ if (detail::test_input<typename I::base_type, Policies>(x, y))
30
+ return I::empty();
31
+ typename Policies::rounding rnd;
32
+ return I(rnd.add_down(x, y), rnd.add_up(x, y), true);
33
+ }
34
+
35
+ template<class I> inline
36
+ I sub(const typename I::base_type& x, const typename I::base_type& y)
37
+ {
38
+ typedef typename I::traits_type Policies;
39
+ if (detail::test_input<typename I::base_type, Policies>(x, y))
40
+ return I::empty();
41
+ typename Policies::rounding rnd;
42
+ return I(rnd.sub_down(x, y), rnd.sub_up(x, y), true);
43
+ }
44
+
45
+ template<class I> inline
46
+ I mul(const typename I::base_type& x, const typename I::base_type& y)
47
+ {
48
+ typedef typename I::traits_type Policies;
49
+ if (detail::test_input<typename I::base_type, Policies>(x, y))
50
+ return I::empty();
51
+ typename Policies::rounding rnd;
52
+ return I(rnd.mul_down(x, y), rnd.mul_up(x, y), true);
53
+ }
54
+
55
+ template<class I> inline
56
+ I div(const typename I::base_type& x, const typename I::base_type& y)
57
+ {
58
+ typedef typename I::traits_type Policies;
59
+ if (detail::test_input<typename I::base_type, Policies>(x, y) || user::is_zero(y))
60
+ return I::empty();
61
+ typename Policies::rounding rnd;
62
+ return I(rnd.div_down(x, y), rnd.div_up(x, y), true);
63
+ }
64
+
65
+ } // namespace interval_lib
66
+ } // namespace numeric
67
+ } // namespace boost
68
+
69
+ #endif // BOOST_NUMERIC_INTERVAL_ARITH3_HPP
@@ -0,0 +1,130 @@
1
+ /* Boost interval/checking.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_CHECKING_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_CHECKING_HPP
12
+
13
+ #include <stdexcept>
14
+ #include <string>
15
+ #include <cassert>
16
+ #include <boost/limits.hpp>
17
+
18
+ namespace boost {
19
+ namespace numeric {
20
+ namespace interval_lib {
21
+
22
+ struct exception_create_empty
23
+ {
24
+ void operator()()
25
+ {
26
+ throw std::runtime_error("boost::interval: empty interval created");
27
+ }
28
+ };
29
+
30
+ struct exception_invalid_number
31
+ {
32
+ void operator()()
33
+ {
34
+ throw std::invalid_argument("boost::interval: invalid number");
35
+ }
36
+ };
37
+
38
+ template<class T>
39
+ struct checking_base
40
+ {
41
+ static T pos_inf()
42
+ {
43
+ assert(std::numeric_limits<T>::has_infinity);
44
+ return std::numeric_limits<T>::infinity();
45
+ }
46
+ static T neg_inf()
47
+ {
48
+ assert(std::numeric_limits<T>::has_infinity);
49
+ return -std::numeric_limits<T>::infinity();
50
+ }
51
+ static T nan()
52
+ {
53
+ assert(std::numeric_limits<T>::has_quiet_NaN);
54
+ return std::numeric_limits<T>::quiet_NaN();
55
+ }
56
+ static bool is_nan(const T& x)
57
+ {
58
+ return std::numeric_limits<T>::has_quiet_NaN && (x != x);
59
+ }
60
+ static T empty_lower()
61
+ {
62
+ return (std::numeric_limits<T>::has_quiet_NaN ?
63
+ std::numeric_limits<T>::quiet_NaN() : static_cast<T>(1));
64
+ }
65
+ static T empty_upper()
66
+ {
67
+ return (std::numeric_limits<T>::has_quiet_NaN ?
68
+ std::numeric_limits<T>::quiet_NaN() : static_cast<T>(0));
69
+ }
70
+ static bool is_empty(const T& l, const T& u)
71
+ {
72
+ return !(l <= u); // safety for partial orders
73
+ }
74
+ };
75
+
76
+ template<class T, class Checking = checking_base<T>,
77
+ class Exception = exception_create_empty>
78
+ struct checking_no_empty: Checking
79
+ {
80
+ static T nan()
81
+ {
82
+ assert(false);
83
+ return Checking::nan();
84
+ }
85
+ static T empty_lower()
86
+ {
87
+ Exception()();
88
+ return Checking::empty_lower();
89
+ }
90
+ static T empty_upper()
91
+ {
92
+ Exception()();
93
+ return Checking::empty_upper();
94
+ }
95
+ static bool is_empty(const T&, const T&)
96
+ {
97
+ return false;
98
+ }
99
+ };
100
+
101
+ template<class T, class Checking = checking_base<T> >
102
+ struct checking_no_nan: Checking
103
+ {
104
+ static bool is_nan(const T&)
105
+ {
106
+ return false;
107
+ }
108
+ };
109
+
110
+ template<class T, class Checking = checking_base<T>,
111
+ class Exception = exception_invalid_number>
112
+ struct checking_catch_nan: Checking
113
+ {
114
+ static bool is_nan(const T& x)
115
+ {
116
+ if (Checking::is_nan(x)) Exception()();
117
+ return false;
118
+ }
119
+ };
120
+
121
+ template<class T>
122
+ struct checking_strict:
123
+ checking_no_nan<T, checking_no_empty<T> >
124
+ {};
125
+
126
+ } // namespace interval_lib
127
+ } // namespace numeric
128
+ } // namespace boost
129
+
130
+ #endif // BOOST_NUMERIC_INTERVAL_CHECKING_HPP
@@ -0,0 +1,113 @@
1
+ /* Boost interval/compare/certain.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_CERTAIN_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_CERTAIN_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 certain {
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.upper() < y.lower();
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.upper() < 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.upper() <= y.lower();
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.upper() <= 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.lower() > y.upper();
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.lower() > 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.lower() >= y.upper();
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.lower() >= 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.upper() == y.lower() && x.lower() == y.upper();
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.upper() == y && x.lower() == 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.upper() < y.lower() || x.lower() > y.upper();
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.upper() < y || x.lower() > y;
104
+ }
105
+
106
+ } // namespace certain
107
+ } // namespace compare
108
+ } // namespace interval_lib
109
+ } // namespace numeric
110
+ } // namespace boost
111
+
112
+
113
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_CERTAIN_HPP
@@ -0,0 +1,248 @@
1
+ /* Boost interval/compare/explicit.hpp template implementation 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_COMPARE_EXPLICIT_HPP
12
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_EXPLICIT_HPP
13
+
14
+ #include <boost/numeric/interval/detail/interval_prototype.hpp>
15
+
16
+ namespace boost {
17
+ namespace numeric {
18
+ namespace interval_lib {
19
+
20
+ /*
21
+ * Certainly... operations
22
+ */
23
+
24
+ template<class T, class Policies1, class Policies2> inline
25
+ bool cerlt(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
26
+ {
27
+ return x.upper() < y.lower();
28
+ }
29
+
30
+ template<class T, class Policies> inline
31
+ bool cerlt(const interval<T, Policies>& x, const T& y)
32
+ {
33
+ return x.upper() < y;
34
+ }
35
+
36
+ template<class T, class Policies> inline
37
+ bool cerlt(const T& x, const interval<T, Policies>& y)
38
+ {
39
+ return x < y.lower();
40
+ }
41
+
42
+ template<class T, class Policies1, class Policies2> inline
43
+ bool cerle(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
44
+ {
45
+ return x.upper() <= y.lower();
46
+ }
47
+
48
+ template<class T, class Policies> inline
49
+ bool cerle(const interval<T, Policies>& x, const T& y)
50
+ {
51
+ return x.upper() <= y;
52
+ }
53
+
54
+ template<class T, class Policies> inline
55
+ bool cerle(const T& x, const interval<T, Policies>& y)
56
+ {
57
+ return x <= y.lower();
58
+ }
59
+
60
+ template<class T, class Policies1, class Policies2> inline
61
+ bool cergt(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
62
+ {
63
+ return x.lower() > y.upper();
64
+ }
65
+
66
+ template<class T, class Policies> inline
67
+ bool cergt(const interval<T, Policies>& x, const T& y)
68
+ {
69
+ return x.lower() > y;
70
+ }
71
+
72
+ template<class T, class Policies> inline
73
+ bool cergt(const T& x, const interval<T, Policies>& y)
74
+ {
75
+ return x > y.upper();
76
+ }
77
+
78
+ template<class T, class Policies1, class Policies2> inline
79
+ bool cerge(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
80
+ {
81
+ return x.lower() >= y.upper();
82
+ }
83
+
84
+ template<class T, class Policies> inline
85
+ bool cerge(const interval<T, Policies>& x, const T& y)
86
+ {
87
+ return x.lower() >= y;
88
+ }
89
+
90
+ template<class T, class Policies> inline
91
+ bool cerge(const T& x, const interval<T, Policies>& y)
92
+ {
93
+ return x >= y.upper();
94
+ }
95
+
96
+ template<class T, class Policies1, class Policies2> inline
97
+ bool cereq(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
98
+ {
99
+ return x.lower() == y.upper() && y.lower() == x.upper();
100
+ }
101
+
102
+ template<class T, class Policies> inline
103
+ bool cereq(const interval<T, Policies>& x, const T& y)
104
+ {
105
+ return x.lower() == y && x.upper() == y;
106
+ }
107
+
108
+ template<class T, class Policies> inline
109
+ bool cereq(const T& x, const interval<T, Policies>& y)
110
+ {
111
+ return x == y.lower() && x == y.upper();
112
+ }
113
+
114
+ template<class T, class Policies1, class Policies2> inline
115
+ bool cerne(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
116
+ {
117
+ return x.upper() < y.lower() || y.upper() < x.lower();
118
+ }
119
+
120
+ template<class T, class Policies> inline
121
+ bool cerne(const interval<T, Policies>& x, const T& y)
122
+ {
123
+ return x.upper() < y || y < x.lower();
124
+ }
125
+
126
+ template<class T, class Policies> inline
127
+ bool cerne(const T& x, const interval<T, Policies>& y)
128
+ {
129
+ return x < y.lower() || y.upper() < x;
130
+ }
131
+
132
+ /*
133
+ * Possibly... comparisons
134
+ */
135
+
136
+ template<class T, class Policies1, class Policies2> inline
137
+ bool poslt(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
138
+ {
139
+ return x.lower() < y.upper();
140
+ }
141
+
142
+ template<class T, class Policies> inline
143
+ bool poslt(const interval<T, Policies>& x, const T& y)
144
+ {
145
+ return x.lower() < y;
146
+ }
147
+
148
+ template<class T, class Policies> inline
149
+ bool poslt(const T& x, const interval<T, Policies>& y)
150
+ {
151
+ return x < y.upper();
152
+ }
153
+
154
+ template<class T, class Policies1, class Policies2> inline
155
+ bool posle(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
156
+ {
157
+ return x.lower() <= y.upper();
158
+ }
159
+
160
+ template<class T, class Policies> inline
161
+ bool posle(const interval<T, Policies>& x, const T& y)
162
+ {
163
+ return x.lower() <= y;
164
+ }
165
+
166
+ template<class T, class Policies> inline
167
+ bool posle(const T& x, const interval<T, Policies>& y)
168
+ {
169
+ return x <= y.upper();
170
+ }
171
+
172
+ template<class T, class Policies1, class Policies2> inline
173
+ bool posgt(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
174
+ {
175
+ return x.upper() > y.lower();
176
+ }
177
+
178
+ template<class T, class Policies> inline
179
+ bool posgt(const interval<T, Policies>& x, const T& y)
180
+ {
181
+ return x.upper() > y;
182
+ }
183
+
184
+ template<class T, class Policies> inline
185
+ bool posgt(const T& x, const interval<T, Policies> & y)
186
+ {
187
+ return x > y.lower();
188
+ }
189
+
190
+ template<class T, class Policies1, class Policies2> inline
191
+ bool posge(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
192
+ {
193
+ return x.upper() >= y.lower();
194
+ }
195
+
196
+ template<class T, class Policies> inline
197
+ bool posge(const interval<T, Policies>& x, const T& y)
198
+ {
199
+ return x.upper() >= y;
200
+ }
201
+
202
+ template<class T, class Policies> inline
203
+ bool posge(const T& x, const interval<T, Policies>& y)
204
+ {
205
+ return x >= y.lower();
206
+ }
207
+
208
+ template<class T, class Policies1, class Policies2> inline
209
+ bool poseq(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
210
+ {
211
+ return x.upper() >= y.lower() && y.upper() >= x.lower();
212
+ }
213
+
214
+ template<class T, class Policies> inline
215
+ bool poseq(const interval<T, Policies>& x, const T& y)
216
+ {
217
+ return x.upper() >= y && y >= x.lower();
218
+ }
219
+
220
+ template<class T, class Policies> inline
221
+ bool poseq(const T& x, const interval<T, Policies>& y)
222
+ {
223
+ return x >= y.lower() && y.upper() >= x;
224
+ }
225
+
226
+ template<class T, class Policies1, class Policies2> inline
227
+ bool posne(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
228
+ {
229
+ return x.upper() != y.lower() || y.upper() != x.lower();
230
+ }
231
+
232
+ template<class T, class Policies> inline
233
+ bool posne(const interval<T, Policies>& x, const T& y)
234
+ {
235
+ return x.upper() != y || y != x.lower();
236
+ }
237
+
238
+ template<class T, class Policies> inline
239
+ bool posne(const T& x, const interval<T, Policies>& y)
240
+ {
241
+ return x != y.lower() || y.upper() != x;
242
+ }
243
+
244
+ } // namespace interval_lib
245
+ } // namespace numeric
246
+ } //namespace boost
247
+
248
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_EXPLICIT_HPP
@@ -0,0 +1,122 @@
1
+ /* Boost interval/compare/lexicographic.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_LEXICOGRAPHIC_HPP
11
+ #define BOOST_NUMERIC_INTERVAL_COMPARE_LEXICOGRAPHIC_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 lexicographic {
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
+ const T& xl = x.lower();
27
+ const T& yl = y.lower();
28
+ return xl < yl || (xl == yl && x.upper() < y.upper());
29
+ }
30
+
31
+ template<class T, class Policies> inline
32
+ bool operator<(const interval<T, Policies>& x, const T& y)
33
+ {
34
+ if (detail::test_input(x, y)) throw comparison_error();
35
+ return x.lower() < y;
36
+ }
37
+
38
+ template<class T, class Policies1, class Policies2> inline
39
+ bool operator<=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
40
+ {
41
+ if (detail::test_input(x, y)) throw comparison_error();
42
+ const T& xl = x.lower();
43
+ const T& yl = y.lower();
44
+ return xl < yl || (xl == yl && x.upper() <= y.upper());
45
+ }
46
+
47
+ template<class T, class Policies> inline
48
+ bool operator<=(const interval<T, Policies>& x, const T& y)
49
+ {
50
+ if (detail::test_input(x, y)) throw comparison_error();
51
+ const T& xl = x.lower();
52
+ return xl < y || (xl == y && x.upper() <= y);
53
+ }
54
+
55
+ template<class T, class Policies1, class Policies2> inline
56
+ bool operator>(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
57
+ {
58
+ if (detail::test_input(x, y)) throw comparison_error();
59
+ const T& xl = x.lower();
60
+ const T& yl = y.lower();
61
+ return xl > yl || (xl == yl && x.upper() > y.upper());
62
+ }
63
+
64
+ template<class T, class Policies> inline
65
+ bool operator>(const interval<T, Policies>& x, const T& y)
66
+ {
67
+ if (detail::test_input(x, y)) throw comparison_error();
68
+ const T& xl = x.lower();
69
+ return xl > y || (xl == y && x.upper() > y);
70
+ }
71
+
72
+ template<class T, class Policies1, class Policies2> inline
73
+ bool operator>=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
74
+ {
75
+ if (detail::test_input(x, y)) throw comparison_error();
76
+ const T& xl = x.lower();
77
+ const T& yl = y.lower();
78
+ return xl > yl || (xl == yl && x.upper() >= y.upper());
79
+ }
80
+
81
+ template<class T, class Policies> inline
82
+ bool operator>=(const interval<T, Policies>& x, const T& y)
83
+ {
84
+ if (detail::test_input(x, y)) throw comparison_error();
85
+ return x.lower() >= y;
86
+ }
87
+
88
+ template<class T, class Policies1, class Policies2> inline
89
+ bool operator==(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
90
+ {
91
+ if (detail::test_input(x, y)) throw comparison_error();
92
+ return x.lower() == y.lower() && x.upper() == y.upper();
93
+ }
94
+
95
+ template<class T, class Policies> inline
96
+ bool operator==(const interval<T, Policies>& x, const T& y)
97
+ {
98
+ if (detail::test_input(x, y)) throw comparison_error();
99
+ return x.lower() == y && x.upper() == y;
100
+ }
101
+
102
+ template<class T, class Policies1, class Policies2> inline
103
+ bool operator!=(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
104
+ {
105
+ if (detail::test_input(x, y)) throw comparison_error();
106
+ return x.lower() != y.lower() || x.upper() != y.upper();
107
+ }
108
+
109
+ template<class T, class Policies> inline
110
+ bool operator!=(const interval<T, Policies>& x, const T& y)
111
+ {
112
+ if (detail::test_input(x, y)) throw comparison_error();
113
+ return x.lower() != y || x.upper() != y;
114
+ }
115
+
116
+ } // namespace lexicographic
117
+ } // namespace compare
118
+ } // namespace interval_lib
119
+ } // namespace numeric
120
+ } // namespace boost
121
+
122
+ #endif // BOOST_NUMERIC_INTERVAL_COMPARE_LEXICOGRAPHIC_HPP