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,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/split_adaptor.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
A range adaptor which returns even-sized slices.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2013 Karsten Ahnert
|
|
10
|
+
Copyright 2013 Mario Mulansky
|
|
11
|
+
Copyright 2013 Pascal Germroth
|
|
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_UTIL_SPLIT_ADAPTOR_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_SPLIT_ADAPTOR_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <boost/numeric/odeint/tools/assert.hpp>
|
|
23
|
+
#include <boost/range/adaptor/argument_fwd.hpp>
|
|
24
|
+
#include <boost/range/size_type.hpp>
|
|
25
|
+
#include <boost/range/iterator_range.hpp>
|
|
26
|
+
#include <algorithm>
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace numeric {
|
|
30
|
+
namespace odeint {
|
|
31
|
+
namespace detail {
|
|
32
|
+
|
|
33
|
+
/** \brief Returns the begin and end offset for a sub-range */
|
|
34
|
+
inline std::pair<std::size_t, std::size_t>
|
|
35
|
+
split_offsets( std::size_t total_length, std::size_t index, std::size_t parts )
|
|
36
|
+
{
|
|
37
|
+
BOOST_NUMERIC_ODEINT_ASSERT( parts > 0 );
|
|
38
|
+
BOOST_NUMERIC_ODEINT_ASSERT( index < parts );
|
|
39
|
+
const std::size_t
|
|
40
|
+
slice = total_length / parts,
|
|
41
|
+
partial = total_length % parts,
|
|
42
|
+
lo = (std::min)(index, partial),
|
|
43
|
+
hi = (std::max<std::ptrdiff_t>)(0, index - partial),
|
|
44
|
+
begin_offset = lo * (slice + 1) + hi * slice,
|
|
45
|
+
length = slice + (index < partial ? 1 : 0),
|
|
46
|
+
end_offset = begin_offset + length;
|
|
47
|
+
return std::make_pair( begin_offset, end_offset );
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** \brief Return the sub-range `index` from a range which is split into `parts`.
|
|
51
|
+
*
|
|
52
|
+
* For example, splitting a range into three about equal-sized sub-ranges:
|
|
53
|
+
* \code
|
|
54
|
+
* sub0 = make_split_range(rng, 0, 3);
|
|
55
|
+
* sub1 = rng | split(1, 3);
|
|
56
|
+
* sub2 = rng | split(2, 3);
|
|
57
|
+
* \endcode
|
|
58
|
+
*/
|
|
59
|
+
template< class RandomAccessRange >
|
|
60
|
+
inline iterator_range< typename range_iterator<RandomAccessRange>::type >
|
|
61
|
+
make_split_range( RandomAccessRange& rng, std::size_t index, std::size_t parts )
|
|
62
|
+
{
|
|
63
|
+
const std::pair<std::size_t, std::size_t> off = split_offsets(boost::size(rng), index, parts);
|
|
64
|
+
return make_iterator_range( boost::begin(rng) + off.first, boost::begin(rng) + off.second );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
template< class RandomAccessRange >
|
|
68
|
+
inline iterator_range< typename range_iterator<const RandomAccessRange>::type >
|
|
69
|
+
make_split_range( const RandomAccessRange& rng, std::size_t index, std::size_t parts )
|
|
70
|
+
{
|
|
71
|
+
const std::pair<std::size_t, std::size_t> off = split_offsets(boost::size(rng), index, parts);
|
|
72
|
+
return make_iterator_range( boost::begin(rng) + off.first, boost::begin(rng) + off.second );
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
struct split
|
|
77
|
+
{
|
|
78
|
+
split(std::size_t index, std::size_t parts)
|
|
79
|
+
: index(index), parts(parts) {}
|
|
80
|
+
std::size_t index, parts;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
template< class RandomAccessRange >
|
|
84
|
+
inline iterator_range< typename range_iterator<RandomAccessRange>::type >
|
|
85
|
+
operator|( RandomAccessRange& rng, const split& f )
|
|
86
|
+
{
|
|
87
|
+
return make_split_range( rng, f.index, f.parts );
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
template< class RandomAccessRange >
|
|
91
|
+
inline iterator_range< typename range_iterator<const RandomAccessRange>::type >
|
|
92
|
+
operator|( const RandomAccessRange& rng, const split& f )
|
|
93
|
+
{
|
|
94
|
+
return make_split_range( rng, f.index, f.parts );
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#endif
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/state_wrapper.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
State wrapper for the state type in all stepper. The state wrappers are responsible for construction,
|
|
7
|
+
destruction, copying construction, assignment and resizing.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
Copyright 2011-2013 Karsten Ahnert
|
|
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_UTIL_STATE_WRAPPER_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_STATE_WRAPPER_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include <boost/type_traits/integral_constant.hpp>
|
|
24
|
+
|
|
25
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/util/resize.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/util/same_size.hpp>
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
namespace boost {
|
|
31
|
+
namespace numeric {
|
|
32
|
+
namespace odeint {
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
template< class V , class Enabler = void >
|
|
36
|
+
struct state_wrapper
|
|
37
|
+
{
|
|
38
|
+
typedef state_wrapper< V > state_wrapper_type;
|
|
39
|
+
|
|
40
|
+
V m_v;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_STATE_WRAPPER_HPP_INCLUDED
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/stepper_traits.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
tba.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2013 Karsten Ahnert
|
|
10
|
+
Copyright 2013 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_STEPPER_TRAITS_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_STEPPER_TRAITS_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
namespace boost {
|
|
25
|
+
namespace numeric {
|
|
26
|
+
namespace odeint {
|
|
27
|
+
namespace traits {
|
|
28
|
+
|
|
29
|
+
template< class Stepper >
|
|
30
|
+
struct state_type
|
|
31
|
+
{
|
|
32
|
+
typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
|
|
33
|
+
typedef typename stepper_type::state_type type;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
template< class Stepper >
|
|
37
|
+
struct time_type
|
|
38
|
+
{
|
|
39
|
+
typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
|
|
40
|
+
typedef typename stepper_type::time_type type;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
template< class Stepper >
|
|
44
|
+
struct stepper_category
|
|
45
|
+
{
|
|
46
|
+
typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
|
|
47
|
+
typedef typename stepper_type::stepper_category type;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
template< class Stepper >
|
|
51
|
+
struct value_type
|
|
52
|
+
{
|
|
53
|
+
typedef typename boost::numeric::odeint::unwrap_reference< Stepper >::type stepper_type;
|
|
54
|
+
typedef typename stepper_type::value_type type;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
} // namespace traits
|
|
58
|
+
} // namespace odeint
|
|
59
|
+
} // namespace numeric
|
|
60
|
+
} // namespace boost
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_STEPPER_TRAITS_HPP_DEFINED
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
3390,3392c3390
|
|
2
|
+
< typename enable_if< is_convertible<typename E1::value_type , T2>,
|
|
3
|
+
< typename matrix_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type
|
|
4
|
+
< > ::result_type
|
|
5
|
+
---
|
|
6
|
+
> typename matrix_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/ublas_wrapper.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Resizing for ublas::vector and ublas::matrix
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2013 Mario Mulansky
|
|
10
|
+
Copyright 2011-2013 Karsten Ahnert
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_UBLAS_WRAPPER_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_UBLAS_WRAPPER_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
|
|
23
|
+
#include <boost/numeric/ublas/vector.hpp>
|
|
24
|
+
#include <boost/numeric/ublas/matrix.hpp>
|
|
25
|
+
#include <boost/numeric/ublas/lu.hpp>
|
|
26
|
+
#include <boost/numeric/ublas/vector_expression.hpp>
|
|
27
|
+
#include <boost/numeric/ublas/matrix_expression.hpp>
|
|
28
|
+
|
|
29
|
+
#include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/algebra/default_operations.hpp>
|
|
31
|
+
|
|
32
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
33
|
+
#include <boost/numeric/odeint/util/state_wrapper.hpp>
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/* extend ublas by a few operations */
|
|
37
|
+
|
|
38
|
+
/* map norm_inf onto reduce( v , default_operations::maximum ) */
|
|
39
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
40
|
+
|
|
41
|
+
template< typename T , typename A >
|
|
42
|
+
struct vector_space_norm_inf< boost::numeric::ublas::vector<T,A> >
|
|
43
|
+
{
|
|
44
|
+
typedef T result_type;
|
|
45
|
+
|
|
46
|
+
result_type operator()( const boost::numeric::ublas::vector<T,A> &x ) const
|
|
47
|
+
{
|
|
48
|
+
return boost::numeric::ublas::norm_inf( x );
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
template< class T , class L , class A >
|
|
54
|
+
struct vector_space_norm_inf< boost::numeric::ublas::matrix<T,L,A> >
|
|
55
|
+
{
|
|
56
|
+
typedef T result_type;
|
|
57
|
+
|
|
58
|
+
result_type operator()( const boost::numeric::ublas::matrix<T,L,A> &x ) const
|
|
59
|
+
{
|
|
60
|
+
return boost::numeric::ublas::norm_inf( x );
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
} } }
|
|
64
|
+
|
|
65
|
+
/* additional operations:
|
|
66
|
+
* abs( v )
|
|
67
|
+
* v / w
|
|
68
|
+
* a + v
|
|
69
|
+
*/
|
|
70
|
+
namespace boost { namespace numeric { namespace ublas {
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
// elementwise abs - calculates absolute values of the elements
|
|
74
|
+
template<class T>
|
|
75
|
+
struct scalar_abs: public scalar_unary_functor<T> {
|
|
76
|
+
typedef typename scalar_unary_functor<T>::value_type value_type;
|
|
77
|
+
typedef typename scalar_unary_functor<T>::argument_type argument_type;
|
|
78
|
+
typedef typename scalar_unary_functor<T>::result_type result_type;
|
|
79
|
+
|
|
80
|
+
static BOOST_UBLAS_INLINE
|
|
81
|
+
result_type apply (argument_type t) {
|
|
82
|
+
using std::abs;
|
|
83
|
+
return abs (t);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
// (abs v) [i] = abs (v [i])
|
|
89
|
+
template<class E>
|
|
90
|
+
BOOST_UBLAS_INLINE
|
|
91
|
+
typename vector_unary_traits<E, scalar_abs<typename E::value_type> >::result_type
|
|
92
|
+
abs (const vector_expression<E> &e) {
|
|
93
|
+
typedef typename vector_unary_traits<E, scalar_abs<typename E::value_type> >::expression_type expression_type;
|
|
94
|
+
return expression_type (e ());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// (abs m) [i] = abs (m [i])
|
|
98
|
+
template<class E>
|
|
99
|
+
BOOST_UBLAS_INLINE
|
|
100
|
+
typename matrix_unary1_traits<E, scalar_abs<typename E::value_type> >::result_type
|
|
101
|
+
abs (const matrix_expression<E> &e) {
|
|
102
|
+
typedef typename matrix_unary1_traits<E, scalar_abs<typename E::value_type> >::expression_type expression_type;
|
|
103
|
+
return expression_type (e ());
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
// elementwise division (v1 / v2) [i] = v1 [i] / v2 [i]
|
|
108
|
+
template<class E1, class E2>
|
|
109
|
+
BOOST_UBLAS_INLINE
|
|
110
|
+
typename vector_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
|
|
111
|
+
typename E2::value_type> >::result_type
|
|
112
|
+
operator / (const vector_expression<E1> &e1,
|
|
113
|
+
const vector_expression<E2> &e2) {
|
|
114
|
+
typedef typename vector_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
|
|
115
|
+
typename E2::value_type> >::expression_type expression_type;
|
|
116
|
+
return expression_type (e1 (), e2 ());
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
// elementwise division (m1 / m2) [i] = m1 [i] / m2 [i]
|
|
121
|
+
template<class E1, class E2>
|
|
122
|
+
BOOST_UBLAS_INLINE
|
|
123
|
+
typename matrix_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
|
|
124
|
+
typename E2::value_type> >::result_type
|
|
125
|
+
operator / (const matrix_expression<E1> &e1,
|
|
126
|
+
const matrix_expression<E2> &e2) {
|
|
127
|
+
typedef typename matrix_binary_traits<E1, E2, scalar_divides<typename E1::value_type,
|
|
128
|
+
typename E2::value_type> >::expression_type expression_type;
|
|
129
|
+
return expression_type (e1 (), e2 ());
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// addition with scalar
|
|
133
|
+
// (t + v) [i] = t + v [i]
|
|
134
|
+
template<class T1, class E2>
|
|
135
|
+
BOOST_UBLAS_INLINE
|
|
136
|
+
typename enable_if< is_convertible<T1, typename E2::value_type >,
|
|
137
|
+
typename vector_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::result_type
|
|
138
|
+
>::type
|
|
139
|
+
operator + (const T1 &e1,
|
|
140
|
+
const vector_expression<E2> &e2) {
|
|
141
|
+
typedef typename vector_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::expression_type expression_type;
|
|
142
|
+
return expression_type (e1, e2 ());
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// addition with scalar
|
|
146
|
+
// (t + m) [i] = t + m [i]
|
|
147
|
+
template<class T1, class E2>
|
|
148
|
+
BOOST_UBLAS_INLINE
|
|
149
|
+
typename enable_if< is_convertible<T1, typename E2::value_type >,
|
|
150
|
+
typename matrix_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::result_type
|
|
151
|
+
>::type
|
|
152
|
+
operator + (const T1 &e1,
|
|
153
|
+
const matrix_expression<E2> &e2) {
|
|
154
|
+
typedef typename matrix_binary_scalar1_traits<const T1, E2, scalar_plus<T1, typename E2::value_type> >::expression_type expression_type;
|
|
155
|
+
return expression_type (e1, e2 ());
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
} } }
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
/* add resize functionality */
|
|
164
|
+
namespace boost {
|
|
165
|
+
namespace numeric {
|
|
166
|
+
namespace odeint {
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
* resizeable specialization for boost::numeric::ublas::vector
|
|
170
|
+
*/
|
|
171
|
+
template< class T , class A >
|
|
172
|
+
struct is_resizeable< boost::numeric::ublas::vector< T , A > >
|
|
173
|
+
{
|
|
174
|
+
typedef std::true_type type;
|
|
175
|
+
const static bool value = type::value;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
/*
|
|
180
|
+
* resizeable specialization for boost::numeric::ublas::matrix
|
|
181
|
+
*/
|
|
182
|
+
template< class T , class L , class A >
|
|
183
|
+
struct is_resizeable< boost::numeric::ublas::matrix< T , L , A > >
|
|
184
|
+
{
|
|
185
|
+
typedef std::true_type type;
|
|
186
|
+
const static bool value = type::value;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
/*
|
|
191
|
+
* resizeable specialization for boost::numeric::ublas::permutation_matrix
|
|
192
|
+
*/
|
|
193
|
+
template< class T , class A >
|
|
194
|
+
struct is_resizeable< boost::numeric::ublas::permutation_matrix< T , A > >
|
|
195
|
+
{
|
|
196
|
+
typedef std::true_type type;
|
|
197
|
+
const static bool value = type::value;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
// specialization for ublas::matrix
|
|
202
|
+
// same size and resize specialization for matrix-matrix resizing
|
|
203
|
+
template< class T , class L , class A , class T2 , class L2 , class A2 >
|
|
204
|
+
struct same_size_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::matrix< T2 , L2 , A2 > >
|
|
205
|
+
{
|
|
206
|
+
static bool same_size( const boost::numeric::ublas::matrix< T , L , A > &m1 ,
|
|
207
|
+
const boost::numeric::ublas::matrix< T2 , L2 , A2 > &m2 )
|
|
208
|
+
{
|
|
209
|
+
return ( ( m1.size1() == m2.size1() ) && ( m1.size2() == m2.size2() ) );
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
template< class T , class L , class A , class T2 , class L2 , class A2 >
|
|
214
|
+
struct resize_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::matrix< T2 , L2 , A2 > >
|
|
215
|
+
{
|
|
216
|
+
static void resize( boost::numeric::ublas::matrix< T , L , A > &m1 ,
|
|
217
|
+
const boost::numeric::ublas::matrix< T2 , L2 , A2 > &m2 )
|
|
218
|
+
{
|
|
219
|
+
m1.resize( m2.size1() , m2.size2() );
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
// same size and resize specialization for matrix-vector resizing
|
|
226
|
+
template< class T , class L , class A , class T_V , class A_V >
|
|
227
|
+
struct same_size_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::vector< T_V , A_V > >
|
|
228
|
+
{
|
|
229
|
+
static bool same_size( const boost::numeric::ublas::matrix< T , L , A > &m ,
|
|
230
|
+
const boost::numeric::ublas::vector< T_V , A_V > &v )
|
|
231
|
+
{
|
|
232
|
+
return ( ( m.size1() == v.size() ) && ( m.size2() == v.size() ) );
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
template< class T , class L , class A , class T_V , class A_V >
|
|
237
|
+
struct resize_impl< boost::numeric::ublas::matrix< T , L , A > , boost::numeric::ublas::vector< T_V , A_V > >
|
|
238
|
+
{
|
|
239
|
+
static void resize( boost::numeric::ublas::matrix< T , L , A > &m ,
|
|
240
|
+
const boost::numeric::ublas::vector< T_V , A_V > &v )
|
|
241
|
+
{
|
|
242
|
+
m.resize( v.size() , v.size() );
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
// specialization for ublas::permutation_matrix
|
|
249
|
+
// same size and resize specialization for matrix-vector resizing
|
|
250
|
+
template< class T , class A , class T_V , class A_V >
|
|
251
|
+
struct same_size_impl< boost::numeric::ublas::permutation_matrix< T , A > ,
|
|
252
|
+
boost::numeric::ublas::vector< T_V , A_V > >
|
|
253
|
+
{
|
|
254
|
+
static bool same_size( const boost::numeric::ublas::permutation_matrix< T , A > &m ,
|
|
255
|
+
const boost::numeric::ublas::vector< T_V , A_V > &v )
|
|
256
|
+
{
|
|
257
|
+
return ( m.size() == v.size() ); // && ( m.size2() == v.size() ) );
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
template< class T , class A , class T_V , class A_V >
|
|
262
|
+
struct resize_impl< boost::numeric::ublas::vector< T_V , A_V > ,
|
|
263
|
+
boost::numeric::ublas::permutation_matrix< T , A > >
|
|
264
|
+
{
|
|
265
|
+
static void resize( const boost::numeric::ublas::vector< T_V , A_V > &v,
|
|
266
|
+
boost::numeric::ublas::permutation_matrix< T , A > &m )
|
|
267
|
+
{
|
|
268
|
+
m.resize( v.size() , v.size() );
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
template< class T , class A >
|
|
279
|
+
struct state_wrapper< boost::numeric::ublas::permutation_matrix< T , A > > // with resizing
|
|
280
|
+
{
|
|
281
|
+
typedef boost::numeric::ublas::permutation_matrix< T , A > state_type;
|
|
282
|
+
typedef state_wrapper< state_type > state_wrapper_type;
|
|
283
|
+
|
|
284
|
+
state_type m_v;
|
|
285
|
+
|
|
286
|
+
state_wrapper() : m_v( 1 ) // permutation matrix constructor requires a size, choose 1 as default
|
|
287
|
+
{ }
|
|
288
|
+
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
} } }
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_UBLAS_WRAPPER_HPP_INCLUDED
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/util/unit_helper.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Get and set the value of a unit.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2012-2013 Karsten Ahnert
|
|
10
|
+
Copyright 2012-2013 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_UTIL_UNIT_HELPER_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_UTIL_UNIT_HELPER_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#ifndef __CUDACC__
|
|
23
|
+
#include <boost/units/quantity.hpp>
|
|
24
|
+
#include <boost/units/get_dimension.hpp>
|
|
25
|
+
#include <boost/units/get_system.hpp>
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
namespace boost {
|
|
31
|
+
namespace numeric {
|
|
32
|
+
namespace odeint {
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
namespace detail {
|
|
36
|
+
|
|
37
|
+
template<class T , class Enabler = void >
|
|
38
|
+
struct get_unit_value_impl
|
|
39
|
+
{
|
|
40
|
+
static T value(const T &t)
|
|
41
|
+
{
|
|
42
|
+
return t;
|
|
43
|
+
}
|
|
44
|
+
typedef T result_type;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
#ifndef __CUDACC__
|
|
48
|
+
template<class Unit , class T>
|
|
49
|
+
struct get_unit_value_impl< boost::units::quantity< Unit , T> >
|
|
50
|
+
{
|
|
51
|
+
static T value( const boost::units::quantity< Unit , T> &t )
|
|
52
|
+
{
|
|
53
|
+
return t.value();
|
|
54
|
+
}
|
|
55
|
+
typedef T result_type;
|
|
56
|
+
};
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
template<class T , class V , class Enabler = void >
|
|
64
|
+
struct set_unit_value_impl
|
|
65
|
+
{
|
|
66
|
+
static void set_value(T &t , const V &v)
|
|
67
|
+
{
|
|
68
|
+
t = v;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
#ifndef __CUDACC__
|
|
73
|
+
template<class Unit , class T , class V>
|
|
74
|
+
struct set_unit_value_impl<boost::units::quantity<Unit , T> , V>
|
|
75
|
+
{
|
|
76
|
+
static void set_value(boost::units::quantity<Unit , T> &t , const V &v)
|
|
77
|
+
{
|
|
78
|
+
t = boost::units::quantity<Unit , T>::from_value(v);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
#endif
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
} // namespace detail
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
template<class T>
|
|
89
|
+
typename detail::get_unit_value_impl<T>::result_type get_unit_value(const T &t)
|
|
90
|
+
{
|
|
91
|
+
return detail::get_unit_value_impl<T>::value(t);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
template<class T , class V>
|
|
96
|
+
void set_unit_value(T &t , const V &v)
|
|
97
|
+
{
|
|
98
|
+
return detail::set_unit_value_impl<T , V>::set_value(t , v);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
template< class T >
|
|
104
|
+
struct unit_value_type
|
|
105
|
+
{
|
|
106
|
+
typedef T type;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
#ifndef __CUDACC__
|
|
110
|
+
template< class Unit , class Y >
|
|
111
|
+
struct unit_value_type< boost::units::quantity< Unit , Y > >
|
|
112
|
+
{
|
|
113
|
+
typedef Y type;
|
|
114
|
+
};
|
|
115
|
+
#endif
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
template< typename Time >
|
|
127
|
+
struct inverse_time
|
|
128
|
+
{
|
|
129
|
+
typedef Time type;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
#ifndef __CUDACC__
|
|
133
|
+
template< typename Unit , typename Value >
|
|
134
|
+
struct inverse_time< boost::units::quantity< Unit , Value > >
|
|
135
|
+
{
|
|
136
|
+
typedef boost::units::quantity< Unit , Value > time_type;
|
|
137
|
+
typedef typename boost::units::get_dimension< time_type >::type dimension;
|
|
138
|
+
typedef typename boost::units::get_system< time_type >::type system;
|
|
139
|
+
typedef typename boost::mpl::divides< boost::units::dimensionless_type , dimension >::type inv_dimension;
|
|
140
|
+
typedef boost::units::unit< inv_dimension , system > inv_unit;
|
|
141
|
+
typedef boost::units::quantity< inv_unit , Value > type;
|
|
142
|
+
};
|
|
143
|
+
#endif
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
} // namespace odeint
|
|
147
|
+
} // namespace numeric
|
|
148
|
+
} // namespace boost
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
#endif // BOOST_NUMERIC_ODEINT_UTIL_UNIT_HELPER_HPP_INCLUDED
|