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
package/README.md
CHANGED
|
@@ -11,9 +11,36 @@ Run:
|
|
|
11
11
|
$ npm i boost.cxx
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
And then include `boost.
|
|
15
|
-
|
|
14
|
+
And then include `boost/thread.hpp` as follows:
|
|
15
|
+
|
|
16
|
+
```cxx
|
|
17
|
+
// main.cxx
|
|
16
18
|
#include "node_modules/boost.cxx/boost/thread.hpp"
|
|
19
|
+
|
|
20
|
+
int main() { /* ... */ }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
And then compile with `clang++` or `g++` as usual.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
$ clang++ main.cxx # or, use g++
|
|
27
|
+
$ g++ main.cxx
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
You may also use a simpler approach:
|
|
31
|
+
|
|
32
|
+
```cxx
|
|
33
|
+
// main.cxx
|
|
34
|
+
#include <boost/thread.hpp>
|
|
35
|
+
|
|
36
|
+
int main() { /* ... */ }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If you add the path `node_modules/boost.cxx` to your compiler's include paths.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
$ clang++ -I./node_modules/boost.cxx main.cxx # or, use g++
|
|
43
|
+
$ g++ -I./node_modules/boost.cxx main.cxx
|
|
17
44
|
```
|
|
18
45
|
|
|
19
46
|
<br>
|
package/boost/cast.hpp
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// boost cast.hpp header file
|
|
2
|
+
//
|
|
3
|
+
// (C) Copyright Antony Polukhin 2014.
|
|
4
|
+
//
|
|
5
|
+
// Distributed under the Boost
|
|
6
|
+
// Software License, Version 1.0. (See accompanying file
|
|
7
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
8
|
+
//
|
|
9
|
+
// See http://www.boost.org/libs/conversion for Documentation.
|
|
10
|
+
|
|
11
|
+
// This is a DEPRECATED header file!
|
|
12
|
+
// Use <boost/polymorphic_cast.hpp> or <boost/numeric/conversion/cast.hpp> instead
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_CAST_HPP
|
|
15
|
+
#define BOOST_CAST_HPP
|
|
16
|
+
|
|
17
|
+
# include <boost/polymorphic_cast.hpp>
|
|
18
|
+
# include <boost/numeric/conversion/cast.hpp>
|
|
19
|
+
|
|
20
|
+
#endif // BOOST_CAST_HPP
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
|
|
11
|
+
#define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
|
|
12
|
+
|
|
13
|
+
#include "boost/numeric/conversion/detail/bounds.hpp"
|
|
14
|
+
|
|
15
|
+
namespace boost { namespace numeric
|
|
16
|
+
{
|
|
17
|
+
|
|
18
|
+
template<class N>
|
|
19
|
+
struct bounds : boundsdetail::get_impl<N>::type
|
|
20
|
+
{} ;
|
|
21
|
+
|
|
22
|
+
} } // namespace boost::numeric
|
|
23
|
+
|
|
24
|
+
#endif
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
//
|
|
11
|
+
// Revision History
|
|
12
|
+
//
|
|
13
|
+
// 19 Nov 2001 Syntatic changes as suggested by Darin Adler (Fernando Cacciola)
|
|
14
|
+
// 08 Nov 2001 Fixes to accommodate MSVC (Fernando Cacciola)
|
|
15
|
+
// 04 Nov 2001 Fixes to accommodate gcc2.92 (Fernando Cacciola)
|
|
16
|
+
// 30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)
|
|
17
|
+
// 25 Oct 2001 Initial boostification (Fernando Cacciola)
|
|
18
|
+
// 23 Jan 2004 Inital add to cvs (post review)s
|
|
19
|
+
// 22 Jun 2011 Added support for specializing cast policies via numeric_cast_traits (Brandon Kohn).
|
|
20
|
+
//
|
|
21
|
+
#ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
|
|
22
|
+
#define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
|
|
23
|
+
|
|
24
|
+
#include <boost/detail/workaround.hpp>
|
|
25
|
+
|
|
26
|
+
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x582))
|
|
27
|
+
|
|
28
|
+
# include<boost/numeric/conversion/detail/old_numeric_cast.hpp>
|
|
29
|
+
|
|
30
|
+
#else
|
|
31
|
+
|
|
32
|
+
#include <boost/type.hpp>
|
|
33
|
+
#include <boost/numeric/conversion/converter.hpp>
|
|
34
|
+
#include <boost/numeric/conversion/numeric_cast_traits.hpp>
|
|
35
|
+
|
|
36
|
+
namespace boost
|
|
37
|
+
{
|
|
38
|
+
template <typename Target, typename Source>
|
|
39
|
+
inline Target numeric_cast( Source arg )
|
|
40
|
+
{
|
|
41
|
+
typedef numeric::conversion_traits<Target, Source> conv_traits;
|
|
42
|
+
typedef numeric::numeric_cast_traits<Target, Source> cast_traits;
|
|
43
|
+
typedef boost::numeric::converter
|
|
44
|
+
<
|
|
45
|
+
Target,
|
|
46
|
+
Source,
|
|
47
|
+
conv_traits,
|
|
48
|
+
typename cast_traits::overflow_policy,
|
|
49
|
+
typename cast_traits::rounding_policy,
|
|
50
|
+
boost::numeric::raw_converter< conv_traits >,
|
|
51
|
+
typename cast_traits::range_checking_policy
|
|
52
|
+
> converter;
|
|
53
|
+
return converter::convert(arg);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
using numeric::bad_numeric_cast;
|
|
57
|
+
} // namespace boost
|
|
58
|
+
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
#endif
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
#ifndef BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
|
|
11
|
+
#define BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
|
|
12
|
+
|
|
13
|
+
#include "boost/numeric/conversion/detail/conversion_traits.hpp"
|
|
14
|
+
#include "boost/detail/workaround.hpp"
|
|
15
|
+
#include "boost/config.hpp"
|
|
16
|
+
|
|
17
|
+
namespace boost { namespace numeric
|
|
18
|
+
{
|
|
19
|
+
|
|
20
|
+
template<class T, class S>
|
|
21
|
+
struct conversion_traits
|
|
22
|
+
: convdetail::get_conversion_traits<T,S>::type
|
|
23
|
+
{
|
|
24
|
+
} ;
|
|
25
|
+
|
|
26
|
+
} } // namespace boost::numeric
|
|
27
|
+
|
|
28
|
+
#endif
|
|
29
|
+
//
|
|
30
|
+
///////////////////////////////////////////////////////////////////////////////////////////////
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
|
|
11
|
+
#define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
|
|
12
|
+
|
|
13
|
+
#include "boost/numeric/conversion/conversion_traits.hpp"
|
|
14
|
+
#include "boost/numeric/conversion/converter_policies.hpp"
|
|
15
|
+
|
|
16
|
+
#include "boost/numeric/conversion/detail/converter.hpp"
|
|
17
|
+
|
|
18
|
+
namespace boost { namespace numeric
|
|
19
|
+
{
|
|
20
|
+
|
|
21
|
+
template<class T,
|
|
22
|
+
class S,
|
|
23
|
+
class Traits = conversion_traits<T,S>,
|
|
24
|
+
class OverflowHandler = def_overflow_handler,
|
|
25
|
+
class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type> ,
|
|
26
|
+
class RawConverter = raw_converter<Traits>,
|
|
27
|
+
class UserRangeChecker = UseInternalRangeChecker
|
|
28
|
+
>
|
|
29
|
+
struct converter : convdetail::get_converter_impl<Traits,
|
|
30
|
+
OverflowHandler,
|
|
31
|
+
Float2IntRounder,
|
|
32
|
+
RawConverter,
|
|
33
|
+
UserRangeChecker
|
|
34
|
+
>::type
|
|
35
|
+
{
|
|
36
|
+
typedef Traits traits ;
|
|
37
|
+
|
|
38
|
+
typedef typename Traits::argument_type argument_type ;
|
|
39
|
+
typedef typename Traits::result_type result_type ;
|
|
40
|
+
|
|
41
|
+
result_type operator() ( argument_type s ) const { return this->convert(s) ; }
|
|
42
|
+
} ;
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
template<class S,
|
|
47
|
+
class OverflowHandler = def_overflow_handler,
|
|
48
|
+
class Float2IntRounder = Trunc<S> ,
|
|
49
|
+
class UserRangeChecker = UseInternalRangeChecker
|
|
50
|
+
>
|
|
51
|
+
struct make_converter_from
|
|
52
|
+
{
|
|
53
|
+
template<class T,
|
|
54
|
+
class Traits = conversion_traits<T,S>,
|
|
55
|
+
class RawConverter = raw_converter<Traits>
|
|
56
|
+
>
|
|
57
|
+
struct to
|
|
58
|
+
{
|
|
59
|
+
typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
|
|
60
|
+
} ;
|
|
61
|
+
|
|
62
|
+
} ;
|
|
63
|
+
|
|
64
|
+
} } // namespace boost::numeric
|
|
65
|
+
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
|
|
11
|
+
#define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
|
|
12
|
+
|
|
13
|
+
#include <functional>
|
|
14
|
+
#include <typeinfo> // for std::bad_cast
|
|
15
|
+
|
|
16
|
+
#include <boost/config.hpp>
|
|
17
|
+
#include <boost/config/no_tr1/cmath.hpp> // for std::floor and std::ceil
|
|
18
|
+
#include <boost/throw_exception.hpp>
|
|
19
|
+
|
|
20
|
+
#include "boost/type_traits/is_arithmetic.hpp"
|
|
21
|
+
|
|
22
|
+
#include "boost/mpl/if.hpp"
|
|
23
|
+
#include "boost/mpl/integral_c.hpp"
|
|
24
|
+
|
|
25
|
+
namespace boost { namespace numeric
|
|
26
|
+
{
|
|
27
|
+
|
|
28
|
+
template<class S>
|
|
29
|
+
struct Trunc
|
|
30
|
+
{
|
|
31
|
+
typedef S source_type ;
|
|
32
|
+
|
|
33
|
+
typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
|
|
34
|
+
|
|
35
|
+
static source_type nearbyint ( argument_type s )
|
|
36
|
+
{
|
|
37
|
+
#if !defined(BOOST_NO_STDC_NAMESPACE)
|
|
38
|
+
using std::floor ;
|
|
39
|
+
using std::ceil ;
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
return s < static_cast<S>(0) ? ceil(s) : floor(s) ;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
typedef mpl::integral_c< std::float_round_style, std::round_toward_zero> round_style ;
|
|
46
|
+
} ;
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
template<class S>
|
|
51
|
+
struct Floor
|
|
52
|
+
{
|
|
53
|
+
typedef S source_type ;
|
|
54
|
+
|
|
55
|
+
typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
|
|
56
|
+
|
|
57
|
+
static source_type nearbyint ( argument_type s )
|
|
58
|
+
{
|
|
59
|
+
#if !defined(BOOST_NO_STDC_NAMESPACE)
|
|
60
|
+
using std::floor ;
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
return floor(s) ;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
typedef mpl::integral_c< std::float_round_style, std::round_toward_neg_infinity> round_style ;
|
|
67
|
+
} ;
|
|
68
|
+
|
|
69
|
+
template<class S>
|
|
70
|
+
struct Ceil
|
|
71
|
+
{
|
|
72
|
+
typedef S source_type ;
|
|
73
|
+
|
|
74
|
+
typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
|
|
75
|
+
|
|
76
|
+
static source_type nearbyint ( argument_type s )
|
|
77
|
+
{
|
|
78
|
+
#if !defined(BOOST_NO_STDC_NAMESPACE)
|
|
79
|
+
using std::ceil ;
|
|
80
|
+
#endif
|
|
81
|
+
|
|
82
|
+
return ceil(s) ;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
typedef mpl::integral_c< std::float_round_style, std::round_toward_infinity> round_style ;
|
|
86
|
+
} ;
|
|
87
|
+
|
|
88
|
+
template<class S>
|
|
89
|
+
struct RoundEven
|
|
90
|
+
{
|
|
91
|
+
typedef S source_type ;
|
|
92
|
+
|
|
93
|
+
typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
|
|
94
|
+
|
|
95
|
+
static source_type nearbyint ( argument_type s )
|
|
96
|
+
{
|
|
97
|
+
// Algorithm contributed by Guillaume Melquiond
|
|
98
|
+
|
|
99
|
+
#if !defined(BOOST_NO_STDC_NAMESPACE)
|
|
100
|
+
using std::floor ;
|
|
101
|
+
using std::ceil ;
|
|
102
|
+
#endif
|
|
103
|
+
|
|
104
|
+
// only works inside the range not at the boundaries
|
|
105
|
+
S prev = floor(s);
|
|
106
|
+
S next = ceil(s);
|
|
107
|
+
|
|
108
|
+
S rt = (s - prev) - (next - s); // remainder type
|
|
109
|
+
|
|
110
|
+
S const zero(0.0);
|
|
111
|
+
S const two(2.0);
|
|
112
|
+
|
|
113
|
+
if ( rt < zero )
|
|
114
|
+
return prev;
|
|
115
|
+
else if ( rt > zero )
|
|
116
|
+
return next;
|
|
117
|
+
else
|
|
118
|
+
{
|
|
119
|
+
bool is_prev_even = two * floor(prev / two) == prev ;
|
|
120
|
+
return ( is_prev_even ? prev : next ) ;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
typedef mpl::integral_c< std::float_round_style, std::round_to_nearest> round_style ;
|
|
125
|
+
} ;
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
enum range_check_result
|
|
129
|
+
{
|
|
130
|
+
cInRange = 0 ,
|
|
131
|
+
cNegOverflow = 1 ,
|
|
132
|
+
cPosOverflow = 2
|
|
133
|
+
} ;
|
|
134
|
+
|
|
135
|
+
class bad_numeric_cast : public std::bad_cast
|
|
136
|
+
{
|
|
137
|
+
public:
|
|
138
|
+
|
|
139
|
+
const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE
|
|
140
|
+
{ return "bad numeric conversion: overflow"; }
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
class negative_overflow : public bad_numeric_cast
|
|
144
|
+
{
|
|
145
|
+
public:
|
|
146
|
+
|
|
147
|
+
const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE
|
|
148
|
+
{ return "bad numeric conversion: negative overflow"; }
|
|
149
|
+
};
|
|
150
|
+
class positive_overflow : public bad_numeric_cast
|
|
151
|
+
{
|
|
152
|
+
public:
|
|
153
|
+
|
|
154
|
+
const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE
|
|
155
|
+
{ return "bad numeric conversion: positive overflow"; }
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
struct def_overflow_handler
|
|
159
|
+
{
|
|
160
|
+
void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)
|
|
161
|
+
{
|
|
162
|
+
#ifndef BOOST_NO_EXCEPTIONS
|
|
163
|
+
if ( r == cNegOverflow )
|
|
164
|
+
throw negative_overflow() ;
|
|
165
|
+
else if ( r == cPosOverflow )
|
|
166
|
+
throw positive_overflow() ;
|
|
167
|
+
#else
|
|
168
|
+
if ( r == cNegOverflow )
|
|
169
|
+
::boost::throw_exception(negative_overflow()) ;
|
|
170
|
+
else if ( r == cPosOverflow )
|
|
171
|
+
::boost::throw_exception(positive_overflow()) ;
|
|
172
|
+
#endif
|
|
173
|
+
}
|
|
174
|
+
} ;
|
|
175
|
+
|
|
176
|
+
struct silent_overflow_handler
|
|
177
|
+
{
|
|
178
|
+
void operator() ( range_check_result ) {} // throw()
|
|
179
|
+
} ;
|
|
180
|
+
|
|
181
|
+
template<class Traits>
|
|
182
|
+
struct raw_converter
|
|
183
|
+
{
|
|
184
|
+
typedef typename Traits::result_type result_type ;
|
|
185
|
+
typedef typename Traits::argument_type argument_type ;
|
|
186
|
+
|
|
187
|
+
static result_type low_level_convert ( argument_type s ) { return static_cast<result_type>(s) ; }
|
|
188
|
+
} ;
|
|
189
|
+
|
|
190
|
+
struct UseInternalRangeChecker {} ;
|
|
191
|
+
|
|
192
|
+
} } // namespace boost::numeric
|
|
193
|
+
|
|
194
|
+
#endif
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
|
|
11
|
+
#define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
|
|
12
|
+
|
|
13
|
+
#include "boost/limits.hpp"
|
|
14
|
+
#include "boost/config.hpp"
|
|
15
|
+
#include "boost/mpl/if.hpp"
|
|
16
|
+
|
|
17
|
+
namespace boost { namespace numeric { namespace boundsdetail
|
|
18
|
+
{
|
|
19
|
+
template<class N>
|
|
20
|
+
class Integral
|
|
21
|
+
{
|
|
22
|
+
typedef std::numeric_limits<N> limits ;
|
|
23
|
+
|
|
24
|
+
public :
|
|
25
|
+
|
|
26
|
+
static N lowest () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
|
|
27
|
+
static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
|
|
28
|
+
static N smallest() { return static_cast<N>(1); }
|
|
29
|
+
} ;
|
|
30
|
+
|
|
31
|
+
template<class N>
|
|
32
|
+
class Float
|
|
33
|
+
{
|
|
34
|
+
typedef std::numeric_limits<N> limits ;
|
|
35
|
+
|
|
36
|
+
public :
|
|
37
|
+
|
|
38
|
+
static N lowest () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
|
|
39
|
+
static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
|
|
40
|
+
static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
|
|
41
|
+
} ;
|
|
42
|
+
|
|
43
|
+
template<class N>
|
|
44
|
+
struct get_impl
|
|
45
|
+
{
|
|
46
|
+
typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
|
|
47
|
+
|
|
48
|
+
typedef Integral<N> impl_int ;
|
|
49
|
+
typedef Float <N> impl_float ;
|
|
50
|
+
|
|
51
|
+
typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
|
|
52
|
+
} ;
|
|
53
|
+
|
|
54
|
+
} } } // namespace boost::numeric::boundsdetail.
|
|
55
|
+
|
|
56
|
+
#endif
|
|
57
|
+
//
|
|
58
|
+
///////////////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
|
|
2
|
+
// Use, modification, and distribution is subject to the Boost Software
|
|
3
|
+
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
// See library home page at http://www.boost.org/libs/numeric/conversion
|
|
7
|
+
//
|
|
8
|
+
// Contact the author at: fernando_cacciola@hotmail.com
|
|
9
|
+
//
|
|
10
|
+
#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
|
|
11
|
+
#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
|
|
12
|
+
|
|
13
|
+
#include "boost/type_traits/is_arithmetic.hpp"
|
|
14
|
+
#include "boost/type_traits/is_same.hpp"
|
|
15
|
+
#include "boost/type_traits/remove_cv.hpp"
|
|
16
|
+
|
|
17
|
+
#include "boost/numeric/conversion/detail/meta.hpp"
|
|
18
|
+
#include "boost/numeric/conversion/detail/int_float_mixture.hpp"
|
|
19
|
+
#include "boost/numeric/conversion/detail/sign_mixture.hpp"
|
|
20
|
+
#include "boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
|
|
21
|
+
#include "boost/numeric/conversion/detail/is_subranged.hpp"
|
|
22
|
+
|
|
23
|
+
namespace boost { namespace numeric { namespace convdetail
|
|
24
|
+
{
|
|
25
|
+
//-------------------------------------------------------------------
|
|
26
|
+
// Implementation of the Conversion Traits for T != S
|
|
27
|
+
//
|
|
28
|
+
// This is a VISIBLE base class of the user-level conversion_traits<> class.
|
|
29
|
+
//-------------------------------------------------------------------
|
|
30
|
+
template<class T,class S>
|
|
31
|
+
struct non_trivial_traits_impl
|
|
32
|
+
{
|
|
33
|
+
typedef typename get_int_float_mixture <T,S>::type int_float_mixture ;
|
|
34
|
+
typedef typename get_sign_mixture <T,S>::type sign_mixture ;
|
|
35
|
+
typedef typename get_udt_builtin_mixture <T,S>::type udt_builtin_mixture ;
|
|
36
|
+
|
|
37
|
+
typedef typename get_is_subranged<T,S>::type subranged ;
|
|
38
|
+
|
|
39
|
+
typedef mpl::false_ trivial ;
|
|
40
|
+
|
|
41
|
+
typedef T target_type ;
|
|
42
|
+
typedef S source_type ;
|
|
43
|
+
typedef T result_type ;
|
|
44
|
+
|
|
45
|
+
typedef typename mpl::if_< is_arithmetic<S>, S, S const&>::type argument_type ;
|
|
46
|
+
|
|
47
|
+
typedef typename mpl::if_<subranged,S,T>::type supertype ;
|
|
48
|
+
typedef typename mpl::if_<subranged,T,S>::type subtype ;
|
|
49
|
+
} ;
|
|
50
|
+
|
|
51
|
+
//-------------------------------------------------------------------
|
|
52
|
+
// Implementation of the Conversion Traits for T == S
|
|
53
|
+
//
|
|
54
|
+
// This is a VISIBLE base class of the user-level conversion_traits<> class.
|
|
55
|
+
//-------------------------------------------------------------------
|
|
56
|
+
template<class N>
|
|
57
|
+
struct trivial_traits_impl
|
|
58
|
+
{
|
|
59
|
+
typedef typename get_int_float_mixture <N,N>::type int_float_mixture ;
|
|
60
|
+
typedef typename get_sign_mixture <N,N>::type sign_mixture ;
|
|
61
|
+
typedef typename get_udt_builtin_mixture<N,N>::type udt_builtin_mixture ;
|
|
62
|
+
|
|
63
|
+
typedef mpl::false_ subranged ;
|
|
64
|
+
typedef mpl::true_ trivial ;
|
|
65
|
+
|
|
66
|
+
typedef N target_type ;
|
|
67
|
+
typedef N source_type ;
|
|
68
|
+
typedef N const& result_type ;
|
|
69
|
+
typedef N const& argument_type ;
|
|
70
|
+
|
|
71
|
+
typedef N supertype ;
|
|
72
|
+
typedef N subtype ;
|
|
73
|
+
|
|
74
|
+
} ;
|
|
75
|
+
|
|
76
|
+
//-------------------------------------------------------------------
|
|
77
|
+
// Top level implementation selector.
|
|
78
|
+
//-------------------------------------------------------------------
|
|
79
|
+
template<class T, class S>
|
|
80
|
+
struct get_conversion_traits
|
|
81
|
+
{
|
|
82
|
+
typedef typename remove_cv<T>::type target_type ;
|
|
83
|
+
typedef typename remove_cv<S>::type source_type ;
|
|
84
|
+
|
|
85
|
+
typedef typename is_same<target_type,source_type>::type is_trivial ;
|
|
86
|
+
|
|
87
|
+
typedef trivial_traits_impl <target_type> trivial_imp ;
|
|
88
|
+
typedef non_trivial_traits_impl<target_type,source_type> non_trivial_imp ;
|
|
89
|
+
|
|
90
|
+
typedef typename mpl::if_<is_trivial,trivial_imp,non_trivial_imp>::type type ;
|
|
91
|
+
} ;
|
|
92
|
+
|
|
93
|
+
} } } // namespace boost::numeric::convdetail
|
|
94
|
+
|
|
95
|
+
#endif
|
|
96
|
+
|
|
97
|
+
|