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,374 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/runge_kutta_fehlberg87.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Implementation of the Runge-Kutta-Fehlberg stepper with the generic stepper.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2013 Mario Mulansky
|
|
10
|
+
Copyright 2012-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_KUTTA_FEHLBERG87_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_FEHLBERG87_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#include <boost/fusion/container/vector.hpp>
|
|
23
|
+
#include <boost/fusion/container/generation/make_vector.hpp>
|
|
24
|
+
|
|
25
|
+
#include <boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/algebra/range_algebra.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/algebra/default_operations.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
|
|
30
|
+
|
|
31
|
+
#include <array>
|
|
32
|
+
|
|
33
|
+
#include <boost/numeric/odeint/util/state_wrapper.hpp>
|
|
34
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
35
|
+
#include <boost/numeric/odeint/util/resizer.hpp>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
namespace boost {
|
|
41
|
+
namespace numeric {
|
|
42
|
+
namespace odeint {
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
#ifndef DOXYGEN_SKIP
|
|
46
|
+
template< class Value = double >
|
|
47
|
+
struct rk78_coefficients_a1 : std::array< Value , 1 >
|
|
48
|
+
{
|
|
49
|
+
rk78_coefficients_a1( void )
|
|
50
|
+
{
|
|
51
|
+
(*this)[0] = static_cast< Value >( 2 )/static_cast< Value >( 27 );
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
template< class Value = double >
|
|
56
|
+
struct rk78_coefficients_a2 : std::array< Value , 2 >
|
|
57
|
+
{
|
|
58
|
+
rk78_coefficients_a2( void )
|
|
59
|
+
{
|
|
60
|
+
(*this)[0] = static_cast< Value >( 1 )/static_cast< Value >( 36 );
|
|
61
|
+
(*this)[1] = static_cast< Value >( 1 )/static_cast< Value >( 12 );
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
template< class Value = double >
|
|
67
|
+
struct rk78_coefficients_a3 : std::array< Value , 3 >
|
|
68
|
+
{
|
|
69
|
+
rk78_coefficients_a3( void )
|
|
70
|
+
{
|
|
71
|
+
(*this)[0] = static_cast< Value >( 1 )/static_cast< Value >( 24 );
|
|
72
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
73
|
+
(*this)[2] = static_cast< Value >( 1 )/static_cast< Value >( 8 );
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
template< class Value = double >
|
|
78
|
+
struct rk78_coefficients_a4 : std::array< Value , 4 >
|
|
79
|
+
{
|
|
80
|
+
rk78_coefficients_a4( void )
|
|
81
|
+
{
|
|
82
|
+
(*this)[0] = static_cast< Value >( 5 )/static_cast< Value >( 12 );
|
|
83
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
84
|
+
(*this)[2] = static_cast< Value >( -25 )/static_cast< Value >( 16 );
|
|
85
|
+
(*this)[3] = static_cast< Value >( 25 )/static_cast< Value >( 16 );
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
template< class Value = double >
|
|
90
|
+
struct rk78_coefficients_a5 : std::array< Value , 5 >
|
|
91
|
+
{
|
|
92
|
+
rk78_coefficients_a5( void )
|
|
93
|
+
{
|
|
94
|
+
(*this)[0] = static_cast< Value >( 1 )/static_cast< Value >( 20 );
|
|
95
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
96
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
97
|
+
(*this)[3] = static_cast< Value >( 1 )/static_cast< Value >( 4 );
|
|
98
|
+
(*this)[4] = static_cast< Value >( 1 )/static_cast< Value >( 5 );
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
template< class Value = double >
|
|
104
|
+
struct rk78_coefficients_a6 : std::array< Value , 6 >
|
|
105
|
+
{
|
|
106
|
+
rk78_coefficients_a6( void )
|
|
107
|
+
{
|
|
108
|
+
(*this)[0] = static_cast< Value >( -25 )/static_cast< Value >( 108 );
|
|
109
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
110
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
111
|
+
(*this)[3] = static_cast< Value >( 125 )/static_cast< Value >( 108 );
|
|
112
|
+
(*this)[4] = static_cast< Value >( -65 )/static_cast< Value >( 27 );
|
|
113
|
+
(*this)[5] = static_cast< Value >( 125 )/static_cast< Value >( 54 );
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
template< class Value = double >
|
|
118
|
+
struct rk78_coefficients_a7 : std::array< Value , 7 >
|
|
119
|
+
{
|
|
120
|
+
rk78_coefficients_a7( void )
|
|
121
|
+
{
|
|
122
|
+
(*this)[0] = static_cast< Value >( 31 )/static_cast< Value >( 300 );
|
|
123
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
124
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
125
|
+
(*this)[3] = static_cast< Value >( 0 );
|
|
126
|
+
(*this)[4] = static_cast< Value >( 61 )/static_cast< Value >( 225 );
|
|
127
|
+
(*this)[5] = static_cast< Value >( -2 )/static_cast< Value >( 9 );
|
|
128
|
+
(*this)[6] = static_cast< Value >( 13 )/static_cast< Value >( 900 );
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
template< class Value = double >
|
|
133
|
+
struct rk78_coefficients_a8 : std::array< Value , 8 >
|
|
134
|
+
{
|
|
135
|
+
rk78_coefficients_a8( void )
|
|
136
|
+
{
|
|
137
|
+
(*this)[0] = static_cast< Value >( 2 );
|
|
138
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
139
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
140
|
+
(*this)[3] = static_cast< Value >( -53 )/static_cast< Value >( 6 );
|
|
141
|
+
(*this)[4] = static_cast< Value >( 704 )/static_cast< Value >( 45 );
|
|
142
|
+
(*this)[5] = static_cast< Value >( -107 )/static_cast< Value >( 9 );
|
|
143
|
+
(*this)[6] = static_cast< Value >( 67 )/static_cast< Value >( 90 );
|
|
144
|
+
(*this)[7] = static_cast< Value >( 3 );
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
template< class Value = double >
|
|
149
|
+
struct rk78_coefficients_a9 : std::array< Value , 9 >
|
|
150
|
+
{
|
|
151
|
+
rk78_coefficients_a9( void )
|
|
152
|
+
{
|
|
153
|
+
(*this)[0] = static_cast< Value >( -91 )/static_cast< Value >( 108 );
|
|
154
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
155
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
156
|
+
(*this)[3] = static_cast< Value >( 23 )/static_cast< Value >( 108 );
|
|
157
|
+
(*this)[4] = static_cast< Value >( -976 )/static_cast< Value >( 135 );
|
|
158
|
+
(*this)[5] = static_cast< Value >( 311 )/static_cast< Value >( 54 );
|
|
159
|
+
(*this)[6] = static_cast< Value >( -19 )/static_cast< Value >( 60 );
|
|
160
|
+
(*this)[7] = static_cast< Value >( 17 )/static_cast< Value >( 6 );
|
|
161
|
+
(*this)[8] = static_cast< Value >( -1 )/static_cast< Value >( 12 );
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
template< class Value = double >
|
|
166
|
+
struct rk78_coefficients_a10 : std::array< Value , 10 >
|
|
167
|
+
{
|
|
168
|
+
rk78_coefficients_a10( void )
|
|
169
|
+
{
|
|
170
|
+
(*this)[0] = static_cast< Value >( 2383 )/static_cast< Value >( 4100 );
|
|
171
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
172
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
173
|
+
(*this)[3] = static_cast< Value >( -341 )/static_cast< Value >( 164 );
|
|
174
|
+
(*this)[4] = static_cast< Value >( 4496 )/static_cast< Value >( 1025 );
|
|
175
|
+
(*this)[5] = static_cast< Value >( -301 )/static_cast< Value >( 82 );
|
|
176
|
+
(*this)[6] = static_cast< Value >( 2133 )/static_cast< Value >( 4100 );
|
|
177
|
+
(*this)[7] = static_cast< Value >( 45 )/static_cast< Value >( 82 );
|
|
178
|
+
(*this)[8] = static_cast< Value >( 45 )/static_cast< Value >( 164 );
|
|
179
|
+
(*this)[9] = static_cast< Value >( 18 )/static_cast< Value >( 41 );
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
template< class Value = double >
|
|
184
|
+
struct rk78_coefficients_a11 : std::array< Value , 11 >
|
|
185
|
+
{
|
|
186
|
+
rk78_coefficients_a11( void )
|
|
187
|
+
{
|
|
188
|
+
(*this)[0] = static_cast< Value >( 3 )/static_cast< Value >( 205 );
|
|
189
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
190
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
191
|
+
(*this)[3] = static_cast< Value >( 0 );
|
|
192
|
+
(*this)[4] = static_cast< Value >( 0 );
|
|
193
|
+
(*this)[5] = static_cast< Value >( -6 )/static_cast< Value >( 41 );
|
|
194
|
+
(*this)[6] = static_cast< Value >( -3 )/static_cast< Value >( 205 );
|
|
195
|
+
(*this)[7] = static_cast< Value >( -3 )/static_cast< Value >( 41 );
|
|
196
|
+
(*this)[8] = static_cast< Value >( 3 )/static_cast< Value >( 41 );
|
|
197
|
+
(*this)[9] = static_cast< Value >( 6 )/static_cast< Value >( 41 );
|
|
198
|
+
(*this)[10] = static_cast< Value >( 0 );
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
template< class Value = double >
|
|
203
|
+
struct rk78_coefficients_a12 : std::array< Value , 12 >
|
|
204
|
+
{
|
|
205
|
+
rk78_coefficients_a12( void )
|
|
206
|
+
{
|
|
207
|
+
(*this)[0] = static_cast< Value >( -1777 )/static_cast< Value >( 4100 );
|
|
208
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
209
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
210
|
+
(*this)[3] = static_cast< Value >( -341 )/static_cast< Value >( 164 );
|
|
211
|
+
(*this)[4] = static_cast< Value >( 4496 )/static_cast< Value >( 1025 );
|
|
212
|
+
(*this)[5] = static_cast< Value >( -289 )/static_cast< Value >( 82 );
|
|
213
|
+
(*this)[6] = static_cast< Value >( 2193 )/static_cast< Value >( 4100 );
|
|
214
|
+
(*this)[7] = static_cast< Value >( 51 )/static_cast< Value >( 82 );
|
|
215
|
+
(*this)[8] = static_cast< Value >( 33 )/static_cast< Value >( 164 );
|
|
216
|
+
(*this)[9] = static_cast< Value >( 12 )/static_cast< Value >( 41 );
|
|
217
|
+
(*this)[10] = static_cast< Value >( 0 );
|
|
218
|
+
(*this)[11] = static_cast< Value >( 1 );
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
template< class Value = double >
|
|
223
|
+
struct rk78_coefficients_b : std::array< Value , 13 >
|
|
224
|
+
{
|
|
225
|
+
rk78_coefficients_b( void )
|
|
226
|
+
{
|
|
227
|
+
(*this)[0] = static_cast< Value >( 0 );
|
|
228
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
229
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
230
|
+
(*this)[3] = static_cast< Value >( 0 );
|
|
231
|
+
(*this)[4] = static_cast< Value >( 0 );
|
|
232
|
+
(*this)[5] = static_cast< Value >( 34 )/static_cast<Value>( 105 );
|
|
233
|
+
(*this)[6] = static_cast< Value >( 9 )/static_cast<Value>( 35 );
|
|
234
|
+
(*this)[7] = static_cast< Value >( 9 )/static_cast<Value>( 35 );
|
|
235
|
+
(*this)[8] = static_cast< Value >( 9 )/static_cast<Value>( 280 );
|
|
236
|
+
(*this)[9] = static_cast< Value >( 9 )/static_cast<Value>( 280 );
|
|
237
|
+
(*this)[10] = static_cast< Value >( 0 );
|
|
238
|
+
(*this)[11] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
|
|
239
|
+
(*this)[12] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
template< class Value = double >
|
|
244
|
+
struct rk78_coefficients_db : std::array< Value , 13 >
|
|
245
|
+
{
|
|
246
|
+
rk78_coefficients_db( void )
|
|
247
|
+
{
|
|
248
|
+
(*this)[0] = static_cast< Value >( 0 ) - static_cast< Value >( 41 )/static_cast<Value>( 840 );
|
|
249
|
+
(*this)[1] = static_cast< Value >( 0 );
|
|
250
|
+
(*this)[2] = static_cast< Value >( 0 );
|
|
251
|
+
(*this)[3] = static_cast< Value >( 0 );
|
|
252
|
+
(*this)[4] = static_cast< Value >( 0 );
|
|
253
|
+
(*this)[5] = static_cast< Value >( 0 );
|
|
254
|
+
(*this)[6] = static_cast< Value >( 0 );
|
|
255
|
+
(*this)[7] = static_cast< Value >( 0 );
|
|
256
|
+
(*this)[8] = static_cast< Value >( 0 );
|
|
257
|
+
(*this)[9] = static_cast< Value >( 0 );
|
|
258
|
+
(*this)[10] = static_cast< Value >( 0 ) - static_cast< Value >( 41 )/static_cast<Value>( 840 );
|
|
259
|
+
(*this)[11] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
|
|
260
|
+
(*this)[12] = static_cast< Value >( 41 )/static_cast<Value>( 840 );
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
template< class Value = double >
|
|
266
|
+
struct rk78_coefficients_c : std::array< Value , 13 >
|
|
267
|
+
{
|
|
268
|
+
rk78_coefficients_c( void )
|
|
269
|
+
{
|
|
270
|
+
(*this)[0] = static_cast< Value >( 0 );
|
|
271
|
+
(*this)[1] = static_cast< Value >( 2 )/static_cast< Value >( 27 );
|
|
272
|
+
(*this)[2] = static_cast< Value >( 1 )/static_cast< Value >( 9 );
|
|
273
|
+
(*this)[3] = static_cast< Value >( 1 )/static_cast<Value>( 6 );
|
|
274
|
+
(*this)[4] = static_cast< Value >( 5 )/static_cast<Value>( 12 );
|
|
275
|
+
(*this)[5] = static_cast< Value >( 1 )/static_cast<Value>( 2 );
|
|
276
|
+
(*this)[6] = static_cast< Value >( 5 )/static_cast<Value>( 6 );
|
|
277
|
+
(*this)[7] = static_cast< Value >( 1 )/static_cast<Value>( 6 );
|
|
278
|
+
(*this)[8] = static_cast< Value >( 2 )/static_cast<Value>( 3 );
|
|
279
|
+
(*this)[9] = static_cast< Value >( 1 )/static_cast<Value>( 3 );
|
|
280
|
+
(*this)[10] = static_cast< Value >( 1 );
|
|
281
|
+
(*this)[11] = static_cast< Value >( 0 );
|
|
282
|
+
(*this)[12] = static_cast< Value >( 1 );
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
#endif // DOXYGEN_SKIP
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
template<
|
|
292
|
+
class State ,
|
|
293
|
+
class Value = double ,
|
|
294
|
+
class Deriv = State ,
|
|
295
|
+
class Time = Value ,
|
|
296
|
+
class Algebra = typename algebra_dispatcher< State >::algebra_type ,
|
|
297
|
+
class Operations = typename operations_dispatcher< State >::operations_type ,
|
|
298
|
+
class Resizer = initially_resizer
|
|
299
|
+
>
|
|
300
|
+
#ifndef DOXYGEN_SKIP
|
|
301
|
+
class runge_kutta_fehlberg78 : public explicit_error_generic_rk< 13 , 8 , 8 , 7 , State , Value , Deriv , Time ,
|
|
302
|
+
Algebra , Operations , Resizer >
|
|
303
|
+
#else
|
|
304
|
+
class runge_kutta_fehlberg78 : public explicit_error_generic_rk
|
|
305
|
+
#endif
|
|
306
|
+
{
|
|
307
|
+
|
|
308
|
+
public:
|
|
309
|
+
#ifndef DOXYGEN_SKIP
|
|
310
|
+
typedef explicit_error_generic_rk< 13 , 8 , 8 , 7 , State , Value , Deriv , Time ,
|
|
311
|
+
Algebra , Operations , Resizer > stepper_base_type;
|
|
312
|
+
#endif
|
|
313
|
+
typedef typename stepper_base_type::state_type state_type;
|
|
314
|
+
typedef typename stepper_base_type::value_type value_type;
|
|
315
|
+
typedef typename stepper_base_type::deriv_type deriv_type;
|
|
316
|
+
typedef typename stepper_base_type::time_type time_type;
|
|
317
|
+
typedef typename stepper_base_type::algebra_type algebra_type;
|
|
318
|
+
typedef typename stepper_base_type::operations_type operations_type;
|
|
319
|
+
typedef typename stepper_base_type::resizer_type resizer_type;
|
|
320
|
+
|
|
321
|
+
#ifndef DOXYGEN_SKIP
|
|
322
|
+
typedef typename stepper_base_type::stepper_type stepper_type;
|
|
323
|
+
typedef typename stepper_base_type::wrapped_state_type wrapped_state_type;
|
|
324
|
+
typedef typename stepper_base_type::wrapped_deriv_type wrapped_deriv_type;
|
|
325
|
+
#endif // DOXYGEN_SKIP
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
runge_kutta_fehlberg78( const algebra_type &algebra = algebra_type() ) : stepper_base_type(
|
|
329
|
+
boost::fusion::make_vector( rk78_coefficients_a1<Value>() , rk78_coefficients_a2<Value>() , rk78_coefficients_a3<Value>() ,
|
|
330
|
+
rk78_coefficients_a4<Value>() , rk78_coefficients_a5<Value>() , rk78_coefficients_a6<Value>() ,
|
|
331
|
+
rk78_coefficients_a7<Value>() , rk78_coefficients_a8<Value>() , rk78_coefficients_a9<Value>() ,
|
|
332
|
+
rk78_coefficients_a10<Value>() , rk78_coefficients_a11<Value>() , rk78_coefficients_a12<Value>() ) ,
|
|
333
|
+
rk78_coefficients_b<Value>() , rk78_coefficients_db<Value>() , rk78_coefficients_c<Value>() , algebra )
|
|
334
|
+
{ }
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
/************* DOXYGEN *************/
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* \class runge_kutta_fehlberg78
|
|
343
|
+
* \brief The Runge-Kutta Fehlberg 78 method.
|
|
344
|
+
*
|
|
345
|
+
* The Runge-Kutta Fehlberg 78 method is a standard method for high-precision applications.
|
|
346
|
+
* The method is explicit and fulfills the Error Stepper concept. Step size control
|
|
347
|
+
* is provided but continuous output is not available for this method.
|
|
348
|
+
*
|
|
349
|
+
* This class derives from explicit_error_stepper_base and inherits its interface via CRTP (current recurring template pattern).
|
|
350
|
+
* Furthermore, it derivs from explicit_error_generic_rk which is a generic Runge-Kutta algorithm with error estimation.
|
|
351
|
+
* For more details see explicit_error_stepper_base and explicit_error_generic_rk.
|
|
352
|
+
*
|
|
353
|
+
* \tparam State The state type.
|
|
354
|
+
* \tparam Value The value type.
|
|
355
|
+
* \tparam Deriv The type representing the time derivative of the state.
|
|
356
|
+
* \tparam Time The time representing the independent variable - the time.
|
|
357
|
+
* \tparam Algebra The algebra type.
|
|
358
|
+
* \tparam Operations The operations type.
|
|
359
|
+
* \tparam Resizer The resizer policy type.
|
|
360
|
+
*/
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* \fn runge_kutta_fehlberg78::runge_kutta_fehlberg78( const algebra_type &algebra )
|
|
365
|
+
* \brief Constructs the runge_kutta_cash_fehlberg78 class. This constructor can be used as a default
|
|
366
|
+
* constructor if the algebra has a default constructor.
|
|
367
|
+
* \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
|
|
368
|
+
*/
|
|
369
|
+
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
#endif //BOOST_NUMERIC_ODEINT_STEPPER_RUNGE_KUTTA_FEHLBERG87_HPP_INCLUDED
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/stepper_categories.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Definition of all stepper categories.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2010-2011 Mario Mulansky
|
|
10
|
+
Copyright 2010-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
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
namespace boost {
|
|
22
|
+
namespace numeric {
|
|
23
|
+
namespace odeint {
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* Tags to specify stepper types
|
|
28
|
+
*
|
|
29
|
+
* These tags are used by integrate() to choose which integration method is used
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
struct stepper_tag {};
|
|
33
|
+
// struct explicit_stepper_tag : stepper_tag {};
|
|
34
|
+
// struct implicit_stepper_tag : stepper_tag {};
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
struct error_stepper_tag : stepper_tag {};
|
|
38
|
+
struct explicit_error_stepper_tag : error_stepper_tag {};
|
|
39
|
+
struct explicit_error_stepper_fsal_tag : error_stepper_tag {};
|
|
40
|
+
|
|
41
|
+
struct controlled_stepper_tag {};
|
|
42
|
+
struct explicit_controlled_stepper_tag : controlled_stepper_tag {};
|
|
43
|
+
struct explicit_controlled_stepper_fsal_tag : controlled_stepper_tag {};
|
|
44
|
+
|
|
45
|
+
struct dense_output_stepper_tag {};
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
template< class tag > struct base_tag ;
|
|
49
|
+
template< > struct base_tag< stepper_tag > { typedef stepper_tag type; };
|
|
50
|
+
template< > struct base_tag< error_stepper_tag > { typedef stepper_tag type; };
|
|
51
|
+
template< > struct base_tag< explicit_error_stepper_tag > { typedef stepper_tag type; };
|
|
52
|
+
template< > struct base_tag< explicit_error_stepper_fsal_tag > { typedef stepper_tag type; };
|
|
53
|
+
|
|
54
|
+
template< > struct base_tag< controlled_stepper_tag > { typedef controlled_stepper_tag type; };
|
|
55
|
+
template< > struct base_tag< explicit_controlled_stepper_tag > { typedef controlled_stepper_tag type; };
|
|
56
|
+
template< > struct base_tag< explicit_controlled_stepper_fsal_tag > { typedef controlled_stepper_tag type; };
|
|
57
|
+
|
|
58
|
+
template< > struct base_tag< dense_output_stepper_tag > { typedef dense_output_stepper_tag type; };
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
} // odeint
|
|
62
|
+
} // numeric
|
|
63
|
+
} // boost
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/symplectic_euler.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Implementation of the symplectic Euler for separable Hamiltonian systems.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2013 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2013 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_STEPPER_SYMPLECTIC_EULER_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_SYMPLECTIC_EULER_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#include <boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp>
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/algebra/range_algebra.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/algebra/default_operations.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
|
|
28
|
+
|
|
29
|
+
#include <array>
|
|
30
|
+
|
|
31
|
+
namespace boost {
|
|
32
|
+
namespace numeric {
|
|
33
|
+
namespace odeint {
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
#ifndef DOXYGEN_SKIP
|
|
37
|
+
namespace detail {
|
|
38
|
+
namespace symplectic_euler_coef {
|
|
39
|
+
|
|
40
|
+
template< class Value >
|
|
41
|
+
struct coef_a_type : public std::array< Value , 1 >
|
|
42
|
+
{
|
|
43
|
+
coef_a_type( void )
|
|
44
|
+
{
|
|
45
|
+
(*this)[0] = static_cast< Value >( 1 );
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
template< class Value >
|
|
50
|
+
struct coef_b_type : public std::array< Value , 1 >
|
|
51
|
+
{
|
|
52
|
+
coef_b_type( void )
|
|
53
|
+
{
|
|
54
|
+
(*this)[0] = static_cast< Value >( 1 );
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
} // namespace symplectic_euler_coef
|
|
59
|
+
} // namespace detail
|
|
60
|
+
#endif
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
template<
|
|
65
|
+
class Coor ,
|
|
66
|
+
class Momentum = Coor ,
|
|
67
|
+
class Value = double ,
|
|
68
|
+
class CoorDeriv = Coor ,
|
|
69
|
+
class MomentumDeriv = Coor ,
|
|
70
|
+
class Time = Value ,
|
|
71
|
+
class Algebra = typename algebra_dispatcher< Coor >::algebra_type ,
|
|
72
|
+
class Operations = typename operations_dispatcher< Coor >::operations_type ,
|
|
73
|
+
class Resizer = initially_resizer
|
|
74
|
+
>
|
|
75
|
+
#ifndef DOXYGEN_SKIP
|
|
76
|
+
class symplectic_euler :
|
|
77
|
+
public symplectic_nystroem_stepper_base
|
|
78
|
+
<
|
|
79
|
+
1 , 1 ,
|
|
80
|
+
Coor , Momentum , Value , CoorDeriv , MomentumDeriv , Time , Algebra , Operations , Resizer
|
|
81
|
+
>
|
|
82
|
+
#else
|
|
83
|
+
class symplectic_euler : public symplectic_nystroem_stepper_base
|
|
84
|
+
#endif
|
|
85
|
+
{
|
|
86
|
+
public:
|
|
87
|
+
|
|
88
|
+
#ifndef DOXYGEN_SKIP
|
|
89
|
+
typedef symplectic_nystroem_stepper_base<
|
|
90
|
+
1 , 1 , Coor , Momentum , Value , CoorDeriv , MomentumDeriv , Time , Algebra , Operations , Resizer > stepper_base_type;
|
|
91
|
+
#endif
|
|
92
|
+
typedef typename stepper_base_type::algebra_type algebra_type;
|
|
93
|
+
typedef typename stepper_base_type::value_type value_type;
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
symplectic_euler( const algebra_type &algebra = algebra_type() )
|
|
97
|
+
: stepper_base_type( detail::symplectic_euler_coef::coef_a_type< value_type >() ,
|
|
98
|
+
detail::symplectic_euler_coef::coef_b_type< value_type >() ,
|
|
99
|
+
algebra )
|
|
100
|
+
{ }
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
/*************** DOXYGEN ***************/
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* \class symplectic_euler
|
|
108
|
+
* \brief Implementation of the symplectic Euler method.
|
|
109
|
+
*
|
|
110
|
+
* The method is of first order and has one stage. It is described HERE.
|
|
111
|
+
*
|
|
112
|
+
* \tparam Order The order of the stepper.
|
|
113
|
+
* \tparam Coor The type representing the coordinates q.
|
|
114
|
+
* \tparam Momentum The type representing the coordinates p.
|
|
115
|
+
* \tparam Value The basic value type. Should be something like float, double or a high-precision type.
|
|
116
|
+
* \tparam CoorDeriv The type representing the time derivative of the coordinate dq/dt.
|
|
117
|
+
* \tparam MomemtnumDeriv The type representing the time derivative of the momentum dp/dt.
|
|
118
|
+
* \tparam Time The type representing the time t.
|
|
119
|
+
* \tparam Algebra The algebra.
|
|
120
|
+
* \tparam Operations The operations.
|
|
121
|
+
* \tparam Resizer The resizer policy.
|
|
122
|
+
*/
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* \fn symplectic_euler::symplectic_euler( const algebra_type &algebra )
|
|
126
|
+
* \brief Constructs the symplectic_euler. This constructor can be used as a default
|
|
127
|
+
* constructor if the algebra has a default constructor.
|
|
128
|
+
* \param algebra A copy of algebra is made and stored inside explicit_stepper_base.
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
} // namespace odeint
|
|
132
|
+
} // namespace numeric
|
|
133
|
+
} // namespace boost
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_SYMPLECTIC_EULER_HPP_INCLUDED
|