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.
- package/README.md +29 -2
- package/boost/cast.hpp +20 -0
- package/boost/numeric/conversion/bounds.hpp +24 -0
- package/boost/numeric/conversion/cast.hpp +61 -0
- package/boost/numeric/conversion/conversion_traits.hpp +32 -0
- package/boost/numeric/conversion/converter.hpp +68 -0
- package/boost/numeric/conversion/converter_policies.hpp +194 -0
- package/boost/numeric/conversion/detail/bounds.hpp +58 -0
- package/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
- package/boost/numeric/conversion/detail/converter.hpp +593 -0
- package/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
- package/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
- package/boost/numeric/conversion/detail/meta.hpp +120 -0
- package/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
- package/boost/numeric/conversion/detail/old_numeric_cast.hpp +308 -0
- package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
- package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
- package/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
- package/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
- package/boost/numeric/conversion/int_float_mixture.hpp +30 -0
- package/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
- package/boost/numeric/conversion/is_subranged.hpp +27 -0
- package/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
- package/boost/numeric/conversion/sign_mixture.hpp +30 -0
- package/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
- package/boost/numeric/conversion/udt_builtin_mixture.hpp +28 -0
- package/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
- package/boost/numeric/interval/arith.hpp +305 -0
- package/boost/numeric/interval/arith2.hpp +304 -0
- package/boost/numeric/interval/arith3.hpp +69 -0
- package/boost/numeric/interval/checking.hpp +130 -0
- package/boost/numeric/interval/compare/certain.hpp +113 -0
- package/boost/numeric/interval/compare/explicit.hpp +248 -0
- package/boost/numeric/interval/compare/lexicographic.hpp +122 -0
- package/boost/numeric/interval/compare/possible.hpp +113 -0
- package/boost/numeric/interval/compare/set.hpp +101 -0
- package/boost/numeric/interval/compare/tribool.hpp +138 -0
- package/boost/numeric/interval/compare.hpp +19 -0
- package/boost/numeric/interval/constants.hpp +85 -0
- package/boost/numeric/interval/detail/alpha_rounding_control.hpp +113 -0
- package/boost/numeric/interval/detail/bcc_rounding_control.hpp +57 -0
- package/boost/numeric/interval/detail/bugs.hpp +48 -0
- package/boost/numeric/interval/detail/c99_rounding_control.hpp +50 -0
- package/boost/numeric/interval/detail/c99sub_rounding_control.hpp +43 -0
- package/boost/numeric/interval/detail/division.hpp +194 -0
- package/boost/numeric/interval/detail/ia64_rounding_control.hpp +83 -0
- package/boost/numeric/interval/detail/interval_prototype.hpp +41 -0
- package/boost/numeric/interval/detail/msvc_rounding_control.hpp +113 -0
- package/boost/numeric/interval/detail/ppc_rounding_control.hpp +99 -0
- package/boost/numeric/interval/detail/sparc_rounding_control.hpp +112 -0
- package/boost/numeric/interval/detail/test_input.hpp +76 -0
- package/boost/numeric/interval/detail/x86_rounding_control.hpp +108 -0
- package/boost/numeric/interval/detail/x86gcc_rounding_control.hpp +51 -0
- package/boost/numeric/interval/ext/integer.hpp +70 -0
- package/boost/numeric/interval/ext/x86_fast_rounding_control.hpp +70 -0
- package/boost/numeric/interval/hw_rounding.hpp +73 -0
- package/boost/numeric/interval/interval.hpp +450 -0
- package/boost/numeric/interval/io.hpp +41 -0
- package/boost/numeric/interval/limits.hpp +49 -0
- package/boost/numeric/interval/policies.hpp +75 -0
- package/boost/numeric/interval/rounded_arith.hpp +120 -0
- package/boost/numeric/interval/rounded_transc.hpp +140 -0
- package/boost/numeric/interval/rounding.hpp +101 -0
- package/boost/numeric/interval/transc.hpp +232 -0
- package/boost/numeric/interval/utility.hpp +335 -0
- package/boost/numeric/interval/utility_fwd.hpp +172 -0
- package/boost/numeric/interval.hpp +32 -0
- package/boost/numeric/odeint/algebra/algebra_dispatcher.hpp +86 -0
- package/boost/numeric/odeint/algebra/array_algebra.hpp +293 -0
- package/boost/numeric/odeint/algebra/default_operations.hpp +599 -0
- package/boost/numeric/odeint/algebra/detail/extract_value_type.hpp +51 -0
- package/boost/numeric/odeint/algebra/detail/for_each.hpp +165 -0
- package/boost/numeric/odeint/algebra/detail/macros.hpp +35 -0
- package/boost/numeric/odeint/algebra/detail/norm_inf.hpp +46 -0
- package/boost/numeric/odeint/algebra/fusion_algebra.hpp +216 -0
- package/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp +48 -0
- package/boost/numeric/odeint/algebra/multi_array_algebra.hpp +146 -0
- package/boost/numeric/odeint/algebra/norm_result_type.hpp +33 -0
- package/boost/numeric/odeint/algebra/operations_dispatcher.hpp +41 -0
- package/boost/numeric/odeint/algebra/range_algebra.hpp +142 -0
- package/boost/numeric/odeint/algebra/vector_space_algebra.hpp +175 -0
- package/boost/numeric/odeint/config.hpp +53 -0
- package/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp +55 -0
- package/boost/numeric/odeint/external/blaze/blaze_resize.hpp +64 -0
- package/boost/numeric/odeint/external/compute/compute.hpp +27 -0
- package/boost/numeric/odeint/external/compute/compute_algebra.hpp +65 -0
- package/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp +41 -0
- package/boost/numeric/odeint/external/compute/compute_operations.hpp +198 -0
- package/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp +44 -0
- package/boost/numeric/odeint/external/compute/compute_resize.hpp +92 -0
- package/boost/numeric/odeint/external/eigen/eigen.hpp +27 -0
- package/boost/numeric/odeint/external/eigen/eigen_algebra.hpp +98 -0
- package/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp +49 -0
- package/boost/numeric/odeint/external/eigen/eigen_resize.hpp +103 -0
- package/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp +228 -0
- package/boost/numeric/odeint/external/mkl/mkl_operations.hpp +181 -0
- package/boost/numeric/odeint/external/mpi/mpi.hpp +25 -0
- package/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp +62 -0
- package/boost/numeric/odeint/external/mpi/mpi_state.hpp +113 -0
- package/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp +95 -0
- package/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp +161 -0
- package/boost/numeric/odeint/external/mtl4/mtl4.hpp +23 -0
- package/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp +99 -0
- package/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp +134 -0
- package/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp +25 -0
- package/boost/numeric/odeint/external/nt2/nt2_copy.hpp +33 -0
- package/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp +31 -0
- package/boost/numeric/odeint/external/nt2/nt2_resize.hpp +54 -0
- package/boost/numeric/odeint/external/openmp/openmp.hpp +31 -0
- package/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp +281 -0
- package/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp +276 -0
- package/boost/numeric/odeint/external/openmp/openmp_state.hpp +172 -0
- package/boost/numeric/odeint/external/thrust/thrust.hpp +27 -0
- package/boost/numeric/odeint/external/thrust/thrust_algebra.hpp +217 -0
- package/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp +118 -0
- package/boost/numeric/odeint/external/thrust/thrust_operations.hpp +233 -0
- package/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp +118 -0
- package/boost/numeric/odeint/external/thrust/thrust_resize.hpp +197 -0
- package/boost/numeric/odeint/external/vexcl/vexcl.hpp +28 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp +61 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp +51 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp +55 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp +68 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp +96 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp +58 -0
- package/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp +226 -0
- package/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp +68 -0
- package/boost/numeric/odeint/integrate/check_adapter.hpp +222 -0
- package/boost/numeric/odeint/integrate/detail/functors.hpp +70 -0
- package/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp +161 -0
- package/boost/numeric/odeint/integrate/detail/integrate_const.hpp +167 -0
- package/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp +161 -0
- package/boost/numeric/odeint/integrate/detail/integrate_times.hpp +179 -0
- package/boost/numeric/odeint/integrate/integrate.hpp +133 -0
- package/boost/numeric/odeint/integrate/integrate_adaptive.hpp +127 -0
- package/boost/numeric/odeint/integrate/integrate_const.hpp +195 -0
- package/boost/numeric/odeint/integrate/integrate_n_steps.hpp +178 -0
- package/boost/numeric/odeint/integrate/integrate_times.hpp +220 -0
- package/boost/numeric/odeint/integrate/max_step_checker.hpp +114 -0
- package/boost/numeric/odeint/integrate/null_observer.hpp +38 -0
- package/boost/numeric/odeint/integrate/observer_collection.hpp +55 -0
- package/boost/numeric/odeint/iterator/adaptive_iterator.hpp +183 -0
- package/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp +175 -0
- package/boost/numeric/odeint/iterator/const_step_iterator.hpp +180 -0
- package/boost/numeric/odeint/iterator/const_step_time_iterator.hpp +173 -0
- package/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp +199 -0
- package/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp +251 -0
- package/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp +228 -0
- package/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp +239 -0
- package/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp +369 -0
- package/boost/numeric/odeint/iterator/integrate/detail/functors.hpp +70 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp +121 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp +111 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp +107 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp +67 -0
- package/boost/numeric/odeint/iterator/integrate/integrate.hpp +111 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp +127 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_const.hpp +158 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp +123 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_times.hpp +131 -0
- package/boost/numeric/odeint/iterator/integrate/null_observer.hpp +38 -0
- package/boost/numeric/odeint/iterator/integrate/observer_collection.hpp +55 -0
- package/boost/numeric/odeint/iterator/n_step_iterator.hpp +168 -0
- package/boost/numeric/odeint/iterator/n_step_time_iterator.hpp +169 -0
- package/boost/numeric/odeint/iterator/times_iterator.hpp +189 -0
- package/boost/numeric/odeint/iterator/times_time_iterator.hpp +193 -0
- package/boost/numeric/odeint/stepper/adams_bashforth.hpp +418 -0
- package/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp +313 -0
- package/boost/numeric/odeint/stepper/adams_moulton.hpp +201 -0
- package/boost/numeric/odeint/stepper/adaptive_adams_bashforth_moulton.hpp +237 -0
- package/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp +91 -0
- package/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp +588 -0
- package/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp +677 -0
- package/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp +415 -0
- package/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp +431 -0
- package/boost/numeric/odeint/stepper/bulirsch_stoer.hpp +642 -0
- package/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp +838 -0
- package/boost/numeric/odeint/stepper/controlled_adams_bashforth_moulton.hpp +322 -0
- package/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp +1018 -0
- package/boost/numeric/odeint/stepper/controlled_step_result.hpp +42 -0
- package/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp +476 -0
- package/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp +148 -0
- package/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp +168 -0
- package/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp +148 -0
- package/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp +168 -0
- package/boost/numeric/odeint/stepper/detail/adaptive_adams_coefficients.hpp +207 -0
- package/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp +247 -0
- package/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp +263 -0
- package/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp +252 -0
- package/boost/numeric/odeint/stepper/detail/pid_step_adjuster.hpp +199 -0
- package/boost/numeric/odeint/stepper/detail/pid_step_adjuster_coefficients.hpp +180 -0
- package/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp +84 -0
- package/boost/numeric/odeint/stepper/euler.hpp +166 -0
- package/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp +255 -0
- package/boost/numeric/odeint/stepper/explicit_generic_rk.hpp +246 -0
- package/boost/numeric/odeint/stepper/extrapolation_stepper.hpp +288 -0
- package/boost/numeric/odeint/stepper/generation/generation_controlled_adams_bashforth_moulton.hpp +59 -0
- package/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp +61 -0
- package/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp +65 -0
- package/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp +79 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp +47 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp +48 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp +56 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp +46 -0
- package/boost/numeric/odeint/stepper/generation/make_controlled.hpp +103 -0
- package/boost/numeric/odeint/stepper/generation/make_dense_output.hpp +100 -0
- package/boost/numeric/odeint/stepper/generation.hpp +37 -0
- package/boost/numeric/odeint/stepper/implicit_euler.hpp +170 -0
- package/boost/numeric/odeint/stepper/modified_midpoint.hpp +315 -0
- package/boost/numeric/odeint/stepper/rosenbrock4.hpp +346 -0
- package/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp +240 -0
- package/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp +204 -0
- package/boost/numeric/odeint/stepper/runge_kutta4.hpp +181 -0
- package/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp +232 -0
- package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp +231 -0
- package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp +289 -0
- package/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp +403 -0
- package/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp +374 -0
- package/boost/numeric/odeint/stepper/stepper_categories.hpp +66 -0
- package/boost/numeric/odeint/stepper/symplectic_euler.hpp +136 -0
- package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp +160 -0
- package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp +162 -0
- package/boost/numeric/odeint/stepper/velocity_verlet.hpp +375 -0
- package/boost/numeric/odeint/tools/assert.hpp +30 -0
- package/boost/numeric/odeint/tools/is_standalone.hpp +21 -0
- package/boost/numeric/odeint/tools/traits.hpp +39 -0
- package/boost/numeric/odeint/util/bind.hpp +35 -0
- package/boost/numeric/odeint/util/copy.hpp +88 -0
- package/boost/numeric/odeint/util/detail/is_range.hpp +127 -0
- package/boost/numeric/odeint/util/detail/less_with_sign.hpp +78 -0
- package/boost/numeric/odeint/util/is_pair.hpp +42 -0
- package/boost/numeric/odeint/util/is_resizeable.hpp +84 -0
- package/boost/numeric/odeint/util/multi_array_adaption.hpp +131 -0
- package/boost/numeric/odeint/util/n_ary_helper.hpp +96 -0
- package/boost/numeric/odeint/util/odeint_error.hpp +77 -0
- package/boost/numeric/odeint/util/resize.hpp +120 -0
- package/boost/numeric/odeint/util/resizer.hpp +94 -0
- package/boost/numeric/odeint/util/same_instance.hpp +56 -0
- package/boost/numeric/odeint/util/same_size.hpp +117 -0
- package/boost/numeric/odeint/util/split.hpp +64 -0
- package/boost/numeric/odeint/util/split_adaptor.hpp +103 -0
- package/boost/numeric/odeint/util/state_wrapper.hpp +50 -0
- package/boost/numeric/odeint/util/stepper_traits.hpp +63 -0
- package/boost/numeric/odeint/util/ublas_matrix_expression.patch +6 -0
- package/boost/numeric/odeint/util/ublas_wrapper.hpp +297 -0
- package/boost/numeric/odeint/util/unit_helper.hpp +151 -0
- package/boost/numeric/odeint/util/unwrap_reference.hpp +141 -0
- package/boost/numeric/odeint/version.hpp +55 -0
- package/boost/numeric/odeint.hpp +87 -0
- package/boost/numeric/ublas/assignment.hpp +1288 -0
- package/boost/numeric/ublas/banded.hpp +2372 -0
- package/boost/numeric/ublas/blas.hpp +499 -0
- package/boost/numeric/ublas/detail/concepts.hpp +1465 -0
- package/boost/numeric/ublas/detail/config.hpp +304 -0
- package/boost/numeric/ublas/detail/definitions.hpp +212 -0
- package/boost/numeric/ublas/detail/documentation.hpp +33 -0
- package/boost/numeric/ublas/detail/duff.hpp +56 -0
- package/boost/numeric/ublas/detail/iterator.hpp +1448 -0
- package/boost/numeric/ublas/detail/matrix_assign.hpp +1785 -0
- package/boost/numeric/ublas/detail/raw.hpp +878 -0
- package/boost/numeric/ublas/detail/returntype_deduction.hpp +174 -0
- package/boost/numeric/ublas/detail/temporary.hpp +33 -0
- package/boost/numeric/ublas/detail/vector_assign.hpp +609 -0
- package/boost/numeric/ublas/doxydoc.hpp +58 -0
- package/boost/numeric/ublas/exception.hpp +297 -0
- package/boost/numeric/ublas/experimental/sparse_view.hpp +317 -0
- package/boost/numeric/ublas/expression_types.hpp +506 -0
- package/boost/numeric/ublas/functional.hpp +2112 -0
- package/boost/numeric/ublas/fwd.hpp +229 -0
- package/boost/numeric/ublas/hermitian.hpp +2633 -0
- package/boost/numeric/ublas/io.hpp +355 -0
- package/boost/numeric/ublas/lu.hpp +350 -0
- package/boost/numeric/ublas/matrix.hpp +6013 -0
- package/boost/numeric/ublas/matrix_expression.hpp +5693 -0
- package/boost/numeric/ublas/matrix_proxy.hpp +5457 -0
- package/boost/numeric/ublas/matrix_sparse.hpp +5773 -0
- package/boost/numeric/ublas/matrix_vector.hpp +406 -0
- package/boost/numeric/ublas/opencl/elementwise.hpp +508 -0
- package/boost/numeric/ublas/opencl/library.hpp +38 -0
- package/boost/numeric/ublas/opencl/matrix.hpp +123 -0
- package/boost/numeric/ublas/opencl/misc.hpp +182 -0
- package/boost/numeric/ublas/opencl/operations.hpp +18 -0
- package/boost/numeric/ublas/opencl/prod.hpp +364 -0
- package/boost/numeric/ublas/opencl/transpose.hpp +142 -0
- package/boost/numeric/ublas/opencl/vector.hpp +90 -0
- package/boost/numeric/ublas/opencl.hpp +16 -0
- package/boost/numeric/ublas/operation/begin.hpp +318 -0
- package/boost/numeric/ublas/operation/c_array.hpp +41 -0
- package/boost/numeric/ublas/operation/end.hpp +318 -0
- package/boost/numeric/ublas/operation/num_columns.hpp +45 -0
- package/boost/numeric/ublas/operation/num_rows.hpp +44 -0
- package/boost/numeric/ublas/operation/size.hpp +350 -0
- package/boost/numeric/ublas/operation.hpp +830 -0
- package/boost/numeric/ublas/operation_blocked.hpp +266 -0
- package/boost/numeric/ublas/operation_sparse.hpp +198 -0
- package/boost/numeric/ublas/operations.hpp +26 -0
- package/boost/numeric/ublas/storage.hpp +2131 -0
- package/boost/numeric/ublas/storage_sparse.hpp +578 -0
- package/boost/numeric/ublas/symmetric.hpp +2309 -0
- package/boost/numeric/ublas/tags.hpp +37 -0
- package/boost/numeric/ublas/tensor/algorithms.hpp +345 -0
- package/boost/numeric/ublas/tensor/expression.hpp +181 -0
- package/boost/numeric/ublas/tensor/expression_evaluation.hpp +288 -0
- package/boost/numeric/ublas/tensor/extents.hpp +335 -0
- package/boost/numeric/ublas/tensor/functions.hpp +558 -0
- package/boost/numeric/ublas/tensor/index.hpp +89 -0
- package/boost/numeric/ublas/tensor/multi_index.hpp +110 -0
- package/boost/numeric/ublas/tensor/multi_index_utility.hpp +364 -0
- package/boost/numeric/ublas/tensor/multiplication.hpp +945 -0
- package/boost/numeric/ublas/tensor/operators_arithmetic.hpp +244 -0
- package/boost/numeric/ublas/tensor/operators_comparison.hpp +175 -0
- package/boost/numeric/ublas/tensor/ostream.hpp +122 -0
- package/boost/numeric/ublas/tensor/storage_traits.hpp +84 -0
- package/boost/numeric/ublas/tensor/strides.hpp +251 -0
- package/boost/numeric/ublas/tensor/tensor.hpp +734 -0
- package/boost/numeric/ublas/tensor.hpp +26 -0
- package/boost/numeric/ublas/traits/c_array.hpp +110 -0
- package/boost/numeric/ublas/traits/const_iterator_type.hpp +127 -0
- package/boost/numeric/ublas/traits/iterator_type.hpp +126 -0
- package/boost/numeric/ublas/traits.hpp +753 -0
- package/boost/numeric/ublas/triangular.hpp +2775 -0
- package/boost/numeric/ublas/vector.hpp +2947 -0
- package/boost/numeric/ublas/vector_expression.hpp +1762 -0
- package/boost/numeric/ublas/vector_of_vector.hpp +1347 -0
- package/boost/numeric/ublas/vector_proxy.hpp +1697 -0
- package/boost/numeric/ublas/vector_sparse.hpp +2246 -0
- 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
|