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,450 @@
|
|
|
1
|
+
/* Boost interval/interval.hpp header file
|
|
2
|
+
*
|
|
3
|
+
* Copyright 2002-2003 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_INTERVAL_HPP
|
|
11
|
+
#define BOOST_NUMERIC_INTERVAL_INTERVAL_HPP
|
|
12
|
+
|
|
13
|
+
#include <stdexcept>
|
|
14
|
+
#include <string>
|
|
15
|
+
#include <boost/numeric/interval/detail/interval_prototype.hpp>
|
|
16
|
+
|
|
17
|
+
namespace boost {
|
|
18
|
+
namespace numeric {
|
|
19
|
+
|
|
20
|
+
namespace interval_lib {
|
|
21
|
+
|
|
22
|
+
class comparison_error
|
|
23
|
+
: public std::runtime_error
|
|
24
|
+
{
|
|
25
|
+
public:
|
|
26
|
+
comparison_error()
|
|
27
|
+
: std::runtime_error("boost::interval: uncertain comparison")
|
|
28
|
+
{ }
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
} // namespace interval_lib
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
* interval class
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
template<class T, class Policies>
|
|
38
|
+
class interval
|
|
39
|
+
{
|
|
40
|
+
private:
|
|
41
|
+
struct interval_holder;
|
|
42
|
+
struct number_holder;
|
|
43
|
+
public:
|
|
44
|
+
typedef T base_type;
|
|
45
|
+
typedef Policies traits_type;
|
|
46
|
+
|
|
47
|
+
T const &lower() const;
|
|
48
|
+
T const &upper() const;
|
|
49
|
+
|
|
50
|
+
interval();
|
|
51
|
+
interval(T const &v);
|
|
52
|
+
template<class T1> interval(T1 const &v);
|
|
53
|
+
interval(T const &l, T const &u);
|
|
54
|
+
template<class T1, class T2> interval(T1 const &l, T2 const &u);
|
|
55
|
+
interval(interval<T, Policies> const &r);
|
|
56
|
+
template<class Policies1> interval(interval<T, Policies1> const &r);
|
|
57
|
+
template<class T1, class Policies1> interval(interval<T1, Policies1> const &r);
|
|
58
|
+
|
|
59
|
+
interval &operator=(T const &v);
|
|
60
|
+
template<class T1> interval &operator=(T1 const &v);
|
|
61
|
+
interval &operator=(interval<T, Policies> const &r);
|
|
62
|
+
template<class Policies1> interval &operator=(interval<T, Policies1> const &r);
|
|
63
|
+
template<class T1, class Policies1> interval &operator=(interval<T1, Policies1> const &r);
|
|
64
|
+
|
|
65
|
+
void assign(const T& l, const T& u);
|
|
66
|
+
|
|
67
|
+
static interval empty();
|
|
68
|
+
static interval whole();
|
|
69
|
+
static interval hull(const T& x, const T& y);
|
|
70
|
+
|
|
71
|
+
interval& operator+= (const T& r);
|
|
72
|
+
interval& operator+= (const interval& r);
|
|
73
|
+
interval& operator-= (const T& r);
|
|
74
|
+
interval& operator-= (const interval& r);
|
|
75
|
+
interval& operator*= (const T& r);
|
|
76
|
+
interval& operator*= (const interval& r);
|
|
77
|
+
interval& operator/= (const T& r);
|
|
78
|
+
interval& operator/= (const interval& r);
|
|
79
|
+
|
|
80
|
+
bool operator< (const interval_holder& r) const;
|
|
81
|
+
bool operator> (const interval_holder& r) const;
|
|
82
|
+
bool operator<= (const interval_holder& r) const;
|
|
83
|
+
bool operator>= (const interval_holder& r) const;
|
|
84
|
+
bool operator== (const interval_holder& r) const;
|
|
85
|
+
bool operator!= (const interval_holder& r) const;
|
|
86
|
+
|
|
87
|
+
bool operator< (const number_holder& r) const;
|
|
88
|
+
bool operator> (const number_holder& r) const;
|
|
89
|
+
bool operator<= (const number_holder& r) const;
|
|
90
|
+
bool operator>= (const number_holder& r) const;
|
|
91
|
+
bool operator== (const number_holder& r) const;
|
|
92
|
+
bool operator!= (const number_holder& r) const;
|
|
93
|
+
|
|
94
|
+
// the following is for internal use only, it is not a published interface
|
|
95
|
+
// nevertheless, it's public because friends don't always work correctly.
|
|
96
|
+
interval(const T& l, const T& u, bool): low(l), up(u) {}
|
|
97
|
+
void set_empty();
|
|
98
|
+
void set_whole();
|
|
99
|
+
void set(const T& l, const T& u);
|
|
100
|
+
|
|
101
|
+
private:
|
|
102
|
+
struct interval_holder {
|
|
103
|
+
template<class Policies2>
|
|
104
|
+
interval_holder(const interval<T, Policies2>& r)
|
|
105
|
+
: low(r.lower()), up(r.upper())
|
|
106
|
+
{
|
|
107
|
+
typedef typename Policies2::checking checking2;
|
|
108
|
+
if (checking2::is_empty(low, up))
|
|
109
|
+
throw interval_lib::comparison_error();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const T& low;
|
|
113
|
+
const T& up;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
struct number_holder {
|
|
117
|
+
number_holder(const T& r) : val(r)
|
|
118
|
+
{
|
|
119
|
+
typedef typename Policies::checking checking;
|
|
120
|
+
if (checking::is_nan(r))
|
|
121
|
+
throw interval_lib::comparison_error();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const T& val;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
typedef typename Policies::checking checking;
|
|
128
|
+
typedef typename Policies::rounding rounding;
|
|
129
|
+
|
|
130
|
+
T low;
|
|
131
|
+
T up;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
template<class T, class Policies> inline
|
|
135
|
+
interval<T, Policies>::interval():
|
|
136
|
+
low(static_cast<T>(0)), up(static_cast<T>(0))
|
|
137
|
+
{}
|
|
138
|
+
|
|
139
|
+
template<class T, class Policies> inline
|
|
140
|
+
interval<T, Policies>::interval(T const &v): low(v), up(v)
|
|
141
|
+
{
|
|
142
|
+
if (checking::is_nan(v)) set_empty();
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
template<class T, class Policies> template<class T1> inline
|
|
146
|
+
interval<T, Policies>::interval(T1 const &v)
|
|
147
|
+
{
|
|
148
|
+
if (checking::is_nan(v)) set_empty();
|
|
149
|
+
else {
|
|
150
|
+
rounding rnd;
|
|
151
|
+
low = rnd.conv_down(v);
|
|
152
|
+
up = rnd.conv_up (v);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
template<class T, class Policies> template<class T1, class T2> inline
|
|
157
|
+
interval<T, Policies>::interval(T1 const &l, T2 const &u)
|
|
158
|
+
{
|
|
159
|
+
if (checking::is_nan(l) || checking::is_nan(u) || !(l <= u)) set_empty();
|
|
160
|
+
else {
|
|
161
|
+
rounding rnd;
|
|
162
|
+
low = rnd.conv_down(l);
|
|
163
|
+
up = rnd.conv_up (u);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
template<class T, class Policies> inline
|
|
168
|
+
interval<T, Policies>::interval(T const &l, T const &u): low(l), up(u)
|
|
169
|
+
{
|
|
170
|
+
if (checking::is_nan(l) || checking::is_nan(u) || !(l <= u))
|
|
171
|
+
set_empty();
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
template<class T, class Policies> inline
|
|
176
|
+
interval<T, Policies>::interval(interval<T, Policies> const &r): low(r.lower()), up(r.upper())
|
|
177
|
+
{}
|
|
178
|
+
|
|
179
|
+
template<class T, class Policies> template<class Policies1> inline
|
|
180
|
+
interval<T, Policies>::interval(interval<T, Policies1> const &r): low(r.lower()), up(r.upper())
|
|
181
|
+
{
|
|
182
|
+
typedef typename Policies1::checking checking1;
|
|
183
|
+
if (checking1::is_empty(r.lower(), r.upper())) set_empty();
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
template<class T, class Policies> template<class T1, class Policies1> inline
|
|
187
|
+
interval<T, Policies>::interval(interval<T1, Policies1> const &r)
|
|
188
|
+
{
|
|
189
|
+
typedef typename Policies1::checking checking1;
|
|
190
|
+
if (checking1::is_empty(r.lower(), r.upper())) set_empty();
|
|
191
|
+
else {
|
|
192
|
+
rounding rnd;
|
|
193
|
+
low = rnd.conv_down(r.lower());
|
|
194
|
+
up = rnd.conv_up (r.upper());
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
template<class T, class Policies> inline
|
|
199
|
+
interval<T, Policies> &interval<T, Policies>::operator=(T const &v)
|
|
200
|
+
{
|
|
201
|
+
if (checking::is_nan(v)) set_empty();
|
|
202
|
+
else low = up = v;
|
|
203
|
+
return *this;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
template<class T, class Policies> template<class T1> inline
|
|
207
|
+
interval<T, Policies> &interval<T, Policies>::operator=(T1 const &v)
|
|
208
|
+
{
|
|
209
|
+
if (checking::is_nan(v)) set_empty();
|
|
210
|
+
else {
|
|
211
|
+
rounding rnd;
|
|
212
|
+
low = rnd.conv_down(v);
|
|
213
|
+
up = rnd.conv_up (v);
|
|
214
|
+
}
|
|
215
|
+
return *this;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
template<class T, class Policies> inline
|
|
219
|
+
interval<T, Policies> &interval<T, Policies>::operator=(interval<T, Policies> const &r)
|
|
220
|
+
{
|
|
221
|
+
low = r.lower();
|
|
222
|
+
up = r.upper();
|
|
223
|
+
return *this;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
template<class T, class Policies> template<class Policies1> inline
|
|
227
|
+
interval<T, Policies> &interval<T, Policies>::operator=(interval<T, Policies1> const &r)
|
|
228
|
+
{
|
|
229
|
+
typedef typename Policies1::checking checking1;
|
|
230
|
+
if (checking1::is_empty(r.lower(), r.upper())) set_empty();
|
|
231
|
+
else {
|
|
232
|
+
low = r.lower();
|
|
233
|
+
up = r.upper();
|
|
234
|
+
}
|
|
235
|
+
return *this;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
template<class T, class Policies> template<class T1, class Policies1> inline
|
|
239
|
+
interval<T, Policies> &interval<T, Policies>::operator=(interval<T1, Policies1> const &r)
|
|
240
|
+
{
|
|
241
|
+
typedef typename Policies1::checking checking1;
|
|
242
|
+
if (checking1::is_empty(r.lower(), r.upper())) set_empty();
|
|
243
|
+
else {
|
|
244
|
+
rounding rnd;
|
|
245
|
+
low = rnd.conv_down(r.lower());
|
|
246
|
+
up = rnd.conv_up (r.upper());
|
|
247
|
+
}
|
|
248
|
+
return *this;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
template<class T, class Policies> inline
|
|
252
|
+
void interval<T, Policies>::assign(const T& l, const T& u)
|
|
253
|
+
{
|
|
254
|
+
if (checking::is_nan(l) || checking::is_nan(u) || !(l <= u))
|
|
255
|
+
set_empty();
|
|
256
|
+
else set(l, u);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
template<class T, class Policies> inline
|
|
260
|
+
void interval<T, Policies>::set(const T& l, const T& u)
|
|
261
|
+
{
|
|
262
|
+
low = l;
|
|
263
|
+
up = u;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
template<class T, class Policies> inline
|
|
267
|
+
void interval<T, Policies>::set_empty()
|
|
268
|
+
{
|
|
269
|
+
low = checking::empty_lower();
|
|
270
|
+
up = checking::empty_upper();
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
template<class T, class Policies> inline
|
|
274
|
+
void interval<T, Policies>::set_whole()
|
|
275
|
+
{
|
|
276
|
+
low = checking::neg_inf();
|
|
277
|
+
up = checking::pos_inf();
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
template<class T, class Policies> inline
|
|
281
|
+
interval<T, Policies> interval<T, Policies>::hull(const T& x, const T& y)
|
|
282
|
+
{
|
|
283
|
+
bool bad_x = checking::is_nan(x);
|
|
284
|
+
bool bad_y = checking::is_nan(y);
|
|
285
|
+
if (bad_x)
|
|
286
|
+
if (bad_y) return interval::empty();
|
|
287
|
+
else return interval(y, y, true);
|
|
288
|
+
else
|
|
289
|
+
if (bad_y) return interval(x, x, true);
|
|
290
|
+
if (x <= y) return interval(x, y, true);
|
|
291
|
+
else return interval(y, x, true);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
template<class T, class Policies> inline
|
|
295
|
+
interval<T, Policies> interval<T, Policies>::empty()
|
|
296
|
+
{
|
|
297
|
+
return interval<T, Policies>(checking::empty_lower(),
|
|
298
|
+
checking::empty_upper(), true);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
template<class T, class Policies> inline
|
|
302
|
+
interval<T, Policies> interval<T, Policies>::whole()
|
|
303
|
+
{
|
|
304
|
+
return interval<T, Policies>(checking::neg_inf(), checking::pos_inf(), true);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
template<class T, class Policies> inline
|
|
308
|
+
const T& interval<T, Policies>::lower() const
|
|
309
|
+
{
|
|
310
|
+
return low;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
template<class T, class Policies> inline
|
|
314
|
+
const T& interval<T, Policies>::upper() const
|
|
315
|
+
{
|
|
316
|
+
return up;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/*
|
|
320
|
+
* interval/interval comparisons
|
|
321
|
+
*/
|
|
322
|
+
|
|
323
|
+
template<class T, class Policies> inline
|
|
324
|
+
bool interval<T, Policies>::operator< (const interval_holder& r) const
|
|
325
|
+
{
|
|
326
|
+
if (!checking::is_empty(low, up)) {
|
|
327
|
+
if (up < r.low) return true;
|
|
328
|
+
else if (low >= r.up) return false;
|
|
329
|
+
}
|
|
330
|
+
throw interval_lib::comparison_error();
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
template<class T, class Policies> inline
|
|
334
|
+
bool interval<T, Policies>::operator> (const interval_holder& r) const
|
|
335
|
+
{
|
|
336
|
+
if (!checking::is_empty(low, up)) {
|
|
337
|
+
if (low > r.up) return true;
|
|
338
|
+
else if (up <= r.low) return false;
|
|
339
|
+
}
|
|
340
|
+
throw interval_lib::comparison_error();
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
template<class T, class Policies> inline
|
|
344
|
+
bool interval<T, Policies>::operator<= (const interval_holder& r) const
|
|
345
|
+
{
|
|
346
|
+
if (!checking::is_empty(low, up)) {
|
|
347
|
+
if (up <= r.low) return true;
|
|
348
|
+
else if (low > r.up) return false;
|
|
349
|
+
}
|
|
350
|
+
throw interval_lib::comparison_error();
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
template<class T, class Policies> inline
|
|
354
|
+
bool interval<T, Policies>::operator>= (const interval_holder& r) const
|
|
355
|
+
{
|
|
356
|
+
if (!checking::is_empty(low, up)) {
|
|
357
|
+
if (low >= r.up) return true;
|
|
358
|
+
else if (up < r.low) return false;
|
|
359
|
+
}
|
|
360
|
+
throw interval_lib::comparison_error();
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
template<class T, class Policies> inline
|
|
364
|
+
bool interval<T, Policies>::operator== (const interval_holder& r) const
|
|
365
|
+
{
|
|
366
|
+
if (!checking::is_empty(low, up)) {
|
|
367
|
+
if (up == r.low && low == r.up) return true;
|
|
368
|
+
else if (up < r.low || low > r.up) return false;
|
|
369
|
+
}
|
|
370
|
+
throw interval_lib::comparison_error();
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
template<class T, class Policies> inline
|
|
374
|
+
bool interval<T, Policies>::operator!= (const interval_holder& r) const
|
|
375
|
+
{
|
|
376
|
+
if (!checking::is_empty(low, up)) {
|
|
377
|
+
if (up < r.low || low > r.up) return true;
|
|
378
|
+
else if (up == r.low && low == r.up) return false;
|
|
379
|
+
}
|
|
380
|
+
throw interval_lib::comparison_error();
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/*
|
|
384
|
+
* interval/number comparisons
|
|
385
|
+
*/
|
|
386
|
+
|
|
387
|
+
template<class T, class Policies> inline
|
|
388
|
+
bool interval<T, Policies>::operator< (const number_holder& r) const
|
|
389
|
+
{
|
|
390
|
+
if (!checking::is_empty(low, up)) {
|
|
391
|
+
if (up < r.val) return true;
|
|
392
|
+
else if (low >= r.val) return false;
|
|
393
|
+
}
|
|
394
|
+
throw interval_lib::comparison_error();
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
template<class T, class Policies> inline
|
|
398
|
+
bool interval<T, Policies>::operator> (const number_holder& r) const
|
|
399
|
+
{
|
|
400
|
+
if (!checking::is_empty(low, up)) {
|
|
401
|
+
if (low > r.val) return true;
|
|
402
|
+
else if (up <= r.val) return false;
|
|
403
|
+
}
|
|
404
|
+
throw interval_lib::comparison_error();
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
template<class T, class Policies> inline
|
|
408
|
+
bool interval<T, Policies>::operator<= (const number_holder& r) const
|
|
409
|
+
{
|
|
410
|
+
if (!checking::is_empty(low, up)) {
|
|
411
|
+
if (up <= r.val) return true;
|
|
412
|
+
else if (low > r.val) return false;
|
|
413
|
+
}
|
|
414
|
+
throw interval_lib::comparison_error();
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
template<class T, class Policies> inline
|
|
418
|
+
bool interval<T, Policies>::operator>= (const number_holder& r) const
|
|
419
|
+
{
|
|
420
|
+
if (!checking::is_empty(low, up)) {
|
|
421
|
+
if (low >= r.val) return true;
|
|
422
|
+
else if (up < r.val) return false;
|
|
423
|
+
}
|
|
424
|
+
throw interval_lib::comparison_error();
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
template<class T, class Policies> inline
|
|
428
|
+
bool interval<T, Policies>::operator== (const number_holder& r) const
|
|
429
|
+
{
|
|
430
|
+
if (!checking::is_empty(low, up)) {
|
|
431
|
+
if (up == r.val && low == r.val) return true;
|
|
432
|
+
else if (up < r.val || low > r.val) return false;
|
|
433
|
+
}
|
|
434
|
+
throw interval_lib::comparison_error();
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
template<class T, class Policies> inline
|
|
438
|
+
bool interval<T, Policies>::operator!= (const number_holder& r) const
|
|
439
|
+
{
|
|
440
|
+
if (!checking::is_empty(low, up)) {
|
|
441
|
+
if (up < r.val || low > r.val) return true;
|
|
442
|
+
else if (up == r.val && low == r.val) return false;
|
|
443
|
+
}
|
|
444
|
+
throw interval_lib::comparison_error();
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
} // namespace numeric
|
|
448
|
+
} // namespace boost
|
|
449
|
+
|
|
450
|
+
#endif // BOOST_NUMERIC_INTERVAL_INTERVAL_HPP
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* Boost interval/io.hpp header file
|
|
2
|
+
*
|
|
3
|
+
* This file is only meant to provide a quick
|
|
4
|
+
* implementation of the output operator. It is
|
|
5
|
+
* provided for test programs that aren't even
|
|
6
|
+
* interested in the precision of the results.
|
|
7
|
+
* A real progam should define its own operators
|
|
8
|
+
* and never include this header.
|
|
9
|
+
*
|
|
10
|
+
* Copyright 2003 Guillaume Melquiond
|
|
11
|
+
*
|
|
12
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
* (See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
* copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#ifndef BOOST_NUMERIC_INTERVAL_IO_HPP
|
|
18
|
+
#define BOOST_NUMERIC_INTERVAL_IO_HPP
|
|
19
|
+
|
|
20
|
+
#include <boost/numeric/interval/interval.hpp>
|
|
21
|
+
#include <boost/numeric/interval/utility.hpp>
|
|
22
|
+
#include <ostream>
|
|
23
|
+
|
|
24
|
+
namespace boost {
|
|
25
|
+
namespace numeric {
|
|
26
|
+
|
|
27
|
+
template<class CharType, class CharTraits, class T, class Policies>
|
|
28
|
+
std::basic_ostream<CharType, CharTraits> &operator<<
|
|
29
|
+
(std::basic_ostream<CharType, CharTraits> &stream,
|
|
30
|
+
interval<T, Policies> const &value)
|
|
31
|
+
{
|
|
32
|
+
if (empty(value))
|
|
33
|
+
return stream << "[]";
|
|
34
|
+
else
|
|
35
|
+
return stream << '[' << lower(value) << ',' << upper(value) << ']';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
} // namespace numeric
|
|
39
|
+
} // namespace boost
|
|
40
|
+
|
|
41
|
+
#endif // BOOST_NUMERIC_INTERVAL_IO_HPP
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* Boost interval/limits.hpp template implementation file
|
|
2
|
+
*
|
|
3
|
+
* Copyright 2000 Jens Maurer
|
|
4
|
+
* Copyright 2002-2003 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_LIMITS_HPP
|
|
12
|
+
#define BOOST_NUMERIC_INTERVAL_LIMITS_HPP
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
#include <boost/config.hpp>
|
|
16
|
+
#include <boost/limits.hpp>
|
|
17
|
+
#include <boost/numeric/interval/detail/interval_prototype.hpp>
|
|
18
|
+
|
|
19
|
+
namespace std {
|
|
20
|
+
|
|
21
|
+
template<class T, class Policies>
|
|
22
|
+
class numeric_limits<boost::numeric::interval<T, Policies> >
|
|
23
|
+
: public numeric_limits<T>
|
|
24
|
+
{
|
|
25
|
+
private:
|
|
26
|
+
typedef boost::numeric::interval<T, Policies> I;
|
|
27
|
+
typedef numeric_limits<T> bl;
|
|
28
|
+
public:
|
|
29
|
+
static I min BOOST_PREVENT_MACRO_SUBSTITUTION () BOOST_NOEXCEPT_OR_NOTHROW { return I((bl::min)(), (bl::min)()); }
|
|
30
|
+
static I max BOOST_PREVENT_MACRO_SUBSTITUTION () BOOST_NOEXCEPT_OR_NOTHROW { return I((bl::max)(), (bl::max)()); }
|
|
31
|
+
static I epsilon() BOOST_NOEXCEPT_OR_NOTHROW { return I(bl::epsilon(), bl::epsilon()); }
|
|
32
|
+
|
|
33
|
+
BOOST_STATIC_CONSTANT(float_round_style, round_style = round_indeterminate);
|
|
34
|
+
BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
|
|
35
|
+
|
|
36
|
+
static I infinity () BOOST_NOEXCEPT_OR_NOTHROW { return I::whole(); }
|
|
37
|
+
static I quiet_NaN() BOOST_NOEXCEPT_OR_NOTHROW { return I::empty(); }
|
|
38
|
+
static I signaling_NaN() BOOST_NOEXCEPT_OR_NOTHROW
|
|
39
|
+
{ return I(bl::signaling_NaN(), bl::signaling_Nan()); }
|
|
40
|
+
static I denorm_min() BOOST_NOEXCEPT_OR_NOTHROW
|
|
41
|
+
{ return I(bl::denorm_min(), bl::denorm_min()); }
|
|
42
|
+
private:
|
|
43
|
+
static I round_error(); // hide this on purpose, not yet implemented
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
} // namespace std
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
#endif // BOOST_NUMERIC_INTERVAL_LIMITS_HPP
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/* Boost interval/policies.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_POLICIES_HPP
|
|
11
|
+
#define BOOST_NUMERIC_INTERVAL_POLICIES_HPP
|
|
12
|
+
|
|
13
|
+
#include <boost/numeric/interval/interval.hpp>
|
|
14
|
+
|
|
15
|
+
namespace boost {
|
|
16
|
+
namespace numeric {
|
|
17
|
+
namespace interval_lib {
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* policies class
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
template<class Rounding, class Checking>
|
|
24
|
+
struct policies
|
|
25
|
+
{
|
|
26
|
+
typedef Rounding rounding;
|
|
27
|
+
typedef Checking checking;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* policies switching classes
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
template<class OldInterval, class NewRounding>
|
|
35
|
+
class change_rounding
|
|
36
|
+
{
|
|
37
|
+
typedef typename OldInterval::base_type T;
|
|
38
|
+
typedef typename OldInterval::traits_type p;
|
|
39
|
+
typedef typename p::checking checking;
|
|
40
|
+
public:
|
|
41
|
+
typedef interval<T, policies<NewRounding, checking> > type;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
template<class OldInterval, class NewChecking>
|
|
45
|
+
class change_checking
|
|
46
|
+
{
|
|
47
|
+
typedef typename OldInterval::base_type T;
|
|
48
|
+
typedef typename OldInterval::traits_type p;
|
|
49
|
+
typedef typename p::rounding rounding;
|
|
50
|
+
public:
|
|
51
|
+
typedef interval<T, policies<rounding, NewChecking> > type;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* Protect / unprotect: control whether the rounding mode is set/reset
|
|
56
|
+
* at each operation, rather than once and for all.
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
template<class OldInterval>
|
|
60
|
+
class unprotect
|
|
61
|
+
{
|
|
62
|
+
typedef typename OldInterval::base_type T;
|
|
63
|
+
typedef typename OldInterval::traits_type p;
|
|
64
|
+
typedef typename p::rounding r;
|
|
65
|
+
typedef typename r::unprotected_rounding newRounding;
|
|
66
|
+
public:
|
|
67
|
+
typedef typename change_rounding<OldInterval, newRounding>::type type;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
} // namespace interval_lib
|
|
71
|
+
} // namespace numeric
|
|
72
|
+
} // namespace boost
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
#endif // BOOST_NUMERIC_INTERVAL_POLICIES_HPP
|