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,30 @@
|
|
|
1
|
+
// (C) Copyright Matt Borland 2021 - 2023.
|
|
2
|
+
// Use, modification and distribution are subject to the
|
|
3
|
+
// Boost Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
//
|
|
6
|
+
// We deliberately use assert in here:
|
|
7
|
+
//
|
|
8
|
+
// boost-no-inspect
|
|
9
|
+
|
|
10
|
+
#ifndef BOOST_NUMERIC_ODEINT_TOOLS_ASSERT_HPP
|
|
11
|
+
#define BOOST_NUMERIC_ODEINT_TOOLS_ASSERT_HPP
|
|
12
|
+
|
|
13
|
+
#include <boost/numeric/odeint/tools/is_standalone.hpp>
|
|
14
|
+
|
|
15
|
+
#ifndef BOOST_NUMERIC_ODEINT_STANDALONE
|
|
16
|
+
|
|
17
|
+
#include <boost/assert.hpp>
|
|
18
|
+
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_ASSERT(expr) BOOST_ASSERT(expr)
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_ASSERT_MSG(expr, msg) BOOST_ASSERT_MSG(expr, msg)
|
|
21
|
+
|
|
22
|
+
#else // Standalone mode so we use cassert
|
|
23
|
+
|
|
24
|
+
#include <cassert>
|
|
25
|
+
#define BOOST_NUMERIC_ODEINT_ASSERT(expr) assert(expr)
|
|
26
|
+
#define BOOST_NUMERIC_ODEINT_ASSERT_MSG(expr, msg) assert((expr)&&(msg))
|
|
27
|
+
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
#endif //BOOST_NUMERIC_ODEINT_TOOLS_ASSERT_HPP
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright Matt Borland 2021.
|
|
2
|
+
// Use, modification and distribution are subject to the
|
|
3
|
+
// Boost Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
#ifndef BOOST_NUMERIC_ODEINT_TOOLS_IS_STANDALONE_HPP
|
|
7
|
+
#define BOOST_NUMERIC_ODEINT_TOOLS_IS_STANDALONE_HPP
|
|
8
|
+
|
|
9
|
+
// If one or more of our required dependencies are missing assume we are
|
|
10
|
+
// in standalone mode
|
|
11
|
+
|
|
12
|
+
#ifdef __has_include
|
|
13
|
+
#if !__has_include(<boost/config.hpp>) || !__has_include(<boost/assert.hpp>) || !__has_include(<boost/lexical_cast.hpp>) || \
|
|
14
|
+
!__has_include(<boost/throw_exception.hpp>) || !__has_include(<boost/predef/other/endian.h>)
|
|
15
|
+
# ifndef BOOST_NUMERIC_ODEINT_STANDALONE
|
|
16
|
+
# define BOOST_NUMERIC_ODEINT_STANDALONE
|
|
17
|
+
# endif
|
|
18
|
+
#endif
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#endif //BOOST_NUMERIC_ODEINT_TOOLS_IS_STANDALONE_HPP
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copyright Matt Borland 2021 - 2023.
|
|
2
|
+
// Use, modification and distribution are subject to the
|
|
3
|
+
// Boost Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
#ifndef BOOST_NUMERIC_ODEINT_TOOLS_TRAITS
|
|
7
|
+
#define BOOST_NUMERIC_ODEINT_TOOLS_TRAITS
|
|
8
|
+
|
|
9
|
+
#include <type_traits>
|
|
10
|
+
|
|
11
|
+
namespace boost {
|
|
12
|
+
namespace numeric {
|
|
13
|
+
namespace odeint {
|
|
14
|
+
namespace detail {
|
|
15
|
+
|
|
16
|
+
#define BOOST_NUMERIC_ODEINT_HAS_NAMED_TRAIT(trait, name) \
|
|
17
|
+
template <typename T> \
|
|
18
|
+
class trait \
|
|
19
|
+
{ \
|
|
20
|
+
private: \
|
|
21
|
+
using yes = char; \
|
|
22
|
+
struct no { char x[2]; }; \
|
|
23
|
+
\
|
|
24
|
+
template <typename U> \
|
|
25
|
+
static yes test(typename U::name* = nullptr); \
|
|
26
|
+
\
|
|
27
|
+
template <typename U> \
|
|
28
|
+
static no test(...); \
|
|
29
|
+
\
|
|
30
|
+
public: \
|
|
31
|
+
static constexpr bool value = (sizeof(test<T>(0)) == sizeof(char)); \
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
} //namespace detail
|
|
35
|
+
} //namespace odeint
|
|
36
|
+
} //namespace numeric
|
|
37
|
+
} //namespace boost
|
|
38
|
+
|
|
39
|
+
#endif //BOOST_NUMERIC_ODEINT_TOOLS_TRAITS
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* [begin_description]
|
|
3
|
+
* Boost bind pull the placeholders, _1, _2, ... into global
|
|
4
|
+
* namespace. This can conflict with the C++03 TR1 and C++11
|
|
5
|
+
* std::placeholders. This header provides a workaround for
|
|
6
|
+
* this problem.
|
|
7
|
+
* [end_description]
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2012 Christoph Koke
|
|
10
|
+
* Copyright 2012 Karsten Ahnert
|
|
11
|
+
*
|
|
12
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
* (See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
* copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
* */
|
|
16
|
+
|
|
17
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
|
|
18
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
|
|
19
|
+
|
|
20
|
+
#include <functional>
|
|
21
|
+
|
|
22
|
+
namespace boost {
|
|
23
|
+
namespace numeric {
|
|
24
|
+
namespace odeint {
|
|
25
|
+
namespace detail {
|
|
26
|
+
|
|
27
|
+
using std::bind;
|
|
28
|
+
using namespace std::placeholders;
|
|
29
|
+
|
|
30
|
+
} //namespace detail
|
|
31
|
+
} //namespace odeint
|
|
32
|
+
} //namespace numeric
|
|
33
|
+
} //namespace boost
|
|
34
|
+
|
|
35
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_BIND_HPP_INCLUDED
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/copy.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Copy abstraction for the usage in the steppers.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_COPY_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_COPY_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
|
|
23
|
+
#include <boost/range/algorithm/copy.hpp>
|
|
24
|
+
|
|
25
|
+
#include <boost/utility/enable_if.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/numeric/odeint/util/detail/is_range.hpp>
|
|
28
|
+
|
|
29
|
+
namespace boost {
|
|
30
|
+
namespace numeric {
|
|
31
|
+
namespace odeint {
|
|
32
|
+
|
|
33
|
+
namespace detail {
|
|
34
|
+
|
|
35
|
+
template< class Container1 , class Container2 >
|
|
36
|
+
void do_copying( const Container1 &from , Container2 &to , std::integral_constant<bool, true>)
|
|
37
|
+
{
|
|
38
|
+
boost::range::copy( from , boost::begin( to ) );
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
template< class Container1 , class Container2 >
|
|
42
|
+
void do_copying( const Container1 &from , Container2 &to , std::integral_constant<bool, false>)
|
|
43
|
+
{
|
|
44
|
+
to = from;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
} // namespace detail
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* Default implementation of the copy operation used the assign operator
|
|
53
|
+
* gsl_vector must copied differently
|
|
54
|
+
*/
|
|
55
|
+
template< class Container1 , class Container2 , class Enabler = void >
|
|
56
|
+
struct copy_impl_sfinae
|
|
57
|
+
{
|
|
58
|
+
static void copy( const Container1 &from , Container2 &to )
|
|
59
|
+
{
|
|
60
|
+
typedef typename boost::numeric::odeint::detail::is_range< Container1 >::type is_range_type;
|
|
61
|
+
detail::do_copying( from , to , is_range_type() );
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
template< class Container1, class Container2 >
|
|
67
|
+
struct copy_impl
|
|
68
|
+
{
|
|
69
|
+
static void copy( const Container1 &from , Container2 &to )
|
|
70
|
+
{
|
|
71
|
+
copy_impl_sfinae< Container1 , Container2 >::copy( from , to );
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// ToDo: allow also to copy INTO a range, not only from a range! Needs "const Container2 &to"
|
|
76
|
+
template< class Container1 , class Container2 >
|
|
77
|
+
void copy( const Container1 &from , Container2 &to )
|
|
78
|
+
{
|
|
79
|
+
copy_impl< Container1 , Container2 >::copy( from , to );
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
} // namespace odeint
|
|
84
|
+
} // namespace numeric
|
|
85
|
+
} // namespace boost
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_COPY_HPP_INCLUDED
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/detail/is_range.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
is_range implementation. Taken from the boost::range library.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2013 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2013 Thorsten Ottosen
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
15
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
16
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED
|
|
21
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
|
25
|
+
# pragma once
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#include <cstddef>
|
|
29
|
+
#include <type_traits>
|
|
30
|
+
#include <boost/range/config.hpp>
|
|
31
|
+
#include <boost/numeric/odeint/tools/traits.hpp>
|
|
32
|
+
|
|
33
|
+
namespace boost {
|
|
34
|
+
namespace numeric {
|
|
35
|
+
namespace odeint {
|
|
36
|
+
|
|
37
|
+
namespace detail {
|
|
38
|
+
|
|
39
|
+
BOOST_NUMERIC_ODEINT_HAS_NAMED_TRAIT(has_iterator, iterator);
|
|
40
|
+
BOOST_NUMERIC_ODEINT_HAS_NAMED_TRAIT(has_const_iterator, const_iterator);
|
|
41
|
+
|
|
42
|
+
template< typename Range >
|
|
43
|
+
struct is_range : std::integral_constant<bool, (has_iterator<Range>::value && has_const_iterator<Range>::value)>
|
|
44
|
+
{
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
//////////////////////////////////////////////////////////////////////////
|
|
48
|
+
// pair
|
|
49
|
+
//////////////////////////////////////////////////////////////////////////
|
|
50
|
+
|
|
51
|
+
template< typename iteratorT >
|
|
52
|
+
struct is_range< std::pair<iteratorT,iteratorT> > : std::integral_constant<bool, true>
|
|
53
|
+
{
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
template< typename iteratorT >
|
|
57
|
+
struct is_range< const std::pair<iteratorT,iteratorT> > : std::integral_constant<bool, true>
|
|
58
|
+
{
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//////////////////////////////////////////////////////////////////////////
|
|
62
|
+
// array
|
|
63
|
+
//////////////////////////////////////////////////////////////////////////
|
|
64
|
+
|
|
65
|
+
template< typename elementT, std::size_t sz >
|
|
66
|
+
struct is_range< elementT[sz] > : std::integral_constant<bool, true>
|
|
67
|
+
{
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
template< typename elementT, std::size_t sz >
|
|
71
|
+
struct is_range< const elementT[sz] > : std::integral_constant<bool, true>
|
|
72
|
+
{
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
//////////////////////////////////////////////////////////////////////////
|
|
76
|
+
// string
|
|
77
|
+
//////////////////////////////////////////////////////////////////////////
|
|
78
|
+
|
|
79
|
+
template<>
|
|
80
|
+
struct is_range< char* > : std::integral_constant<bool, true>
|
|
81
|
+
{
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
template<>
|
|
85
|
+
struct is_range< wchar_t* > : std::integral_constant<bool, true>
|
|
86
|
+
{
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
template<>
|
|
90
|
+
struct is_range< const char* > : std::integral_constant<bool, true>
|
|
91
|
+
{
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
template<>
|
|
95
|
+
struct is_range< const wchar_t* > : std::integral_constant<bool, true>
|
|
96
|
+
{
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
template<>
|
|
100
|
+
struct is_range< char* const > : std::integral_constant<bool, true>
|
|
101
|
+
{
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
template<>
|
|
105
|
+
struct is_range< wchar_t* const > : std::integral_constant<bool, true>
|
|
106
|
+
{
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
template<>
|
|
110
|
+
struct is_range< const char* const > : std::integral_constant<bool, true>
|
|
111
|
+
{
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
template<>
|
|
115
|
+
struct is_range< const wchar_t* const > : std::integral_constant<bool, true>
|
|
116
|
+
{
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
} // namespace detail
|
|
120
|
+
|
|
121
|
+
} // namespace odeint
|
|
122
|
+
} // namespace numeric
|
|
123
|
+
} // namespace boost
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/detail/less_with_sign.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Helper function to compare times taking into account the sign of dt
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2012-2015 Mario Mulansky
|
|
10
|
+
Copyright 2012 Karsten Ahnert
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_LESS_WITH_SIGN_HPP_INCLUDED
|
|
18
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_LESS_WITH_SIGN_HPP_INCLUDED
|
|
19
|
+
|
|
20
|
+
#include <limits>
|
|
21
|
+
|
|
22
|
+
#include <boost/numeric/odeint/util/unit_helper.hpp>
|
|
23
|
+
|
|
24
|
+
namespace boost {
|
|
25
|
+
namespace numeric {
|
|
26
|
+
namespace odeint {
|
|
27
|
+
namespace detail {
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* return t1 < t2 if dt > 0 and t1 > t2 if dt < 0 with epsilon accuracy
|
|
31
|
+
*/
|
|
32
|
+
template< typename T >
|
|
33
|
+
bool less_with_sign( T t1 , T t2 , T dt )
|
|
34
|
+
{
|
|
35
|
+
if( get_unit_value(dt) > 0 )
|
|
36
|
+
//return t1 < t2;
|
|
37
|
+
return t2-t1 > std::numeric_limits<T>::epsilon();
|
|
38
|
+
else
|
|
39
|
+
//return t1 > t2;
|
|
40
|
+
return t1-t2 > std::numeric_limits<T>::epsilon();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* return t1 <= t2 if dt > 0 and t1 => t2 if dt < 0 with epsilon accuracy
|
|
45
|
+
*/
|
|
46
|
+
template< typename T >
|
|
47
|
+
bool less_eq_with_sign( T t1 , T t2 , T dt )
|
|
48
|
+
{
|
|
49
|
+
if( get_unit_value(dt) > 0 )
|
|
50
|
+
return t1-t2 <= std::numeric_limits<T>::epsilon();
|
|
51
|
+
else
|
|
52
|
+
return t2-t1 <= std::numeric_limits<T>::epsilon();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
template< typename T >
|
|
56
|
+
T min_abs( T t1 , T t2 )
|
|
57
|
+
{
|
|
58
|
+
BOOST_USING_STD_MIN();
|
|
59
|
+
BOOST_USING_STD_MAX();
|
|
60
|
+
if( get_unit_value(t1)>0 )
|
|
61
|
+
return min BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
|
|
62
|
+
else
|
|
63
|
+
return max BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
template< typename T >
|
|
67
|
+
T max_abs( T t1 , T t2 )
|
|
68
|
+
{
|
|
69
|
+
BOOST_USING_STD_MIN();
|
|
70
|
+
BOOST_USING_STD_MAX();
|
|
71
|
+
if( get_unit_value(t1)>0 )
|
|
72
|
+
return max BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
|
|
73
|
+
else
|
|
74
|
+
return min BOOST_PREVENT_MACRO_SUBSTITUTION ( t1 , t2 );
|
|
75
|
+
}
|
|
76
|
+
} } } }
|
|
77
|
+
|
|
78
|
+
#endif
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/is_pair.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Metafunction to determine if a type is a std::pair<>.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011 Karsten Ahnert
|
|
10
|
+
Copyright 2011 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_IS_PAIR_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_IS_PAIR_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
|
|
23
|
+
namespace boost {
|
|
24
|
+
namespace numeric {
|
|
25
|
+
namespace odeint {
|
|
26
|
+
|
|
27
|
+
template< class T >
|
|
28
|
+
struct is_pair : public std::integral_constant<bool, false>
|
|
29
|
+
{
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
template< class T1 , class T2 >
|
|
33
|
+
struct is_pair< std::pair< T1 , T2 > > : public std::integral_constant<bool, true>
|
|
34
|
+
{
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
} // namespace odeint
|
|
38
|
+
} // namespace numeric
|
|
39
|
+
} // namespace boost
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_IS_PAIR_HPP_INCLUDED
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/is_resizeable.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Metafunction to determine if a state type can resized. For usage in the steppers.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_IS_RESIZEABLE_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_IS_RESIZEABLE_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#include <vector>
|
|
23
|
+
#include <type_traits>
|
|
24
|
+
|
|
25
|
+
#include <boost/type_traits/integral_constant.hpp>
|
|
26
|
+
#include <boost/type_traits/remove_reference.hpp>
|
|
27
|
+
#include <boost/fusion/include/front.hpp>
|
|
28
|
+
#include <boost/fusion/include/is_sequence.hpp>
|
|
29
|
+
|
|
30
|
+
#include <boost/mpl/find_if.hpp>
|
|
31
|
+
#include <boost/mpl/end.hpp>
|
|
32
|
+
#include <boost/mpl/placeholders.hpp>
|
|
33
|
+
#include <boost/mpl/if.hpp>
|
|
34
|
+
#include <boost/type_traits/is_same.hpp>
|
|
35
|
+
|
|
36
|
+
namespace boost {
|
|
37
|
+
namespace numeric {
|
|
38
|
+
namespace odeint {
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* by default any type is not resizable
|
|
42
|
+
*/
|
|
43
|
+
template< typename Container , typename Enabler = void >
|
|
44
|
+
struct is_resizeable_sfinae : std::false_type {};
|
|
45
|
+
|
|
46
|
+
template< typename Container >
|
|
47
|
+
struct is_resizeable : is_resizeable_sfinae< Container > {};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* specialization for std::vector
|
|
53
|
+
*/
|
|
54
|
+
template< class V, class A >
|
|
55
|
+
struct is_resizeable< std::vector< V , A > > : std::true_type {};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* sfinae specialization for fusion sequences
|
|
60
|
+
*/
|
|
61
|
+
template< typename FusionSequence >
|
|
62
|
+
struct is_resizeable_sfinae<
|
|
63
|
+
FusionSequence ,
|
|
64
|
+
typename boost::enable_if< typename boost::fusion::traits::is_sequence< FusionSequence >::type >::type >
|
|
65
|
+
{
|
|
66
|
+
typedef typename boost::mpl::find_if< FusionSequence , is_resizeable< boost::mpl::_1 > >::type iter;
|
|
67
|
+
typedef typename boost::mpl::end< FusionSequence >::type last;
|
|
68
|
+
|
|
69
|
+
typedef typename boost::mpl::if_< boost::is_same< iter , last > , std::false_type , std::true_type >::type type;
|
|
70
|
+
const static bool value = type::value;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
} // namespace odeint
|
|
79
|
+
} // namespace numeric
|
|
80
|
+
} // namespace boost
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_IS_RESIZEABLE_HPP_INCLUDED
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/multi_array_adaption.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
tba.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2009-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_MULTI_ARRAY_ADAPTION_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_MULTI_ARRAY_ADAPTION_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/util/resize.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/util/same_size.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/mpl/and.hpp>
|
|
28
|
+
#include <boost/mpl/bool.hpp>
|
|
29
|
+
#include <boost/multi_array.hpp>
|
|
30
|
+
|
|
31
|
+
#include <type_traits>
|
|
32
|
+
|
|
33
|
+
namespace boost {
|
|
34
|
+
namespace numeric {
|
|
35
|
+
namespace odeint {
|
|
36
|
+
|
|
37
|
+
template< typename T >
|
|
38
|
+
struct is_multi_array
|
|
39
|
+
{
|
|
40
|
+
typedef std::false_type type;
|
|
41
|
+
const static bool value = type::value;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
template< typename T >
|
|
45
|
+
struct is_resizeable_multi_array
|
|
46
|
+
{
|
|
47
|
+
typedef std::false_type type;
|
|
48
|
+
const static bool value = type::value;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
template< typename V , size_t Dim , typename A >
|
|
54
|
+
struct is_multi_array< boost::multi_array< V , Dim , A > >
|
|
55
|
+
{
|
|
56
|
+
typedef std::true_type type;
|
|
57
|
+
const static bool value = type::value;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
template< typename V , size_t Dim , typename A >
|
|
61
|
+
struct is_resizeable_multi_array< boost::multi_array< V , Dim , A > >
|
|
62
|
+
{
|
|
63
|
+
typedef std::true_type type;
|
|
64
|
+
const static bool value = type::value;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
template< typename T >
|
|
71
|
+
struct is_resizeable_sfinae< T , typename boost::enable_if< typename is_resizeable_multi_array< T >::type >::type >
|
|
72
|
+
{
|
|
73
|
+
typedef std::true_type type;
|
|
74
|
+
const static bool value = type::value;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
template< typename T1 , typename T2 >
|
|
82
|
+
struct same_size_impl_sfinae< T1 , T2 ,
|
|
83
|
+
typename boost::enable_if<
|
|
84
|
+
typename boost::mpl::and_<
|
|
85
|
+
is_multi_array< T1 > ,
|
|
86
|
+
is_multi_array< T2 > ,
|
|
87
|
+
boost::mpl::bool_< T1::dimensionality == T2::dimensionality >
|
|
88
|
+
>::type
|
|
89
|
+
>::type >
|
|
90
|
+
{
|
|
91
|
+
static bool same_size( T1 const &x1 , T2 const &x2 )
|
|
92
|
+
{
|
|
93
|
+
for( size_t i=0 ; i<T1::dimensionality ; ++i )
|
|
94
|
+
{
|
|
95
|
+
if( x1.shape()[i] != x2.shape()[i] ) return false;
|
|
96
|
+
if( x1.index_bases()[i] != x2.index_bases()[i] ) return false;
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
template< typename T1 , typename T2 >
|
|
104
|
+
struct resize_impl_sfinae< T1 , T2 ,
|
|
105
|
+
typename boost::enable_if<
|
|
106
|
+
typename boost::mpl::and_<
|
|
107
|
+
is_resizeable_multi_array< T1 > ,
|
|
108
|
+
is_multi_array< T2 > ,
|
|
109
|
+
boost::mpl::bool_< T1::dimensionality == T2::dimensionality >
|
|
110
|
+
>::type
|
|
111
|
+
>::type >
|
|
112
|
+
{
|
|
113
|
+
static void resize( T1 &x1 , const T2 &x2 )
|
|
114
|
+
{
|
|
115
|
+
std::array< int , T1::dimensionality > extents;
|
|
116
|
+
for( size_t i=0 ; i<T1::dimensionality ; ++i ) extents[i] = x2.shape()[i];
|
|
117
|
+
x1.resize( extents );
|
|
118
|
+
std::array< int , T1::dimensionality > origins;
|
|
119
|
+
for( size_t i=0 ; i<T1::dimensionality ; ++i ) origins[i] = x2.index_bases()[i];
|
|
120
|
+
x1.reindex( origins );
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
} // namespace odeint
|
|
127
|
+
} // namespace numeric
|
|
128
|
+
} // namespace boost
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_MULTI_ARRAY_ADAPTION_HPP_DEFINED
|