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,180 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
[auto_generated]
|
|
4
|
+
boost/numeric/odeint/iterator/const_step_iterator.hpp
|
|
5
|
+
|
|
6
|
+
[begin_description]
|
|
7
|
+
Iterator for iterating through the solution of an ODE with constant step size.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2012-2013 Karsten Ahnert
|
|
11
|
+
Copyright 2013 Mario Mulansky
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_ITERATOR_CONST_STEP_ODE_ITERATOR_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_ITERATOR_CONST_STEP_ODE_ITERATOR_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include <boost/numeric/odeint/util/stepper_traits.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
namespace boost {
|
|
30
|
+
namespace numeric {
|
|
31
|
+
namespace odeint {
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/* use the const_step_iterator_impl with the right tags */
|
|
35
|
+
template< class Stepper , class System , class State
|
|
36
|
+
#ifndef DOXYGEN_SKIP
|
|
37
|
+
, class StepperTag = typename base_tag< typename traits::stepper_category< Stepper >::type >::type
|
|
38
|
+
#endif
|
|
39
|
+
>
|
|
40
|
+
class const_step_iterator : public const_step_iterator_impl<
|
|
41
|
+
const_step_iterator< Stepper , System , State , StepperTag > ,
|
|
42
|
+
Stepper , System , State , detail::ode_state_iterator_tag , StepperTag
|
|
43
|
+
>
|
|
44
|
+
{
|
|
45
|
+
typedef typename traits::time_type< Stepper >::type time_type;
|
|
46
|
+
typedef const_step_iterator< Stepper , System , State , StepperTag > iterator_type;
|
|
47
|
+
|
|
48
|
+
public:
|
|
49
|
+
const_step_iterator( Stepper stepper , System sys , State &s , time_type t_start , time_type t_end , time_type dt )
|
|
50
|
+
: const_step_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_iterator_tag , StepperTag >( stepper , sys , s , t_start , t_end , dt )
|
|
51
|
+
{}
|
|
52
|
+
|
|
53
|
+
const_step_iterator( Stepper stepper , System sys , State &s )
|
|
54
|
+
: const_step_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_iterator_tag , StepperTag >( stepper , sys , s )
|
|
55
|
+
{}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/* make functions */
|
|
59
|
+
|
|
60
|
+
template< class Stepper , class System , class State >
|
|
61
|
+
const_step_iterator< Stepper , System, State > make_const_step_iterator_begin(
|
|
62
|
+
Stepper stepper ,
|
|
63
|
+
System system ,
|
|
64
|
+
State &x ,
|
|
65
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
66
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
67
|
+
typename traits::time_type< Stepper >::type dt )
|
|
68
|
+
{
|
|
69
|
+
return const_step_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt );
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
template< class Stepper , class System , class State >
|
|
73
|
+
const_step_iterator< Stepper , System , State > make_const_step_iterator_end(
|
|
74
|
+
Stepper stepper ,
|
|
75
|
+
System system ,
|
|
76
|
+
State &x )
|
|
77
|
+
{
|
|
78
|
+
return const_step_iterator< Stepper , System , State >( stepper , system , x );
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template< class Stepper , class System , class State >
|
|
82
|
+
std::pair< const_step_iterator< Stepper , System , State > , const_step_iterator< Stepper , System , State > >
|
|
83
|
+
make_const_step_range(
|
|
84
|
+
Stepper stepper ,
|
|
85
|
+
System system ,
|
|
86
|
+
State &x ,
|
|
87
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
88
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
89
|
+
typename traits::time_type< Stepper >::type dt )
|
|
90
|
+
{
|
|
91
|
+
return std::make_pair(
|
|
92
|
+
const_step_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt ) ,
|
|
93
|
+
const_step_iterator< Stepper , System , State >( stepper , system , x )
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* \class const_step_iterator
|
|
101
|
+
*
|
|
102
|
+
* \brief ODE Iterator with constant step size. The value type of this iterator is the state type of the stepper.
|
|
103
|
+
*
|
|
104
|
+
* Implements an iterator representing the solution of an ODE from t_start
|
|
105
|
+
* to t_end evaluated at steps with constant step size dt.
|
|
106
|
+
* After each iteration the iterator dereferences to the state x at the next
|
|
107
|
+
* time t+dt.
|
|
108
|
+
* This iterator can be used with Steppers and
|
|
109
|
+
* DenseOutputSteppers and it always makes use of the all the given steppers
|
|
110
|
+
* capabilities. A for_each over such an iterator range behaves similar to
|
|
111
|
+
* the integrate_const routine.
|
|
112
|
+
*
|
|
113
|
+
* const_step_iterator is a model of single-pass iterator.
|
|
114
|
+
*
|
|
115
|
+
* The value type of this iterator is the state type of the stepper. Hence one can only access the state and not the current time.
|
|
116
|
+
*
|
|
117
|
+
* \tparam Stepper The stepper type which should be used during the iteration.
|
|
118
|
+
* \tparam System The type of the system function (ODE) which should be solved.
|
|
119
|
+
* \tparam State The state type of the ODE.
|
|
120
|
+
*/
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* \fn make_const_step_iterator_begin(
|
|
125
|
+
Stepper stepper ,
|
|
126
|
+
System system ,
|
|
127
|
+
State &x ,
|
|
128
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
129
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
130
|
+
typename traits::time_type< Stepper >::type dt )
|
|
131
|
+
*
|
|
132
|
+
* \brief Factory function for const_step_iterator. Constructs a begin iterator.
|
|
133
|
+
*
|
|
134
|
+
* \param stepper The stepper to use during the iteration.
|
|
135
|
+
* \param system The system function (ODE) to solve.
|
|
136
|
+
* \param x The initial state. const_step_iterator stores a reference of s and changes its value during the iteration.
|
|
137
|
+
* \param t_start The initial time.
|
|
138
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
139
|
+
* \param dt The initial time step.
|
|
140
|
+
* \returns The const step iterator.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* \fn make_const_step_iterator_end( Stepper stepper , System system , State &x )
|
|
146
|
+
* \brief Factory function for const_step_iterator. Constructs a end iterator.
|
|
147
|
+
*
|
|
148
|
+
* \param stepper The stepper to use during the iteration.
|
|
149
|
+
* \param system The system function (ODE) to solve.
|
|
150
|
+
* \param x The initial state. const_step_iterator stores a reference of s and changes its value during the iteration.
|
|
151
|
+
* \returns The const_step_iterator.
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* \fn make_const_step_range( Stepper stepper , System system , State &x ,
|
|
157
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
158
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
159
|
+
typename traits::time_type< Stepper >::type dt )
|
|
160
|
+
*
|
|
161
|
+
* \brief Factory function to construct a single pass range of const step iterators. A range is here a pair
|
|
162
|
+
* of const_step_iterator.
|
|
163
|
+
*
|
|
164
|
+
* \param stepper The stepper to use during the iteration.
|
|
165
|
+
* \param system The system function (ODE) to solve.
|
|
166
|
+
* \param x The initial state. const_step_iterator store a reference of s and changes its value during the iteration.
|
|
167
|
+
* \param t_start The initial time.
|
|
168
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
169
|
+
* \param dt The initial time step.
|
|
170
|
+
* \returns The const step range.
|
|
171
|
+
*/
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
} // namespace odeint
|
|
175
|
+
} // namespace numeric
|
|
176
|
+
} // namespace boost
|
|
177
|
+
|
|
178
|
+
//#include <boost/numeric/odeint/iterator/impl/const_step_iterator_dense_output_impl.hpp>
|
|
179
|
+
|
|
180
|
+
#endif // BOOST_NUMERIC_ODEINT_ITERATOR_CONST_STEP_ODE_ITERATOR_HPP_INCLUDED
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
[auto_generated]
|
|
4
|
+
boost/numeric/odeint/iterator/const_step_time_iterator.hpp
|
|
5
|
+
|
|
6
|
+
[begin_description]
|
|
7
|
+
Iterator for iterating throught the solution of an ODE with constant step size. The dereferences types containes also the time.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2012-2013 Karsten Ahnert
|
|
11
|
+
Copyright 2013 Mario Mulansky
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_ITERATOR_CONST_STEP_TIME_ITERATOR_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_ITERATOR_CONST_STEP_TIME_ITERATOR_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/util/stepper_traits.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace numeric {
|
|
29
|
+
namespace odeint {
|
|
30
|
+
|
|
31
|
+
/* use the const_step_iterator_impl with the right tags */
|
|
32
|
+
template< class Stepper , class System , class State
|
|
33
|
+
#ifndef DOXYGEN_SKIP
|
|
34
|
+
, class StepperTag = typename base_tag< typename traits::stepper_category< Stepper >::type >::type
|
|
35
|
+
#endif
|
|
36
|
+
>
|
|
37
|
+
class const_step_time_iterator : public const_step_iterator_impl<
|
|
38
|
+
const_step_time_iterator< Stepper , System , State , StepperTag > ,
|
|
39
|
+
Stepper , System , State , detail::ode_state_time_iterator_tag , StepperTag
|
|
40
|
+
>
|
|
41
|
+
{
|
|
42
|
+
typedef typename traits::time_type< Stepper >::type time_type;
|
|
43
|
+
typedef const_step_time_iterator< Stepper , System , State , StepperTag > iterator_type;
|
|
44
|
+
|
|
45
|
+
public:
|
|
46
|
+
const_step_time_iterator( Stepper stepper , System sys , State &s , time_type t_start , time_type t_end , time_type dt )
|
|
47
|
+
: const_step_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_time_iterator_tag , StepperTag >( stepper , sys , s , t_start , t_end , dt )
|
|
48
|
+
{}
|
|
49
|
+
|
|
50
|
+
const_step_time_iterator( Stepper stepper , System sys , State &s )
|
|
51
|
+
: const_step_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_time_iterator_tag , StepperTag >( stepper , sys , s )
|
|
52
|
+
{}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
template< class Stepper , class System , class State >
|
|
56
|
+
const_step_time_iterator< Stepper , System , State > make_const_step_time_iterator_begin(
|
|
57
|
+
Stepper stepper ,
|
|
58
|
+
System system ,
|
|
59
|
+
State &x ,
|
|
60
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
61
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
62
|
+
typename traits::time_type< Stepper >::type dt )
|
|
63
|
+
{
|
|
64
|
+
return const_step_time_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
template< class Stepper , class System , class State >
|
|
68
|
+
const_step_time_iterator< Stepper , System , State > make_const_step_time_iterator_end(
|
|
69
|
+
Stepper stepper ,
|
|
70
|
+
System system ,
|
|
71
|
+
State &x )
|
|
72
|
+
{
|
|
73
|
+
return const_step_time_iterator< Stepper , System , State >( stepper , system , x );
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
template< class Stepper , class System , class State >
|
|
78
|
+
std::pair< const_step_time_iterator< Stepper , System , State > , const_step_time_iterator< Stepper , System , State > >
|
|
79
|
+
make_const_step_time_range(
|
|
80
|
+
Stepper stepper ,
|
|
81
|
+
System system ,
|
|
82
|
+
State &x ,
|
|
83
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
84
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
85
|
+
typename traits::time_type< Stepper >::type dt )
|
|
86
|
+
{
|
|
87
|
+
return std::make_pair(
|
|
88
|
+
const_step_time_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt ) ,
|
|
89
|
+
const_step_time_iterator< Stepper , System , State >( stepper , system , x ) );
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* \class const_step_time_iterator
|
|
94
|
+
*
|
|
95
|
+
* \brief ODE Iterator with constant step size. The value type of this iterator is a std::pair containing state and time.
|
|
96
|
+
*
|
|
97
|
+
* Implements an iterator representing the solution of an ODE from t_start
|
|
98
|
+
* to t_end evaluated at steps with constant step size dt.
|
|
99
|
+
* After each iteration the iterator dereferences to a pair containing
|
|
100
|
+
* state and time at the next time point t+dt..
|
|
101
|
+
* This iterator can be used with Steppers and
|
|
102
|
+
* DenseOutputSteppers and it always makes use of the all the given steppers
|
|
103
|
+
* capabilities. A for_each over such an iterator range behaves similar to
|
|
104
|
+
* the integrate_const routine.
|
|
105
|
+
*
|
|
106
|
+
* const_step_time_iterator is a model of single-pass iterator.
|
|
107
|
+
*
|
|
108
|
+
* The value type of this iterator is a pair with the state type and time type of the stepper.
|
|
109
|
+
*
|
|
110
|
+
* \tparam Stepper The stepper type which should be used during the iteration.
|
|
111
|
+
* \tparam System The type of the system function (ODE) which should be solved.
|
|
112
|
+
* \tparam State The state type of the ODE.
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* \fn make_const_step_time_iterator_begin( Stepper stepper , System system , State &x ,
|
|
118
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
119
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
120
|
+
typename traits::time_type< Stepper >::type dt )
|
|
121
|
+
*
|
|
122
|
+
* \brief Factory function for const_step_time_iterator. Constructs a begin iterator.
|
|
123
|
+
*
|
|
124
|
+
* \param stepper The stepper to use during the iteration.
|
|
125
|
+
* \param system The system function (ODE) to solve.
|
|
126
|
+
* \param x The initial state. const_step_time_iterator stores a reference of s and changes its value during the iteration.
|
|
127
|
+
* \param t_start The initial time.
|
|
128
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
129
|
+
* \param dt The initial time step.
|
|
130
|
+
* \returns The const step time iterator.
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* \fn make_const_step_time_iterator_end( Stepper stepper , System system , State &x )
|
|
136
|
+
* \brief Factory function for const_step_time_iterator. Constructs a end iterator.
|
|
137
|
+
*
|
|
138
|
+
* \param stepper The stepper to use during the iteration.
|
|
139
|
+
* \param system The system function (ODE) to solve.
|
|
140
|
+
* \param x The initial state. const_step_time_iterator store a reference of s and changes its value during the iteration.
|
|
141
|
+
* \returns The const step time iterator.
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* \fn make_const_step_time_range( Stepper stepper , System system , State &x ,
|
|
147
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
148
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
149
|
+
typename traits::time_type< Stepper >::type dt)
|
|
150
|
+
*
|
|
151
|
+
* \brief Factory function to construct a single pass range of const_step_time_iterator. A range is here a pair of const_step_time_iterator.
|
|
152
|
+
*
|
|
153
|
+
* \param stepper The stepper to use during the iteration.
|
|
154
|
+
* \param system The system function (ODE) to solve.
|
|
155
|
+
* \param x The initial state. const_step_time_iterator stores a reference of s and changes its value during the iteration.
|
|
156
|
+
* \param t The initial time.
|
|
157
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
158
|
+
* \param dt The initial time step.
|
|
159
|
+
* \returns The const step time range.
|
|
160
|
+
*/
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
} // namespace odeint
|
|
169
|
+
} // namespace numeric
|
|
170
|
+
} // namespace boost
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
#endif // BOOST_NUMERIC_ODEINT_ITERATOR_CONST_STEP_TIME_ITERATOR_HPP_INCLUDED
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
[auto_generated]
|
|
4
|
+
boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp
|
|
5
|
+
|
|
6
|
+
[begin_description]
|
|
7
|
+
Base class for const_step_iterator and adaptive_iterator.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2012-2013 Karsten Ahnert
|
|
11
|
+
Copyright 2012-2013 Mario Mulansky
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_ITERATOR_DETAIL_ODE_ITERATOR_BASE_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_ITERATOR_DETAIL_ODE_ITERATOR_BASE_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <boost/iterator/iterator_facade.hpp>
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace numeric {
|
|
29
|
+
namespace odeint {
|
|
30
|
+
namespace detail {
|
|
31
|
+
|
|
32
|
+
struct ode_state_iterator_tag {};
|
|
33
|
+
struct ode_state_time_iterator_tag {};
|
|
34
|
+
|
|
35
|
+
template< class Iterator , class Stepper , class System , class State , typename Tag >
|
|
36
|
+
class ode_iterator_base;
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/* Specialization for the state iterator that has only state_type as its value_type */
|
|
40
|
+
template< class Iterator , class Stepper , class System , class State >
|
|
41
|
+
class ode_iterator_base< Iterator , Stepper , System , State , ode_state_iterator_tag >
|
|
42
|
+
: public boost::iterator_facade
|
|
43
|
+
<
|
|
44
|
+
Iterator ,
|
|
45
|
+
typename traits::state_type< Stepper >::type const ,
|
|
46
|
+
boost::single_pass_traversal_tag
|
|
47
|
+
>
|
|
48
|
+
{
|
|
49
|
+
private:
|
|
50
|
+
|
|
51
|
+
typedef Stepper stepper_type;
|
|
52
|
+
typedef System system_type;
|
|
53
|
+
typedef typename boost::numeric::odeint::unwrap_reference< stepper_type >::type unwrapped_stepper_type;
|
|
54
|
+
typedef State state_type;
|
|
55
|
+
typedef typename unwrapped_stepper_type::time_type time_type;
|
|
56
|
+
typedef typename unwrapped_stepper_type::value_type ode_value_type;
|
|
57
|
+
|
|
58
|
+
public:
|
|
59
|
+
|
|
60
|
+
ode_iterator_base( stepper_type stepper , system_type sys , time_type t , time_type dt )
|
|
61
|
+
: m_stepper( stepper ) , m_system( sys ) ,
|
|
62
|
+
m_t( t ) , m_dt( dt ) , m_at_end( false )
|
|
63
|
+
{ }
|
|
64
|
+
|
|
65
|
+
ode_iterator_base( stepper_type stepper , system_type sys )
|
|
66
|
+
: m_stepper( stepper ) , m_system( sys ) ,
|
|
67
|
+
m_t() , m_dt() , m_at_end( true )
|
|
68
|
+
{ }
|
|
69
|
+
|
|
70
|
+
// this function is only for testing
|
|
71
|
+
bool same( const ode_iterator_base &iter ) const
|
|
72
|
+
{
|
|
73
|
+
return (
|
|
74
|
+
//( static_cast<Iterator>(*this).get_state() ==
|
|
75
|
+
// static_cast<Iterator>(iter).get_state ) &&
|
|
76
|
+
( m_t == iter.m_t ) &&
|
|
77
|
+
( m_dt == iter.m_dt ) &&
|
|
78
|
+
( m_at_end == iter.m_at_end )
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
protected:
|
|
84
|
+
|
|
85
|
+
friend class boost::iterator_core_access;
|
|
86
|
+
|
|
87
|
+
bool equal( ode_iterator_base const& other ) const
|
|
88
|
+
{
|
|
89
|
+
if( m_at_end == other.m_at_end )
|
|
90
|
+
{
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
{
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const state_type& dereference() const
|
|
100
|
+
{
|
|
101
|
+
return static_cast<const Iterator*>(this)->get_state();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
protected:
|
|
105
|
+
|
|
106
|
+
stepper_type m_stepper;
|
|
107
|
+
system_type m_system;
|
|
108
|
+
time_type m_t;
|
|
109
|
+
time_type m_dt;
|
|
110
|
+
bool m_at_end;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
/* Specialization for the state-time iterator that has pair<state_type,time_type> as its value_type */
|
|
116
|
+
|
|
117
|
+
template< class Iterator , class Stepper , class System , class State >
|
|
118
|
+
class ode_iterator_base< Iterator , Stepper , System , State , ode_state_time_iterator_tag >
|
|
119
|
+
: public boost::iterator_facade
|
|
120
|
+
<
|
|
121
|
+
Iterator ,
|
|
122
|
+
std::pair< const State , const typename traits::time_type< Stepper >::type > ,
|
|
123
|
+
boost::single_pass_traversal_tag ,
|
|
124
|
+
std::pair< const State& , const typename traits::time_type< Stepper >::type& >
|
|
125
|
+
>
|
|
126
|
+
{
|
|
127
|
+
private:
|
|
128
|
+
|
|
129
|
+
typedef Stepper stepper_type;
|
|
130
|
+
typedef System system_type;
|
|
131
|
+
typedef typename boost::numeric::odeint::unwrap_reference< stepper_type >::type unwrapped_stepper_type;
|
|
132
|
+
typedef State state_type;
|
|
133
|
+
typedef typename unwrapped_stepper_type::time_type time_type;
|
|
134
|
+
typedef typename unwrapped_stepper_type::value_type ode_value_type;
|
|
135
|
+
|
|
136
|
+
public:
|
|
137
|
+
|
|
138
|
+
ode_iterator_base( stepper_type stepper , system_type sys ,
|
|
139
|
+
time_type t , time_type dt )
|
|
140
|
+
: m_stepper( stepper ) , m_system( sys ) ,
|
|
141
|
+
m_t( t ) , m_dt( dt ) , m_at_end( false )
|
|
142
|
+
{ }
|
|
143
|
+
|
|
144
|
+
ode_iterator_base( stepper_type stepper , system_type sys )
|
|
145
|
+
: m_stepper( stepper ) , m_system( sys ) , m_at_end( true )
|
|
146
|
+
{ }
|
|
147
|
+
|
|
148
|
+
bool same( ode_iterator_base const& iter )
|
|
149
|
+
{
|
|
150
|
+
return (
|
|
151
|
+
//( static_cast<Iterator>(*this).get_state() ==
|
|
152
|
+
// static_cast<Iterator>(iter).get_state ) &&
|
|
153
|
+
( m_t == iter.m_t ) &&
|
|
154
|
+
( m_dt == iter.m_dt ) &&
|
|
155
|
+
( m_at_end == iter.m_at_end )
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
protected:
|
|
161
|
+
|
|
162
|
+
friend class boost::iterator_core_access;
|
|
163
|
+
|
|
164
|
+
bool equal( ode_iterator_base const& other ) const
|
|
165
|
+
{
|
|
166
|
+
if( m_at_end == other.m_at_end )
|
|
167
|
+
{
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
else
|
|
171
|
+
{
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
std::pair< const state_type& , const time_type& > dereference() const
|
|
177
|
+
{
|
|
178
|
+
return std::pair< const state_type & , const time_type & >(
|
|
179
|
+
static_cast<const Iterator*>(this)->get_state() , m_t );
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
stepper_type m_stepper;
|
|
183
|
+
system_type m_system;
|
|
184
|
+
time_type m_t;
|
|
185
|
+
time_type m_dt;
|
|
186
|
+
bool m_at_end;
|
|
187
|
+
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
} // namespace detail
|
|
193
|
+
} // namespace odeint
|
|
194
|
+
} // namespace numeric
|
|
195
|
+
} // namespace boost
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
#endif // BOOST_NUMERIC_ODEINT_ITERATOR_DETAIL_ODE_ITERATOR_BASE_HPP_INCLUDED
|