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