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,168 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Definition of the coefficients for the Adams-Bashforth method.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_COEFFICIENTS_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_COEFFICIENTS_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <array>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
namespace boost {
|
|
25
|
+
namespace numeric {
|
|
26
|
+
namespace odeint {
|
|
27
|
+
namespace detail {
|
|
28
|
+
|
|
29
|
+
template< class Value , size_t Steps >
|
|
30
|
+
class adams_bashforth_coefficients ;
|
|
31
|
+
|
|
32
|
+
template< class Value >
|
|
33
|
+
class adams_bashforth_coefficients< Value , 1 > : public std::array< Value , 1 >
|
|
34
|
+
{
|
|
35
|
+
public:
|
|
36
|
+
adams_bashforth_coefficients( void )
|
|
37
|
+
: std::array< Value , 1 >()
|
|
38
|
+
{
|
|
39
|
+
(*this)[0] = static_cast< Value >( 1 );
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
template< class Value >
|
|
45
|
+
class adams_bashforth_coefficients< Value , 2 > : public std::array< Value , 2 >
|
|
46
|
+
{
|
|
47
|
+
public:
|
|
48
|
+
adams_bashforth_coefficients( void )
|
|
49
|
+
: std::array< Value , 2 >()
|
|
50
|
+
{
|
|
51
|
+
(*this)[0] = static_cast< Value >( 3 ) / static_cast< Value >( 2 );
|
|
52
|
+
(*this)[1] = -static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
template< class Value >
|
|
58
|
+
class adams_bashforth_coefficients< Value , 3 > : public std::array< Value , 3 >
|
|
59
|
+
{
|
|
60
|
+
public:
|
|
61
|
+
adams_bashforth_coefficients( void )
|
|
62
|
+
: std::array< Value , 3 >()
|
|
63
|
+
{
|
|
64
|
+
(*this)[0] = static_cast< Value >( 23 ) / static_cast< Value >( 12 );
|
|
65
|
+
(*this)[1] = -static_cast< Value >( 4 ) / static_cast< Value >( 3 );
|
|
66
|
+
(*this)[2] = static_cast< Value >( 5 ) / static_cast< Value >( 12 );
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
template< class Value >
|
|
72
|
+
class adams_bashforth_coefficients< Value , 4 > : public std::array< Value , 4 >
|
|
73
|
+
{
|
|
74
|
+
public:
|
|
75
|
+
adams_bashforth_coefficients( void )
|
|
76
|
+
: std::array< Value , 4 >()
|
|
77
|
+
{
|
|
78
|
+
(*this)[0] = static_cast< Value >( 55 ) / static_cast< Value >( 24 );
|
|
79
|
+
(*this)[1] = -static_cast< Value >( 59 ) / static_cast< Value >( 24 );
|
|
80
|
+
(*this)[2] = static_cast< Value >( 37 ) / static_cast< Value >( 24 );
|
|
81
|
+
(*this)[3] = -static_cast< Value >( 3 ) / static_cast< Value >( 8 );
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
template< class Value >
|
|
87
|
+
class adams_bashforth_coefficients< Value , 5 > : public std::array< Value , 5 >
|
|
88
|
+
{
|
|
89
|
+
public:
|
|
90
|
+
adams_bashforth_coefficients( void )
|
|
91
|
+
: std::array< Value , 5 >()
|
|
92
|
+
{
|
|
93
|
+
(*this)[0] = static_cast< Value >( 1901 ) / static_cast< Value >( 720 );
|
|
94
|
+
(*this)[1] = -static_cast< Value >( 1387 ) / static_cast< Value >( 360 );
|
|
95
|
+
(*this)[2] = static_cast< Value >( 109 ) / static_cast< Value >( 30 );
|
|
96
|
+
(*this)[3] = -static_cast< Value >( 637 ) / static_cast< Value >( 360 );
|
|
97
|
+
(*this)[4] = static_cast< Value >( 251 ) / static_cast< Value >( 720 );
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
template< class Value >
|
|
103
|
+
class adams_bashforth_coefficients< Value , 6 > : public std::array< Value , 6 >
|
|
104
|
+
{
|
|
105
|
+
public:
|
|
106
|
+
adams_bashforth_coefficients( void )
|
|
107
|
+
: std::array< Value , 6 >()
|
|
108
|
+
{
|
|
109
|
+
(*this)[0] = static_cast< Value >( 4277 ) / static_cast< Value >( 1440 );
|
|
110
|
+
(*this)[1] = -static_cast< Value >( 2641 ) / static_cast< Value >( 480 );
|
|
111
|
+
(*this)[2] = static_cast< Value >( 4991 ) / static_cast< Value >( 720 );
|
|
112
|
+
(*this)[3] = -static_cast< Value >( 3649 ) / static_cast< Value >( 720 );
|
|
113
|
+
(*this)[4] = static_cast< Value >( 959 ) / static_cast< Value >( 480 );
|
|
114
|
+
(*this)[5] = -static_cast< Value >( 95 ) / static_cast< Value >( 288 );
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
template< class Value >
|
|
120
|
+
class adams_bashforth_coefficients< Value , 7 > : public std::array< Value , 7 >
|
|
121
|
+
{
|
|
122
|
+
public:
|
|
123
|
+
adams_bashforth_coefficients( void )
|
|
124
|
+
: std::array< Value , 7 >()
|
|
125
|
+
{
|
|
126
|
+
(*this)[0] = static_cast< Value >( 198721 ) / static_cast< Value >( 60480 );
|
|
127
|
+
(*this)[1] = -static_cast< Value >( 18637 ) / static_cast< Value >( 2520 );
|
|
128
|
+
(*this)[2] = static_cast< Value >( 235183 ) / static_cast< Value >( 20160 );
|
|
129
|
+
(*this)[3] = -static_cast< Value >( 10754 ) / static_cast< Value >( 945 );
|
|
130
|
+
(*this)[4] = static_cast< Value >( 135713 ) / static_cast< Value >( 20160 );
|
|
131
|
+
(*this)[5] = -static_cast< Value >( 5603 ) / static_cast< Value >( 2520 );
|
|
132
|
+
(*this)[6] = static_cast< Value >( 19087 ) / static_cast< Value >( 60480 );
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
template< class Value >
|
|
138
|
+
class adams_bashforth_coefficients< Value , 8 > : public std::array< Value , 8 >
|
|
139
|
+
{
|
|
140
|
+
public:
|
|
141
|
+
adams_bashforth_coefficients( void )
|
|
142
|
+
: std::array< Value , 8 >()
|
|
143
|
+
{
|
|
144
|
+
(*this)[0] = static_cast< Value >( 16083 ) / static_cast< Value >( 4480 );
|
|
145
|
+
(*this)[1] = -static_cast< Value >( 1152169 ) / static_cast< Value >( 120960 );
|
|
146
|
+
(*this)[2] = static_cast< Value >( 242653 ) / static_cast< Value >( 13440 );
|
|
147
|
+
(*this)[3] = -static_cast< Value >( 296053 ) / static_cast< Value >( 13440 );
|
|
148
|
+
(*this)[4] = static_cast< Value >( 2102243 ) / static_cast< Value >( 120960 );
|
|
149
|
+
(*this)[5] = -static_cast< Value >( 115747 ) / static_cast< Value >( 13440 );
|
|
150
|
+
(*this)[6] = static_cast< Value >( 32863 ) / static_cast< Value >( 13440 );
|
|
151
|
+
(*this)[7] = -static_cast< Value >( 5257 ) / static_cast< Value >( 17280 );
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
} // detail
|
|
162
|
+
} // odeint
|
|
163
|
+
} // numeric
|
|
164
|
+
} // boost
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_COEFFICIENTS_HPP_INCLUDED
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Algebra caller for the Adams Moulton method.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_CALL_ALGEBRA_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_CALL_ALGEBRA_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <cstddef>
|
|
22
|
+
|
|
23
|
+
namespace boost {
|
|
24
|
+
namespace numeric {
|
|
25
|
+
namespace odeint {
|
|
26
|
+
namespace detail {
|
|
27
|
+
|
|
28
|
+
template< size_t Step , class Algebra , class Operations >
|
|
29
|
+
struct adams_moulton_call_algebra;
|
|
30
|
+
|
|
31
|
+
template< class Algebra , class Operations >
|
|
32
|
+
struct adams_moulton_call_algebra< 1 , Algebra , Operations >
|
|
33
|
+
{
|
|
34
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
35
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage& /* steps */ , const Coefficients &coef , Time dt ) const
|
|
36
|
+
{
|
|
37
|
+
typedef typename Coefficients::value_type value_type;
|
|
38
|
+
algebra.for_each3( out , in , dxdt , typename Operations::template scale_sum2< value_type , Time >( 1.0 , dt * coef[0] ) );
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
template< class Algebra , class Operations >
|
|
44
|
+
struct adams_moulton_call_algebra< 2 , Algebra , Operations >
|
|
45
|
+
{
|
|
46
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
47
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
48
|
+
{
|
|
49
|
+
typedef typename Coefficients::value_type value_type;
|
|
50
|
+
algebra.for_each4( out , in , dxdt , steps[0].m_v ,
|
|
51
|
+
typename Operations::template scale_sum3< value_type , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] ) );
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
template< class Algebra , class Operations >
|
|
57
|
+
struct adams_moulton_call_algebra< 3 , Algebra , Operations >
|
|
58
|
+
{
|
|
59
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
60
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
61
|
+
{
|
|
62
|
+
typedef typename Coefficients::value_type value_type;
|
|
63
|
+
algebra.for_each5( out , in , dxdt , steps[0].m_v , steps[1].m_v ,
|
|
64
|
+
typename Operations::template scale_sum4< value_type , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] ) );
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
template< class Algebra , class Operations >
|
|
70
|
+
struct adams_moulton_call_algebra< 4 , Algebra , Operations >
|
|
71
|
+
{
|
|
72
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
73
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
74
|
+
{
|
|
75
|
+
typedef typename Coefficients::value_type value_type;
|
|
76
|
+
algebra.for_each6( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v ,
|
|
77
|
+
typename Operations::template scale_sum5< value_type , Time , Time , Time >(
|
|
78
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] ) );
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
template< class Algebra , class Operations >
|
|
84
|
+
struct adams_moulton_call_algebra< 5 , Algebra , Operations >
|
|
85
|
+
{
|
|
86
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
87
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
88
|
+
{
|
|
89
|
+
typedef typename Coefficients::value_type value_type;
|
|
90
|
+
algebra.for_each7( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v ,
|
|
91
|
+
typename Operations::template scale_sum6< value_type , Time , Time , Time , Time >(
|
|
92
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] ) );
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
template< class Algebra , class Operations >
|
|
98
|
+
struct adams_moulton_call_algebra< 6 , Algebra , Operations >
|
|
99
|
+
{
|
|
100
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
101
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
102
|
+
{
|
|
103
|
+
typedef typename Coefficients::value_type value_type;
|
|
104
|
+
algebra.for_each8( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v ,
|
|
105
|
+
typename Operations::template scale_sum7< value_type , Time , Time , Time , Time , Time >(
|
|
106
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] ) );
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
template< class Algebra , class Operations >
|
|
112
|
+
struct adams_moulton_call_algebra< 7 , Algebra , Operations >
|
|
113
|
+
{
|
|
114
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
115
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
116
|
+
{
|
|
117
|
+
typedef typename Coefficients::value_type value_type;
|
|
118
|
+
algebra.for_each9( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v ,
|
|
119
|
+
typename Operations::template scale_sum8< value_type , Time , Time , Time , Time , Time , Time >(
|
|
120
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] ) );
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
template< class Algebra , class Operations >
|
|
126
|
+
struct adams_moulton_call_algebra< 8 , Algebra , Operations >
|
|
127
|
+
{
|
|
128
|
+
template< class StateIn , class StateOut , class DerivIn , class StepStorage , class Coefficients , class Time >
|
|
129
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const DerivIn &dxdt , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
130
|
+
{
|
|
131
|
+
typedef typename Coefficients::value_type value_type;
|
|
132
|
+
algebra.for_each10( out , in , dxdt , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v , steps[6].m_v ,
|
|
133
|
+
typename Operations::template scale_sum9< value_type , Time , Time , Time , Time , Time , Time , Time >(
|
|
134
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] , dt * coef[7] ) );
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
} // detail
|
|
142
|
+
} // odeint
|
|
143
|
+
} // numeric
|
|
144
|
+
} // boost
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_CALL_ALGEBRA_HPP_INCLUDED
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Coefficients for the Adams Moulton method.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_COEFFICIENTS_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_COEFFICIENTS_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#include <array>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
namespace boost {
|
|
26
|
+
namespace numeric {
|
|
27
|
+
namespace odeint {
|
|
28
|
+
namespace detail {
|
|
29
|
+
|
|
30
|
+
template< class Value , size_t Steps >
|
|
31
|
+
class adams_moulton_coefficients ;
|
|
32
|
+
|
|
33
|
+
template< class Value >
|
|
34
|
+
class adams_moulton_coefficients< Value , 1 > : public std::array< Value , 1 >
|
|
35
|
+
{
|
|
36
|
+
public:
|
|
37
|
+
adams_moulton_coefficients( void )
|
|
38
|
+
: std::array< Value , 1 >()
|
|
39
|
+
{
|
|
40
|
+
(*this)[0] = static_cast< Value >( 1 );
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
template< class Value >
|
|
46
|
+
class adams_moulton_coefficients< Value , 2 > : public std::array< Value , 2 >
|
|
47
|
+
{
|
|
48
|
+
public:
|
|
49
|
+
adams_moulton_coefficients( void )
|
|
50
|
+
: std::array< Value , 2 >()
|
|
51
|
+
{
|
|
52
|
+
(*this)[0] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
53
|
+
(*this)[1] = static_cast< Value >( 1 ) / static_cast< Value >( 2 );
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
template< class Value >
|
|
59
|
+
class adams_moulton_coefficients< Value , 3 > : public std::array< Value , 3 >
|
|
60
|
+
{
|
|
61
|
+
public:
|
|
62
|
+
adams_moulton_coefficients( void )
|
|
63
|
+
: std::array< Value , 3 >()
|
|
64
|
+
{
|
|
65
|
+
(*this)[0] = static_cast< Value >( 5 ) / static_cast< Value >( 12 );
|
|
66
|
+
(*this)[1] = static_cast< Value >( 2 ) / static_cast< Value >( 3 );
|
|
67
|
+
(*this)[2] = -static_cast< Value >( 1 ) / static_cast< Value >( 12 );
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
template< class Value >
|
|
73
|
+
class adams_moulton_coefficients< Value , 4 > : public std::array< Value , 4 >
|
|
74
|
+
{
|
|
75
|
+
public:
|
|
76
|
+
adams_moulton_coefficients( void )
|
|
77
|
+
: std::array< Value , 4 >()
|
|
78
|
+
{
|
|
79
|
+
(*this)[0] = static_cast< Value >( 3 ) / static_cast< Value >( 8 );
|
|
80
|
+
(*this)[1] = static_cast< Value >( 19 ) / static_cast< Value >( 24 );
|
|
81
|
+
(*this)[2] = -static_cast< Value >( 5 ) / static_cast< Value >( 24 );
|
|
82
|
+
(*this)[3] = static_cast< Value >( 1 ) / static_cast< Value >( 24 );
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
template< class Value >
|
|
88
|
+
class adams_moulton_coefficients< Value , 5 > : public std::array< Value , 5 >
|
|
89
|
+
{
|
|
90
|
+
public:
|
|
91
|
+
adams_moulton_coefficients( void )
|
|
92
|
+
: std::array< Value , 5 >()
|
|
93
|
+
{
|
|
94
|
+
(*this)[0] = static_cast< Value >( 251 ) / static_cast< Value >( 720 );
|
|
95
|
+
(*this)[1] = static_cast< Value >( 323 ) / static_cast< Value >( 360 );
|
|
96
|
+
(*this)[2] = -static_cast< Value >( 11 ) / static_cast< Value >( 30 );
|
|
97
|
+
(*this)[3] = static_cast< Value >( 53 ) / static_cast< Value >( 360 );
|
|
98
|
+
(*this)[4] = -static_cast< Value >( 19 ) / static_cast< Value >( 720 );
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
template< class Value >
|
|
104
|
+
class adams_moulton_coefficients< Value , 6 > : public std::array< Value , 6 >
|
|
105
|
+
{
|
|
106
|
+
public:
|
|
107
|
+
adams_moulton_coefficients( void )
|
|
108
|
+
: std::array< Value , 6 >()
|
|
109
|
+
{
|
|
110
|
+
(*this)[0] = static_cast< Value >( 95 ) / static_cast< Value >( 288 );
|
|
111
|
+
(*this)[1] = static_cast< Value >( 1427 ) / static_cast< Value >( 1440 );
|
|
112
|
+
(*this)[2] = -static_cast< Value >( 133 ) / static_cast< Value >( 240 );
|
|
113
|
+
(*this)[3] = static_cast< Value >( 241 ) / static_cast< Value >( 720 );
|
|
114
|
+
(*this)[4] = -static_cast< Value >( 173 ) / static_cast< Value >( 1440 );
|
|
115
|
+
(*this)[5] = static_cast< Value >( 3 ) / static_cast< Value >( 160 );
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
template< class Value >
|
|
120
|
+
class adams_moulton_coefficients< Value , 7 > : public std::array< Value , 7 >
|
|
121
|
+
{
|
|
122
|
+
public:
|
|
123
|
+
adams_moulton_coefficients( void )
|
|
124
|
+
: std::array< Value , 7 >()
|
|
125
|
+
{
|
|
126
|
+
(*this)[0] = static_cast< Value >( 19087 ) / static_cast< Value >( 60480 );
|
|
127
|
+
(*this)[1] = static_cast< Value >( 2713 ) / static_cast< Value >( 2520 );
|
|
128
|
+
(*this)[2] = -static_cast< Value >( 15487 ) / static_cast< Value >( 20160 );
|
|
129
|
+
(*this)[3] = static_cast< Value >( 586 ) / static_cast< Value >( 945 );
|
|
130
|
+
(*this)[4] = -static_cast< Value >( 6737 ) / static_cast< Value >( 20160 );
|
|
131
|
+
(*this)[5] = static_cast< Value >( 263 ) / static_cast< Value >( 2520 );
|
|
132
|
+
(*this)[6] = -static_cast< Value >( 863 ) / static_cast< Value >( 60480 );
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
template< class Value >
|
|
138
|
+
class adams_moulton_coefficients< Value , 8 > : public std::array< Value , 8 >
|
|
139
|
+
{
|
|
140
|
+
public:
|
|
141
|
+
adams_moulton_coefficients( void )
|
|
142
|
+
: std::array< Value , 8 >()
|
|
143
|
+
{
|
|
144
|
+
(*this)[0] = static_cast< Value >( 5257 ) / static_cast< Value >( 17280 );
|
|
145
|
+
(*this)[1] = static_cast< Value >( 139849 ) / static_cast< Value >( 120960 );
|
|
146
|
+
(*this)[2] = -static_cast< Value >( 4511 ) / static_cast< Value >( 4480 );
|
|
147
|
+
(*this)[3] = static_cast< Value >( 123133 ) / static_cast< Value >( 120960 );
|
|
148
|
+
(*this)[4] = -static_cast< Value >( 88547 ) / static_cast< Value >( 120960 );
|
|
149
|
+
(*this)[5] = static_cast< Value >( 1537 ) / static_cast< Value >( 4480 );
|
|
150
|
+
(*this)[6] = -static_cast< Value >( 11351 ) / static_cast< Value >( 120960 );
|
|
151
|
+
(*this)[7] = static_cast< Value >( 275 ) / static_cast< Value >( 24192 );
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
} // detail
|
|
162
|
+
} // odeint
|
|
163
|
+
} // numeric
|
|
164
|
+
} // boost
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_MOULTON_COEFFICIENTS_HPP_INCLUDED
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/*
|
|
2
|
+
boost/numeric/odeint/stepper/detail/adaptive_adams_coefficients.hpp
|
|
3
|
+
|
|
4
|
+
[begin_description]
|
|
5
|
+
Calculation of the coefficients for the adaptive adams stepper.
|
|
6
|
+
[end_description]
|
|
7
|
+
|
|
8
|
+
Copyright 2017 Valentin Noah Hartmann
|
|
9
|
+
|
|
10
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
11
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
12
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAPTIVE_ADAMS_COEFFICIENTS_HPP_INCLUDED
|
|
16
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAPTIVE_ADAMS_COEFFICIENTS_HPP_INCLUDED
|
|
17
|
+
|
|
18
|
+
#include <boost/numeric/odeint/stepper/detail/rotating_buffer.hpp>
|
|
19
|
+
|
|
20
|
+
#include <boost/numeric/odeint/util/state_wrapper.hpp>
|
|
21
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/util/resizer.hpp>
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/util/bind.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
|
|
29
|
+
|
|
30
|
+
#include <array>
|
|
31
|
+
|
|
32
|
+
namespace boost {
|
|
33
|
+
namespace numeric {
|
|
34
|
+
namespace odeint {
|
|
35
|
+
namespace detail {
|
|
36
|
+
|
|
37
|
+
template<
|
|
38
|
+
size_t Steps,
|
|
39
|
+
class Deriv,
|
|
40
|
+
class Value = double,
|
|
41
|
+
class Time = double,
|
|
42
|
+
class Algebra = typename algebra_dispatcher< Deriv >::algebra_type,
|
|
43
|
+
class Operations = typename operations_dispatcher< Deriv >::operations_type,
|
|
44
|
+
class Resizer = initially_resizer
|
|
45
|
+
>
|
|
46
|
+
class adaptive_adams_coefficients
|
|
47
|
+
{
|
|
48
|
+
public:
|
|
49
|
+
static const size_t steps = Steps;
|
|
50
|
+
|
|
51
|
+
typedef unsigned short order_type;
|
|
52
|
+
static const order_type order_value = steps;
|
|
53
|
+
|
|
54
|
+
typedef Value value_type;
|
|
55
|
+
typedef Deriv deriv_type;
|
|
56
|
+
typedef Time time_type;
|
|
57
|
+
|
|
58
|
+
typedef state_wrapper< deriv_type > wrapped_deriv_type;
|
|
59
|
+
typedef rotating_buffer< time_type , steps+1 > time_storage_type;
|
|
60
|
+
|
|
61
|
+
typedef Algebra algebra_type;
|
|
62
|
+
typedef Operations operations_type;
|
|
63
|
+
typedef Resizer resizer_type;
|
|
64
|
+
|
|
65
|
+
typedef adaptive_adams_coefficients< Steps , Deriv , Value , Time , Algebra , Operations , Resizer > aac_type;
|
|
66
|
+
|
|
67
|
+
adaptive_adams_coefficients( const algebra_type &algebra = algebra_type())
|
|
68
|
+
:m_eo(1), m_steps_init(1), beta(), phi(), m_ns(0), m_time_storage(),
|
|
69
|
+
m_algebra(algebra),
|
|
70
|
+
m_phi_resizer()
|
|
71
|
+
{
|
|
72
|
+
for (size_t i=0; i<order_value+2; ++i)
|
|
73
|
+
{
|
|
74
|
+
c[i] = 1.0/(i+1);
|
|
75
|
+
c[c_size+i] = 1.0/((i+1)*(i+2));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
g[0] = c[0];
|
|
79
|
+
g[1] = c[c_size];
|
|
80
|
+
|
|
81
|
+
beta[0][0] = 1;
|
|
82
|
+
beta[1][0] = 1;
|
|
83
|
+
|
|
84
|
+
gs[0] = 1.0;
|
|
85
|
+
gs[1] = -1.0/2;
|
|
86
|
+
gs[2] = -1.0/12;
|
|
87
|
+
gs[3] = -1.0/24;
|
|
88
|
+
gs[4] = -19.0/720;
|
|
89
|
+
gs[5] = -3.0/160;
|
|
90
|
+
gs[6] = -863.0/60480;
|
|
91
|
+
gs[7] = -275.0/24192;
|
|
92
|
+
gs[8] = -33953.0/3628800;
|
|
93
|
+
gs[9] = 35.0/4436;
|
|
94
|
+
gs[10] = 40.0/5891;
|
|
95
|
+
gs[11] = 37.0/6250;
|
|
96
|
+
gs[12] = 25.0/4771;
|
|
97
|
+
gs[13] = 40.0/8547;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
void predict(time_type t, time_type dt)
|
|
101
|
+
{
|
|
102
|
+
using std::abs;
|
|
103
|
+
|
|
104
|
+
m_time_storage[0] = t;
|
|
105
|
+
|
|
106
|
+
if (abs(m_time_storage[0] - m_time_storage[1] - dt) > 1e-16 || m_eo >= m_ns)
|
|
107
|
+
{
|
|
108
|
+
m_ns = 0;
|
|
109
|
+
}
|
|
110
|
+
else if (m_ns < order_value + 2)
|
|
111
|
+
{
|
|
112
|
+
m_ns++;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
for(size_t i=1+m_ns; i<m_eo+1 && i<m_steps_init; ++i)
|
|
116
|
+
{
|
|
117
|
+
time_type diff = m_time_storage[0] - m_time_storage[i];
|
|
118
|
+
beta[0][i] = beta[0][i-1]*(m_time_storage[0] + dt - m_time_storage[i-1])/diff;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
for(size_t i=2+m_ns; i<m_eo+2 && i<m_steps_init+1; ++i)
|
|
122
|
+
{
|
|
123
|
+
time_type diff = m_time_storage[0] + dt - m_time_storage[i-1];
|
|
124
|
+
for(size_t j=0; j<m_eo+1-i+1; ++j)
|
|
125
|
+
{
|
|
126
|
+
c[c_size*i+j] = c[c_size*(i-1)+j] - c[c_size*(i-1)+j+1]*dt/diff;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
g[i] = c[c_size*i];
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
void do_step(const deriv_type &dxdt, const int o = 0)
|
|
134
|
+
{
|
|
135
|
+
m_phi_resizer.adjust_size(dxdt, [this](auto&& arg) { return this->resize_phi_impl<deriv_type>(std::forward<decltype(arg)>(arg)); });
|
|
136
|
+
|
|
137
|
+
phi[o][0].m_v = dxdt;
|
|
138
|
+
|
|
139
|
+
for(size_t i=1; i<m_eo+3 && i<m_steps_init+2 && i<order_value+2; ++i)
|
|
140
|
+
{
|
|
141
|
+
if (o == 0)
|
|
142
|
+
{
|
|
143
|
+
this->m_algebra.for_each3(phi[o][i].m_v, phi[o][i-1].m_v, phi[o+1][i-1].m_v,
|
|
144
|
+
typename Operations::template scale_sum2<value_type, value_type>(1.0, -beta[o][i-1]));
|
|
145
|
+
}
|
|
146
|
+
else
|
|
147
|
+
{
|
|
148
|
+
this->m_algebra.for_each2(phi[o][i].m_v, phi[o][i-1].m_v,
|
|
149
|
+
typename Operations::template scale_sum1<value_type>(1.0));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
void confirm()
|
|
155
|
+
{
|
|
156
|
+
beta.rotate();
|
|
157
|
+
phi.rotate();
|
|
158
|
+
m_time_storage.rotate();
|
|
159
|
+
|
|
160
|
+
if(m_steps_init < order_value+1)
|
|
161
|
+
{
|
|
162
|
+
++m_steps_init;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
void reset() { m_eo = 1; m_steps_init = 1; };
|
|
167
|
+
|
|
168
|
+
size_t m_eo;
|
|
169
|
+
size_t m_steps_init;
|
|
170
|
+
|
|
171
|
+
rotating_buffer<std::array<value_type, order_value+1>, 2> beta; // beta[0] = beta(n)
|
|
172
|
+
rotating_buffer<std::array<wrapped_deriv_type, order_value+2>, 3> phi; // phi[0] = phi(n+1)
|
|
173
|
+
std::array<value_type, order_value + 2> g;
|
|
174
|
+
std::array<value_type, 14> gs;
|
|
175
|
+
|
|
176
|
+
private:
|
|
177
|
+
template< class StateType >
|
|
178
|
+
bool resize_phi_impl( const StateType &x )
|
|
179
|
+
{
|
|
180
|
+
bool resized( false );
|
|
181
|
+
|
|
182
|
+
for(size_t i=0; i<(order_value + 2); ++i)
|
|
183
|
+
{
|
|
184
|
+
resized |= adjust_size_by_resizeability( phi[0][i], x, typename is_resizeable<deriv_type>::type() );
|
|
185
|
+
resized |= adjust_size_by_resizeability( phi[1][i], x, typename is_resizeable<deriv_type>::type() );
|
|
186
|
+
resized |= adjust_size_by_resizeability( phi[2][i], x, typename is_resizeable<deriv_type>::type() );
|
|
187
|
+
}
|
|
188
|
+
return resized;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
size_t m_ns;
|
|
192
|
+
|
|
193
|
+
time_storage_type m_time_storage;
|
|
194
|
+
static const size_t c_size = order_value + 2;
|
|
195
|
+
std::array<value_type, c_size*c_size> c;
|
|
196
|
+
|
|
197
|
+
algebra_type m_algebra;
|
|
198
|
+
|
|
199
|
+
resizer_type m_phi_resizer;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
} // detail
|
|
203
|
+
} // odeint
|
|
204
|
+
} // numeric
|
|
205
|
+
} // boost
|
|
206
|
+
|
|
207
|
+
#endif
|