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,240 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/rosenbrock4_controller.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Controller for the Rosenbrock4 method.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
Copyright 2012 Christoph Koke
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_CONTROLLER_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_CONTROLLER_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <boost/config.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/util/bind.hpp>
|
|
24
|
+
|
|
25
|
+
#include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
27
|
+
|
|
28
|
+
#include <boost/numeric/odeint/util/copy.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
31
|
+
|
|
32
|
+
#include <boost/numeric/odeint/stepper/rosenbrock4.hpp>
|
|
33
|
+
|
|
34
|
+
namespace boost {
|
|
35
|
+
namespace numeric {
|
|
36
|
+
namespace odeint {
|
|
37
|
+
|
|
38
|
+
template< class Stepper >
|
|
39
|
+
class rosenbrock4_controller
|
|
40
|
+
{
|
|
41
|
+
private:
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
public:
|
|
45
|
+
|
|
46
|
+
typedef Stepper stepper_type;
|
|
47
|
+
typedef typename stepper_type::value_type value_type;
|
|
48
|
+
typedef typename stepper_type::state_type state_type;
|
|
49
|
+
typedef typename stepper_type::wrapped_state_type wrapped_state_type;
|
|
50
|
+
typedef typename stepper_type::time_type time_type;
|
|
51
|
+
typedef typename stepper_type::deriv_type deriv_type;
|
|
52
|
+
typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
|
|
53
|
+
typedef typename stepper_type::resizer_type resizer_type;
|
|
54
|
+
typedef controlled_stepper_tag stepper_category;
|
|
55
|
+
|
|
56
|
+
typedef rosenbrock4_controller< Stepper > controller_type;
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
rosenbrock4_controller( value_type atol = 1.0e-6 , value_type rtol = 1.0e-6 ,
|
|
60
|
+
const stepper_type &stepper = stepper_type() )
|
|
61
|
+
: m_stepper( stepper ) , m_atol( atol ) , m_rtol( rtol ) ,
|
|
62
|
+
m_max_dt( static_cast<time_type>(0) ) ,
|
|
63
|
+
m_first_step( true ) , m_err_old( 0.0 ) , m_dt_old( 0.0 ) ,
|
|
64
|
+
m_last_rejected( false )
|
|
65
|
+
{ }
|
|
66
|
+
|
|
67
|
+
rosenbrock4_controller( value_type atol, value_type rtol, time_type max_dt,
|
|
68
|
+
const stepper_type &stepper = stepper_type() )
|
|
69
|
+
: m_stepper( stepper ) , m_atol( atol ) , m_rtol( rtol ) , m_max_dt( max_dt ) ,
|
|
70
|
+
m_first_step( true ) , m_err_old( 0.0 ) , m_dt_old( 0.0 ) ,
|
|
71
|
+
m_last_rejected( false )
|
|
72
|
+
{ }
|
|
73
|
+
|
|
74
|
+
value_type error( const state_type &x , const state_type &xold , const state_type &xerr )
|
|
75
|
+
{
|
|
76
|
+
BOOST_USING_STD_MAX();
|
|
77
|
+
using std::abs;
|
|
78
|
+
using std::sqrt;
|
|
79
|
+
|
|
80
|
+
const size_t n = x.size();
|
|
81
|
+
value_type err = 0.0 , sk = 0.0;
|
|
82
|
+
for( size_t i=0 ; i<n ; ++i )
|
|
83
|
+
{
|
|
84
|
+
sk = m_atol + m_rtol * max BOOST_PREVENT_MACRO_SUBSTITUTION ( abs( xold[i] ) , abs( x[i] ) );
|
|
85
|
+
err += xerr[i] * xerr[i] / sk / sk;
|
|
86
|
+
}
|
|
87
|
+
return sqrt( err / value_type( n ) );
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
value_type last_error( void ) const
|
|
91
|
+
{
|
|
92
|
+
return m_err_old;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
template< class System >
|
|
99
|
+
boost::numeric::odeint::controlled_step_result
|
|
100
|
+
try_step( System sys , state_type &x , time_type &t , time_type &dt )
|
|
101
|
+
{
|
|
102
|
+
m_xnew_resizer.adjust_size(x, [this](auto&& arg) { return this->resize_m_xnew<state_type>(std::forward<decltype(arg)>(arg)); });
|
|
103
|
+
boost::numeric::odeint::controlled_step_result res = try_step( sys , x , t , m_xnew.m_v , dt );
|
|
104
|
+
if( res == success )
|
|
105
|
+
{
|
|
106
|
+
boost::numeric::odeint::copy( m_xnew.m_v , x );
|
|
107
|
+
}
|
|
108
|
+
return res;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
template< class System >
|
|
113
|
+
boost::numeric::odeint::controlled_step_result
|
|
114
|
+
try_step( System sys , const state_type &x , time_type &t , state_type &xout , time_type &dt )
|
|
115
|
+
{
|
|
116
|
+
if( m_max_dt != static_cast<time_type>(0) && detail::less_with_sign(m_max_dt, dt, dt) )
|
|
117
|
+
{
|
|
118
|
+
// given step size is bigger then max_dt
|
|
119
|
+
// set limit and return fail
|
|
120
|
+
dt = m_max_dt;
|
|
121
|
+
return fail;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
BOOST_USING_STD_MIN();
|
|
125
|
+
BOOST_USING_STD_MAX();
|
|
126
|
+
using std::pow;
|
|
127
|
+
|
|
128
|
+
static const value_type safe = 0.9 , fac1 = 5.0 , fac2 = 1.0 / 6.0;
|
|
129
|
+
|
|
130
|
+
m_xerr_resizer.adjust_size(x, [this](auto&& arg) { return this->resize_m_xerr<state_type>(std::forward<decltype(arg)>(arg)); });
|
|
131
|
+
|
|
132
|
+
m_stepper.do_step( sys , x , t , xout , dt , m_xerr.m_v );
|
|
133
|
+
value_type err = error( xout , x , m_xerr.m_v );
|
|
134
|
+
|
|
135
|
+
value_type fac = max BOOST_PREVENT_MACRO_SUBSTITUTION (
|
|
136
|
+
fac2 , min BOOST_PREVENT_MACRO_SUBSTITUTION (
|
|
137
|
+
fac1 ,
|
|
138
|
+
static_cast< value_type >( pow( err , 0.25 ) / safe ) ) );
|
|
139
|
+
value_type dt_new = dt / fac;
|
|
140
|
+
if ( err <= 1.0 )
|
|
141
|
+
{
|
|
142
|
+
if( m_first_step )
|
|
143
|
+
{
|
|
144
|
+
m_first_step = false;
|
|
145
|
+
}
|
|
146
|
+
else
|
|
147
|
+
{
|
|
148
|
+
value_type fac_pred = ( m_dt_old / dt ) * pow( err * err / m_err_old , 0.25 ) / safe;
|
|
149
|
+
fac_pred = max BOOST_PREVENT_MACRO_SUBSTITUTION (
|
|
150
|
+
fac2 , min BOOST_PREVENT_MACRO_SUBSTITUTION ( fac1 , fac_pred ) );
|
|
151
|
+
fac = max BOOST_PREVENT_MACRO_SUBSTITUTION ( fac , fac_pred );
|
|
152
|
+
dt_new = dt / fac;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
m_dt_old = dt;
|
|
156
|
+
m_err_old = max BOOST_PREVENT_MACRO_SUBSTITUTION ( static_cast< value_type >( 0.01 ) , err );
|
|
157
|
+
if( m_last_rejected )
|
|
158
|
+
dt_new = ( dt >= 0.0 ?
|
|
159
|
+
min BOOST_PREVENT_MACRO_SUBSTITUTION ( dt_new , dt ) :
|
|
160
|
+
max BOOST_PREVENT_MACRO_SUBSTITUTION ( dt_new , dt ) );
|
|
161
|
+
t += dt;
|
|
162
|
+
// limit step size to max_dt
|
|
163
|
+
if( m_max_dt != static_cast<time_type>(0) )
|
|
164
|
+
{
|
|
165
|
+
dt = detail::min_abs(m_max_dt, dt_new);
|
|
166
|
+
} else {
|
|
167
|
+
dt = dt_new;
|
|
168
|
+
}
|
|
169
|
+
m_last_rejected = false;
|
|
170
|
+
return success;
|
|
171
|
+
}
|
|
172
|
+
else
|
|
173
|
+
{
|
|
174
|
+
dt = dt_new;
|
|
175
|
+
m_last_rejected = true;
|
|
176
|
+
return fail;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
template< class StateType >
|
|
182
|
+
void adjust_size( const StateType &x )
|
|
183
|
+
{
|
|
184
|
+
resize_m_xerr( x );
|
|
185
|
+
resize_m_xnew( x );
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
stepper_type& stepper( void )
|
|
191
|
+
{
|
|
192
|
+
return m_stepper;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const stepper_type& stepper( void ) const
|
|
196
|
+
{
|
|
197
|
+
return m_stepper;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
protected:
|
|
204
|
+
|
|
205
|
+
template< class StateIn >
|
|
206
|
+
bool resize_m_xerr( const StateIn &x )
|
|
207
|
+
{
|
|
208
|
+
return adjust_size_by_resizeability( m_xerr , x , typename is_resizeable<state_type>::type() );
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
template< class StateIn >
|
|
212
|
+
bool resize_m_xnew( const StateIn &x )
|
|
213
|
+
{
|
|
214
|
+
return adjust_size_by_resizeability( m_xnew , x , typename is_resizeable<state_type>::type() );
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
stepper_type m_stepper;
|
|
219
|
+
resizer_type m_xerr_resizer;
|
|
220
|
+
resizer_type m_xnew_resizer;
|
|
221
|
+
wrapped_state_type m_xerr;
|
|
222
|
+
wrapped_state_type m_xnew;
|
|
223
|
+
value_type m_atol , m_rtol;
|
|
224
|
+
time_type m_max_dt;
|
|
225
|
+
bool m_first_step;
|
|
226
|
+
value_type m_err_old , m_dt_old;
|
|
227
|
+
bool m_last_rejected;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
} // namespace odeint
|
|
236
|
+
} // namespace numeric
|
|
237
|
+
} // namespace boost
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_CONTROLLER_HPP_INCLUDED
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Dense output for Rosenbrock 4.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2015 Mario Mulansky
|
|
11
|
+
Copyright 2012 Christoph Koke
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include <utility>
|
|
24
|
+
|
|
25
|
+
#include <boost/numeric/odeint/util/bind.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/numeric/odeint/stepper/rosenbrock4_controller.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
29
|
+
|
|
30
|
+
#include <boost/numeric/odeint/integrate/max_step_checker.hpp>
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
namespace boost {
|
|
34
|
+
namespace numeric {
|
|
35
|
+
namespace odeint {
|
|
36
|
+
|
|
37
|
+
template< class ControlledStepper >
|
|
38
|
+
class rosenbrock4_dense_output
|
|
39
|
+
{
|
|
40
|
+
|
|
41
|
+
public:
|
|
42
|
+
|
|
43
|
+
typedef ControlledStepper controlled_stepper_type;
|
|
44
|
+
typedef typename unwrap_reference< controlled_stepper_type >::type unwrapped_controlled_stepper_type;
|
|
45
|
+
typedef typename unwrapped_controlled_stepper_type::stepper_type stepper_type;
|
|
46
|
+
typedef typename stepper_type::value_type value_type;
|
|
47
|
+
typedef typename stepper_type::state_type state_type;
|
|
48
|
+
typedef typename stepper_type::wrapped_state_type wrapped_state_type;
|
|
49
|
+
typedef typename stepper_type::time_type time_type;
|
|
50
|
+
typedef typename stepper_type::deriv_type deriv_type;
|
|
51
|
+
typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
|
|
52
|
+
typedef typename stepper_type::resizer_type resizer_type;
|
|
53
|
+
typedef dense_output_stepper_tag stepper_category;
|
|
54
|
+
|
|
55
|
+
typedef rosenbrock4_dense_output< ControlledStepper > dense_output_stepper_type;
|
|
56
|
+
|
|
57
|
+
rosenbrock4_dense_output( const controlled_stepper_type &stepper = controlled_stepper_type() )
|
|
58
|
+
: m_stepper( stepper ) ,
|
|
59
|
+
m_x1() , m_x2() ,
|
|
60
|
+
m_current_state_x1( true ) ,
|
|
61
|
+
m_t() , m_t_old() , m_dt()
|
|
62
|
+
{
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
template< class StateType >
|
|
68
|
+
void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
|
|
69
|
+
{
|
|
70
|
+
m_resizer.adjust_size(x0, [this](auto&& arg) { return this->resize_impl<StateType>(std::forward<decltype(arg)>(arg)); });
|
|
71
|
+
get_current_state() = x0;
|
|
72
|
+
m_t = t0;
|
|
73
|
+
m_dt = dt0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
template< class System >
|
|
77
|
+
std::pair< time_type , time_type > do_step( System system )
|
|
78
|
+
{
|
|
79
|
+
unwrapped_controlled_stepper_type &stepper = m_stepper;
|
|
80
|
+
failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
|
|
81
|
+
controlled_step_result res = fail;
|
|
82
|
+
m_t_old = m_t;
|
|
83
|
+
do
|
|
84
|
+
{
|
|
85
|
+
res = stepper.try_step( system , get_current_state() , m_t , get_old_state() , m_dt );
|
|
86
|
+
fail_checker(); // check for overflow of failed steps
|
|
87
|
+
}
|
|
88
|
+
while( res == fail );
|
|
89
|
+
stepper.stepper().prepare_dense_output();
|
|
90
|
+
this->toggle_current_state();
|
|
91
|
+
return std::make_pair( m_t_old , m_t );
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* The two overloads are needed in order to solve the forwarding problem.
|
|
97
|
+
*/
|
|
98
|
+
template< class StateOut >
|
|
99
|
+
void calc_state( time_type t , StateOut &x )
|
|
100
|
+
{
|
|
101
|
+
unwrapped_controlled_stepper_type &stepper = m_stepper;
|
|
102
|
+
stepper.stepper().calc_state( t , x , get_old_state() , m_t_old , get_current_state() , m_t );
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
template< class StateOut >
|
|
106
|
+
void calc_state( time_type t , const StateOut &x )
|
|
107
|
+
{
|
|
108
|
+
unwrapped_controlled_stepper_type &stepper = m_stepper;
|
|
109
|
+
stepper.stepper().calc_state( t , x , get_old_state() , m_t_old , get_current_state() , m_t );
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
template< class StateType >
|
|
114
|
+
void adjust_size( const StateType &x )
|
|
115
|
+
{
|
|
116
|
+
unwrapped_controlled_stepper_type &stepper = m_stepper;
|
|
117
|
+
stepper.adjust_size( x );
|
|
118
|
+
resize_impl( x );
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
const state_type& current_state( void ) const
|
|
125
|
+
{
|
|
126
|
+
return get_current_state();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
time_type current_time( void ) const
|
|
130
|
+
{
|
|
131
|
+
return m_t;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const state_type& previous_state( void ) const
|
|
135
|
+
{
|
|
136
|
+
return get_old_state();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
time_type previous_time( void ) const
|
|
140
|
+
{
|
|
141
|
+
return m_t_old;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
time_type current_time_step( void ) const
|
|
145
|
+
{
|
|
146
|
+
return m_dt;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
private:
|
|
153
|
+
|
|
154
|
+
state_type& get_current_state( void )
|
|
155
|
+
{
|
|
156
|
+
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const state_type& get_current_state( void ) const
|
|
160
|
+
{
|
|
161
|
+
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
state_type& get_old_state( void )
|
|
165
|
+
{
|
|
166
|
+
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const state_type& get_old_state( void ) const
|
|
170
|
+
{
|
|
171
|
+
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
void toggle_current_state( void )
|
|
175
|
+
{
|
|
176
|
+
m_current_state_x1 = ! m_current_state_x1;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
template< class StateIn >
|
|
181
|
+
bool resize_impl( const StateIn &x )
|
|
182
|
+
{
|
|
183
|
+
bool resized = false;
|
|
184
|
+
resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
|
|
185
|
+
resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
|
|
186
|
+
return resized;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
controlled_stepper_type m_stepper;
|
|
191
|
+
resizer_type m_resizer;
|
|
192
|
+
wrapped_state_type m_x1 , m_x2;
|
|
193
|
+
bool m_current_state_x1;
|
|
194
|
+
time_type m_t , m_t_old , m_dt;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
} // namespace odeint
|
|
200
|
+
} // namespace numeric
|
|
201
|
+
} // namespace boost
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/runge_kutta4.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Implementation of the classical Runge-Kutta stepper with the generic stepper.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2013 Mario Mulansky
|
|
10
|
+
Copyright 2011-2013 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
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA4_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA4_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
#include <boost/fusion/container/vector.hpp>
|
|
25
|
+
#include <boost/fusion/container/generation/make_vector.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/numeric/odeint/stepper/explicit_generic_rk.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/algebra/range_algebra.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/algebra/default_operations.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
|
31
|
+
#include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
|
|
32
|
+
|
|
33
|
+
#include <array>
|
|
34
|
+
|
|
35
|
+
#include <boost/numeric/odeint/util/resizer.hpp>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
namespace boost {
|
|
40
|
+
namespace numeric {
|
|
41
|
+
namespace odeint {
|
|
42
|
+
|
|
43
|
+
#ifndef DOXYGEN_SKIP
|
|
44
|
+
template< class Value = double >
|
|
45
|
+
struct rk4_coefficients_a1 : std::array< Value , 1 >
|
|
46
|
+
{
|
|
47
|
+
rk4_coefficients_a1( void )
|
|
48
|
+
{
|
|
49
|
+
(*this)[0] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
template< class Value = double >
|
|
54
|
+
struct rk4_coefficients_a2 : std::array< Value , 2 >
|
|
55
|
+
{
|
|
56
|
+
rk4_coefficients_a2( void )
|
|
57
|
+
{
|
|
58
|
+
(*this)[0] = static_cast<Value>(0);
|
|
59
|
+
(*this)[1] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
template< class Value = double >
|
|
65
|
+
struct rk4_coefficients_a3 : std::array< Value , 3 >
|
|
66
|
+
{
|
|
67
|
+
rk4_coefficients_a3( void )
|
|
68
|
+
{
|
|
69
|
+
(*this)[0] = static_cast<Value>(0);
|
|
70
|
+
(*this)[1] = static_cast<Value>(0);
|
|
71
|
+
(*this)[2] = static_cast<Value>(1);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
template< class Value = double >
|
|
76
|
+
struct rk4_coefficients_b : std::array< Value , 4 >
|
|
77
|
+
{
|
|
78
|
+
rk4_coefficients_b( void )
|
|
79
|
+
{
|
|
80
|
+
(*this)[0] = static_cast<Value>(1)/static_cast<Value>(6);
|
|
81
|
+
(*this)[1] = static_cast<Value>(1)/static_cast<Value>(3);
|
|
82
|
+
(*this)[2] = static_cast<Value>(1)/static_cast<Value>(3);
|
|
83
|
+
(*this)[3] = static_cast<Value>(1)/static_cast<Value>(6);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
template< class Value = double >
|
|
88
|
+
struct rk4_coefficients_c : std::array< Value , 4 >
|
|
89
|
+
{
|
|
90
|
+
rk4_coefficients_c( void )
|
|
91
|
+
{
|
|
92
|
+
(*this)[0] = static_cast<Value>(0);
|
|
93
|
+
(*this)[1] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
94
|
+
(*this)[2] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
95
|
+
(*this)[3] = static_cast<Value>(1);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
#endif
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
template<
|
|
103
|
+
class State ,
|
|
104
|
+
class Value = double ,
|
|
105
|
+
class Deriv = State ,
|
|
106
|
+
class Time = Value ,
|
|
107
|
+
class Algebra = typename algebra_dispatcher< State >::algebra_type ,
|
|
108
|
+
class Operations = typename operations_dispatcher< State >::operations_type ,
|
|
109
|
+
class Resizer = initially_resizer
|
|
110
|
+
>
|
|
111
|
+
#ifndef DOXYGEN_SKIP
|
|
112
|
+
class runge_kutta4 : public explicit_generic_rk< 4 , 4 , State , Value , Deriv , Time ,
|
|
113
|
+
Algebra , Operations , Resizer >
|
|
114
|
+
#else
|
|
115
|
+
class runge_kutta4 : public explicit_generic_rk
|
|
116
|
+
#endif
|
|
117
|
+
{
|
|
118
|
+
|
|
119
|
+
public:
|
|
120
|
+
|
|
121
|
+
#ifndef DOXYGEN_SKIP
|
|
122
|
+
typedef explicit_generic_rk< 4 , 4 , State , Value , Deriv , Time ,
|
|
123
|
+
Algebra , Operations , Resizer > stepper_base_type;
|
|
124
|
+
#endif
|
|
125
|
+
typedef typename stepper_base_type::state_type state_type;
|
|
126
|
+
typedef typename stepper_base_type::value_type value_type;
|
|
127
|
+
typedef typename stepper_base_type::deriv_type deriv_type;
|
|
128
|
+
typedef typename stepper_base_type::time_type time_type;
|
|
129
|
+
typedef typename stepper_base_type::algebra_type algebra_type;
|
|
130
|
+
typedef typename stepper_base_type::operations_type operations_type;
|
|
131
|
+
typedef typename stepper_base_type::resizer_type resizer_type;
|
|
132
|
+
|
|
133
|
+
#ifndef DOXYGEN_SKIP
|
|
134
|
+
typedef typename stepper_base_type::wrapped_state_type wrapped_state_type;
|
|
135
|
+
typedef typename stepper_base_type::wrapped_deriv_type wrapped_deriv_type;
|
|
136
|
+
typedef typename stepper_base_type::stepper_type stepper_type;
|
|
137
|
+
#endif
|
|
138
|
+
|
|
139
|
+
runge_kutta4( const algebra_type &algebra = algebra_type() ) : stepper_base_type(
|
|
140
|
+
boost::fusion::make_vector( rk4_coefficients_a1<Value>() , rk4_coefficients_a2<Value>() , rk4_coefficients_a3<Value>() ) ,
|
|
141
|
+
rk4_coefficients_b<Value>() , rk4_coefficients_c<Value>() , algebra )
|
|
142
|
+
{ }
|
|
143
|
+
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* \class runge_kutta4
|
|
148
|
+
* \brief The classical Runge-Kutta stepper of fourth order.
|
|
149
|
+
*
|
|
150
|
+
* The Runge-Kutta method of fourth order is one standard method for
|
|
151
|
+
* solving ordinary differential equations and is widely used, see also
|
|
152
|
+
* <a href="http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods">en.wikipedia.org/wiki/Runge-Kutta_methods</a>
|
|
153
|
+
* The method is explicit and fulfills the Stepper concept. Step size control
|
|
154
|
+
* or continuous output are not provided.
|
|
155
|
+
*
|
|
156
|
+
* This class derives from explicit_stepper_base and inherits its interface via CRTP (current recurring template pattern).
|
|
157
|
+
* Furthermore, it derivs from explicit_generic_rk which is a generic Runge-Kutta algorithm. For more details see
|
|
158
|
+
* explicit_stepper_base and explicit_generic_rk.
|
|
159
|
+
*
|
|
160
|
+
* \tparam State The state type.
|
|
161
|
+
* \tparam Value The value type.
|
|
162
|
+
* \tparam Deriv The type representing the time derivative of the state.
|
|
163
|
+
* \tparam Time The time representing the independent variable - the time.
|
|
164
|
+
* \tparam Algebra The algebra type.
|
|
165
|
+
* \tparam Operations The operations type.
|
|
166
|
+
* \tparam Resizer The resizer policy type.
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* \fn runge_kutta4::runge_kutta4( const algebra_type &algebra = algebra_type() )
|
|
171
|
+
* \brief Constructs the runge_kutta4 class. This constructor can be used as a default
|
|
172
|
+
* constructor if the algebra has a default constructor.
|
|
173
|
+
* \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA4_HPP_INCLUDED
|