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,233 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/thrust/thrust_operations.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Operations of thrust zipped iterators. Is the counterpart of the thrust_algebra.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2010-2013 Mario Mulansky
|
|
10
|
+
Copyright 2010-2012 Karsten Ahnert
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
namespace boost {
|
|
22
|
+
namespace numeric {
|
|
23
|
+
namespace odeint {
|
|
24
|
+
|
|
25
|
+
#include <thrust/tuple.h>
|
|
26
|
+
#include <thrust/iterator/zip_iterator.h>
|
|
27
|
+
|
|
28
|
+
/**ToDo extend to scale_sum13 for rk78 */
|
|
29
|
+
|
|
30
|
+
struct thrust_operations
|
|
31
|
+
{
|
|
32
|
+
template< class Fac1 = double , class Fac2 = Fac1 >
|
|
33
|
+
struct scale_sum2
|
|
34
|
+
{
|
|
35
|
+
const Fac1 m_alpha1;
|
|
36
|
+
const Fac2 m_alpha2;
|
|
37
|
+
|
|
38
|
+
scale_sum2( const Fac1 alpha1 , const Fac2 alpha2 )
|
|
39
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) { }
|
|
40
|
+
|
|
41
|
+
template< class Tuple >
|
|
42
|
+
__host__ __device__
|
|
43
|
+
void operator()( Tuple t ) const
|
|
44
|
+
{
|
|
45
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) + m_alpha2 * thrust::get<2>(t);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
template< class Fac1 = double , class Fac2 = Fac1 >
|
|
50
|
+
struct scale_sum_swap2
|
|
51
|
+
{
|
|
52
|
+
const Fac1 m_alpha1;
|
|
53
|
+
const Fac2 m_alpha2;
|
|
54
|
+
|
|
55
|
+
scale_sum_swap2( const Fac1 alpha1 , const Fac2 alpha2 )
|
|
56
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) { }
|
|
57
|
+
|
|
58
|
+
template< class Tuple >
|
|
59
|
+
__host__ __device__
|
|
60
|
+
void operator()( Tuple t ) const
|
|
61
|
+
{
|
|
62
|
+
typename thrust::tuple_element<0,Tuple>::type tmp = thrust::get<0>(t);
|
|
63
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) + m_alpha2 * thrust::get<2>(t);
|
|
64
|
+
thrust::get<1>(t) = tmp;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 >
|
|
69
|
+
struct scale_sum3
|
|
70
|
+
{
|
|
71
|
+
const Fac1 m_alpha1;
|
|
72
|
+
const Fac2 m_alpha2;
|
|
73
|
+
const Fac3 m_alpha3;
|
|
74
|
+
|
|
75
|
+
scale_sum3( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 )
|
|
76
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) { }
|
|
77
|
+
|
|
78
|
+
template< class Tuple >
|
|
79
|
+
__host__ __device__
|
|
80
|
+
void operator()( Tuple t ) const
|
|
81
|
+
{
|
|
82
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
|
|
83
|
+
m_alpha2 * thrust::get<2>(t) +
|
|
84
|
+
m_alpha3 * thrust::get<3>(t);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 , class Fac4 = Fac3 >
|
|
90
|
+
struct scale_sum4
|
|
91
|
+
{
|
|
92
|
+
const Fac1 m_alpha1;
|
|
93
|
+
const Fac2 m_alpha2;
|
|
94
|
+
const Fac3 m_alpha3;
|
|
95
|
+
const Fac4 m_alpha4;
|
|
96
|
+
|
|
97
|
+
scale_sum4( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 , const Fac4 alpha4 )
|
|
98
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) , m_alpha4( alpha4 ){ }
|
|
99
|
+
|
|
100
|
+
template< class Tuple >
|
|
101
|
+
__host__ __device__
|
|
102
|
+
void operator()( Tuple t ) const
|
|
103
|
+
{
|
|
104
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
|
|
105
|
+
m_alpha2 * thrust::get<2>(t) +
|
|
106
|
+
m_alpha3 * thrust::get<3>(t) +
|
|
107
|
+
m_alpha4 * thrust::get<4>(t);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 ,
|
|
113
|
+
class Fac4 = Fac3 , class Fac5 = Fac4 >
|
|
114
|
+
struct scale_sum5
|
|
115
|
+
{
|
|
116
|
+
const Fac1 m_alpha1;
|
|
117
|
+
const Fac2 m_alpha2;
|
|
118
|
+
const Fac3 m_alpha3;
|
|
119
|
+
const Fac4 m_alpha4;
|
|
120
|
+
const Fac5 m_alpha5;
|
|
121
|
+
|
|
122
|
+
scale_sum5( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
|
|
123
|
+
const Fac4 alpha4 , const Fac5 alpha5 )
|
|
124
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
|
|
125
|
+
m_alpha4( alpha4 ) , m_alpha5( alpha5 ) { }
|
|
126
|
+
|
|
127
|
+
template< class Tuple >
|
|
128
|
+
__host__ __device__
|
|
129
|
+
void operator()( Tuple t ) const
|
|
130
|
+
{
|
|
131
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
|
|
132
|
+
m_alpha2 * thrust::get<2>(t) +
|
|
133
|
+
m_alpha3 * thrust::get<3>(t) +
|
|
134
|
+
m_alpha4 * thrust::get<4>(t) +
|
|
135
|
+
m_alpha5 * thrust::get<5>(t);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 ,
|
|
141
|
+
class Fac4 = Fac3 , class Fac5 = Fac4 , class Fac6 = Fac5 >
|
|
142
|
+
struct scale_sum6
|
|
143
|
+
{
|
|
144
|
+
const Fac1 m_alpha1;
|
|
145
|
+
const Fac2 m_alpha2;
|
|
146
|
+
const Fac3 m_alpha3;
|
|
147
|
+
const Fac4 m_alpha4;
|
|
148
|
+
const Fac5 m_alpha5;
|
|
149
|
+
const Fac6 m_alpha6;
|
|
150
|
+
|
|
151
|
+
scale_sum6( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
|
|
152
|
+
const Fac4 alpha4 , const Fac5 alpha5 , const Fac6 alpha6 )
|
|
153
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
|
|
154
|
+
m_alpha4( alpha4 ) , m_alpha5( alpha5 ) , m_alpha6( alpha6 ) { }
|
|
155
|
+
|
|
156
|
+
template< class Tuple >
|
|
157
|
+
__host__ __device__
|
|
158
|
+
void operator()( Tuple t ) const
|
|
159
|
+
{
|
|
160
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
|
|
161
|
+
m_alpha2 * thrust::get<2>(t) +
|
|
162
|
+
m_alpha3 * thrust::get<3>(t) +
|
|
163
|
+
m_alpha4 * thrust::get<4>(t) +
|
|
164
|
+
m_alpha5 * thrust::get<5>(t) +
|
|
165
|
+
m_alpha6 * thrust::get<6>(t);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac2 , class Fac4 = Fac3 ,
|
|
171
|
+
class Fac5 = Fac4 , class Fac6 = Fac5 , class Fac7 = Fac6 >
|
|
172
|
+
struct scale_sum7
|
|
173
|
+
{
|
|
174
|
+
const Fac1 m_alpha1;
|
|
175
|
+
const Fac2 m_alpha2;
|
|
176
|
+
const Fac3 m_alpha3;
|
|
177
|
+
const Fac4 m_alpha4;
|
|
178
|
+
const Fac5 m_alpha5;
|
|
179
|
+
const Fac6 m_alpha6;
|
|
180
|
+
const Fac7 m_alpha7;
|
|
181
|
+
|
|
182
|
+
scale_sum7( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
|
|
183
|
+
const Fac4 alpha4 , const Fac5 alpha5 , const Fac6 alpha6 , const Fac7 alpha7 )
|
|
184
|
+
: m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
|
|
185
|
+
m_alpha4( alpha4 ) , m_alpha5( alpha5 ) , m_alpha6( alpha6 ) , m_alpha7( alpha7 ) { }
|
|
186
|
+
|
|
187
|
+
template< class Tuple >
|
|
188
|
+
__host__ __device__
|
|
189
|
+
void operator()( Tuple t ) const
|
|
190
|
+
{
|
|
191
|
+
thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
|
|
192
|
+
m_alpha2 * thrust::get<2>(t) +
|
|
193
|
+
m_alpha3 * thrust::get<3>(t) +
|
|
194
|
+
m_alpha4 * thrust::get<4>(t) +
|
|
195
|
+
m_alpha5 * thrust::get<5>(t) +
|
|
196
|
+
m_alpha6 * thrust::get<6>(t) +
|
|
197
|
+
m_alpha7 * thrust::get<7>(t) ;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
template< class Fac1 = double >
|
|
205
|
+
struct rel_error
|
|
206
|
+
{
|
|
207
|
+
const Fac1 m_eps_abs , m_eps_rel , m_a_x , m_a_dxdt;
|
|
208
|
+
|
|
209
|
+
rel_error( const Fac1 eps_abs , const Fac1 eps_rel , const Fac1 a_x , const Fac1 a_dxdt )
|
|
210
|
+
: m_eps_abs( eps_abs ) , m_eps_rel( eps_rel ) , m_a_x( a_x ) , m_a_dxdt( a_dxdt ) { }
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
template< class Tuple >
|
|
214
|
+
__host__ __device__
|
|
215
|
+
void operator()( Tuple t ) const
|
|
216
|
+
{
|
|
217
|
+
using std::abs;
|
|
218
|
+
thrust::get< 0 >( t ) = abs( thrust::get< 0 >( t ) ) /
|
|
219
|
+
( m_eps_abs + m_eps_rel * ( m_a_x * abs( thrust::get< 1 >( t ) + m_a_dxdt * abs( thrust::get< 2 >( t ) ) ) ) );
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
typedef void result_type;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
} // odeint
|
|
229
|
+
} // numeric
|
|
230
|
+
} // boost
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_HPP_INCLUDED
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
operations_dispatcher specialization for thrust
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2013-2014 Karsten Ahnert
|
|
10
|
+
Copyright 2013-2014 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_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
#include <thrust/host_vector.h>
|
|
22
|
+
#include <thrust/device_vector.h>
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/external/thrust/thrust_operations.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
|
|
26
|
+
|
|
27
|
+
// support for the standard thrust containers
|
|
28
|
+
|
|
29
|
+
namespace boost {
|
|
30
|
+
namespace numeric {
|
|
31
|
+
namespace odeint {
|
|
32
|
+
|
|
33
|
+
// specialization for thrust host_vector
|
|
34
|
+
template< class T , class A >
|
|
35
|
+
struct operations_dispatcher< thrust::host_vector< T , A > >
|
|
36
|
+
{
|
|
37
|
+
typedef thrust_operations operations_type;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// specialization for thrust device_vector
|
|
41
|
+
template< class T , class A >
|
|
42
|
+
struct operations_dispatcher< thrust::device_vector< T , A > >
|
|
43
|
+
{
|
|
44
|
+
typedef thrust_operations operations_type;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
} // namespace odeint
|
|
48
|
+
} // namespace numeric
|
|
49
|
+
} // namespace boost
|
|
50
|
+
|
|
51
|
+
// add support for thrust backend vectors, if available
|
|
52
|
+
|
|
53
|
+
#include <thrust/version.h>
|
|
54
|
+
|
|
55
|
+
#if THRUST_VERSION >= 101000
|
|
56
|
+
|
|
57
|
+
#include <thrust/detail/vector_base.h>
|
|
58
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
59
|
+
template< class T , class A >
|
|
60
|
+
struct operations_dispatcher< thrust::detail::vector_base< T , A > >
|
|
61
|
+
{
|
|
62
|
+
typedef thrust_operations operations_type;
|
|
63
|
+
};
|
|
64
|
+
} } }
|
|
65
|
+
|
|
66
|
+
#elif THRUST_VERSION >= 100600
|
|
67
|
+
|
|
68
|
+
// specialization for thrust cpp vector
|
|
69
|
+
#include <thrust/system/cpp/vector.h>
|
|
70
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
71
|
+
template< class T , class A >
|
|
72
|
+
struct operations_dispatcher< thrust::cpp::vector< T , A > >
|
|
73
|
+
{
|
|
74
|
+
typedef thrust_operations operations_type;
|
|
75
|
+
};
|
|
76
|
+
} } }
|
|
77
|
+
|
|
78
|
+
// specialization for thrust omp vector
|
|
79
|
+
#ifdef _OPENMP
|
|
80
|
+
#include <thrust/system/omp/vector.h>
|
|
81
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
82
|
+
template< class T , class A >
|
|
83
|
+
struct operations_dispatcher< thrust::omp::vector< T , A > >
|
|
84
|
+
{
|
|
85
|
+
typedef thrust_operations operations_type;
|
|
86
|
+
};
|
|
87
|
+
} } }
|
|
88
|
+
#endif // _OPENMP
|
|
89
|
+
|
|
90
|
+
// specialization for thrust tbb vector
|
|
91
|
+
#ifdef TBB_VERSION_MAJOR
|
|
92
|
+
#include <thrust/system/tbb/vector.h>
|
|
93
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
94
|
+
template< class T , class A >
|
|
95
|
+
struct operations_dispatcher< thrust::tbb::vector< T , A > >
|
|
96
|
+
{
|
|
97
|
+
typedef thrust_operations operations_type;
|
|
98
|
+
};
|
|
99
|
+
} } }
|
|
100
|
+
#endif // TBB_VERSION_MAJOR
|
|
101
|
+
|
|
102
|
+
// specialization for thrust cuda vector
|
|
103
|
+
#ifdef __CUDACC__
|
|
104
|
+
#include <thrust/system/cuda/vector.h>
|
|
105
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
106
|
+
template< class T , class A >
|
|
107
|
+
struct operations_dispatcher< thrust::cuda::vector< T , A > >
|
|
108
|
+
{
|
|
109
|
+
typedef thrust_operations operations_type;
|
|
110
|
+
};
|
|
111
|
+
} } }
|
|
112
|
+
#endif // __CUDACC__
|
|
113
|
+
|
|
114
|
+
#endif // THRUST_VERSION >= 100600
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED
|
|
118
|
+
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/thrust/thrust_resize.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Enable resizing for thrusts device and host_vector.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2010-2014 Mario Mulansky
|
|
10
|
+
Copyright 2010-2011 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_EXTERNAL_THRUST_THRUST_RESIZE_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_RESIZE_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
|
|
23
|
+
#include <boost/range.hpp>
|
|
24
|
+
|
|
25
|
+
#include <thrust/device_vector.h>
|
|
26
|
+
#include <thrust/host_vector.h>
|
|
27
|
+
#include <thrust/distance.h>
|
|
28
|
+
|
|
29
|
+
#include <boost/numeric/odeint/util/resize.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/util/same_size.hpp>
|
|
31
|
+
#include <boost/numeric/odeint/util/copy.hpp>
|
|
32
|
+
|
|
33
|
+
namespace boost {
|
|
34
|
+
namespace numeric {
|
|
35
|
+
namespace odeint {
|
|
36
|
+
|
|
37
|
+
// some macros that define the necessary utilities
|
|
38
|
+
|
|
39
|
+
#define ODEINT_THRUST_VECTOR_IS_RESIZEABLE( THRUST_VECTOR ) \
|
|
40
|
+
template< class T , class A > \
|
|
41
|
+
struct is_resizeable< THRUST_VECTOR<T,A> > \
|
|
42
|
+
{ \
|
|
43
|
+
struct type : public std::true_type { }; \
|
|
44
|
+
const static bool value = type::value; \
|
|
45
|
+
}; \
|
|
46
|
+
|
|
47
|
+
#define ODEINT_TRHUST_VECTOR_RESIZE_IMPL( THRUST_VECTOR ) \
|
|
48
|
+
template< class T, class A > \
|
|
49
|
+
struct resize_impl< THRUST_VECTOR<T,A> , THRUST_VECTOR<T,A> > \
|
|
50
|
+
{ \
|
|
51
|
+
static void resize( THRUST_VECTOR<T,A> &x , \
|
|
52
|
+
const THRUST_VECTOR<T,A> &y ) \
|
|
53
|
+
{ \
|
|
54
|
+
x.resize( y.size() ); \
|
|
55
|
+
} \
|
|
56
|
+
}; \
|
|
57
|
+
template< class T, class A, typename Range > \
|
|
58
|
+
struct resize_impl< THRUST_VECTOR<T,A> , Range > \
|
|
59
|
+
{ \
|
|
60
|
+
static void resize( THRUST_VECTOR<T,A> &x , \
|
|
61
|
+
const Range &y ) \
|
|
62
|
+
{ \
|
|
63
|
+
x.resize( thrust::distance(boost::begin(y), \
|
|
64
|
+
boost::end(y))); \
|
|
65
|
+
} \
|
|
66
|
+
}; \
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
#define ODEINT_THRUST_SAME_SIZE_IMPL( THRUST_VECTOR ) \
|
|
70
|
+
template< class T , class A > \
|
|
71
|
+
struct same_size_impl< THRUST_VECTOR<T,A> , THRUST_VECTOR<T,A> > \
|
|
72
|
+
{ \
|
|
73
|
+
static bool same_size( const THRUST_VECTOR<T,A> &x , \
|
|
74
|
+
const THRUST_VECTOR<T,A> &y ) \
|
|
75
|
+
{ \
|
|
76
|
+
return x.size() == y.size(); \
|
|
77
|
+
} \
|
|
78
|
+
}; \
|
|
79
|
+
template< class T , class A, typename Range > \
|
|
80
|
+
struct same_size_impl< THRUST_VECTOR<T,A> , Range > \
|
|
81
|
+
{ \
|
|
82
|
+
static bool same_size( const THRUST_VECTOR<T,A> &x , \
|
|
83
|
+
const Range &y ) \
|
|
84
|
+
{ \
|
|
85
|
+
return x.size() == thrust::distance(boost::begin(y), \
|
|
86
|
+
boost::end(y)); \
|
|
87
|
+
} \
|
|
88
|
+
}; \
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
#define ODEINT_THRUST_COPY_IMPL( THRUST_VECTOR ) \
|
|
92
|
+
template< class Container1 , class T , class A > \
|
|
93
|
+
struct copy_impl< Container1 , THRUST_VECTOR<T,A> > \
|
|
94
|
+
{ \
|
|
95
|
+
static void copy( const Container1 &from , THRUST_VECTOR<T,A> &to ) \
|
|
96
|
+
{ \
|
|
97
|
+
thrust::copy( boost::begin( from ) , boost::end( from ) , \
|
|
98
|
+
boost::begin( to ) ); \
|
|
99
|
+
} \
|
|
100
|
+
}; \
|
|
101
|
+
\
|
|
102
|
+
template< class T , class A , class Container2 > \
|
|
103
|
+
struct copy_impl< THRUST_VECTOR<T,A> , Container2 > \
|
|
104
|
+
{ \
|
|
105
|
+
static void copy( const THRUST_VECTOR<T,A> &from , Container2 &to ) \
|
|
106
|
+
{ \
|
|
107
|
+
thrust::copy( boost::begin( from ) , boost::end( from ) , \
|
|
108
|
+
boost::begin( to ) ); \
|
|
109
|
+
} \
|
|
110
|
+
}; \
|
|
111
|
+
\
|
|
112
|
+
template< class T , class A > \
|
|
113
|
+
struct copy_impl< THRUST_VECTOR<T,A> , THRUST_VECTOR<T,A> > \
|
|
114
|
+
{ \
|
|
115
|
+
static void copy( const THRUST_VECTOR<T,A> &from , \
|
|
116
|
+
THRUST_VECTOR<T,A> &to ) \
|
|
117
|
+
{ \
|
|
118
|
+
thrust::copy( boost::begin( from ) , boost::end( from ) , \
|
|
119
|
+
boost::begin( to ) ); \
|
|
120
|
+
} \
|
|
121
|
+
}; \
|
|
122
|
+
|
|
123
|
+
// add support for the standard thrust containers
|
|
124
|
+
|
|
125
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::device_vector )
|
|
126
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::device_vector )
|
|
127
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::device_vector )
|
|
128
|
+
ODEINT_THRUST_COPY_IMPL( thrust::device_vector )
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::host_vector )
|
|
132
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::host_vector )
|
|
133
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::host_vector )
|
|
134
|
+
ODEINT_THRUST_COPY_IMPL( thrust::host_vector )
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
} // odeint
|
|
138
|
+
} // numeric
|
|
139
|
+
} // boost
|
|
140
|
+
|
|
141
|
+
// add support for thrust backend vectors, if available
|
|
142
|
+
|
|
143
|
+
#include <thrust/version.h>
|
|
144
|
+
|
|
145
|
+
#if THRUST_VERSION >= 101000
|
|
146
|
+
|
|
147
|
+
#include <thrust/detail/vector_base.h>
|
|
148
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
149
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::detail::vector_base )
|
|
150
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::detail::vector_base )
|
|
151
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::detail::vector_base )
|
|
152
|
+
ODEINT_THRUST_COPY_IMPL( thrust::detail::vector_base )
|
|
153
|
+
} } }
|
|
154
|
+
|
|
155
|
+
#elif THRUST_VERSION >= 100600
|
|
156
|
+
|
|
157
|
+
#include <thrust/system/cpp/vector.h>
|
|
158
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
159
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::cpp::vector )
|
|
160
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::cpp::vector )
|
|
161
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::cpp::vector )
|
|
162
|
+
ODEINT_THRUST_COPY_IMPL( thrust::cpp::vector )
|
|
163
|
+
} } }
|
|
164
|
+
|
|
165
|
+
#ifdef _OPENMP
|
|
166
|
+
#include <thrust/system/omp/vector.h>
|
|
167
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
168
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::omp::vector )
|
|
169
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::omp::vector )
|
|
170
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::omp::vector )
|
|
171
|
+
ODEINT_THRUST_COPY_IMPL( thrust::omp::vector )
|
|
172
|
+
} } }
|
|
173
|
+
#endif // _OPENMP
|
|
174
|
+
|
|
175
|
+
#ifdef TBB_VERSION_MAJOR
|
|
176
|
+
#include <thrust/system/tbb/vector.h>
|
|
177
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
178
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::tbb::vector )
|
|
179
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::tbb::vector )
|
|
180
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::tbb::vector )
|
|
181
|
+
ODEINT_THRUST_COPY_IMPL( thrust::tbb::vector )
|
|
182
|
+
} } }
|
|
183
|
+
#endif // TBB_VERSION_MAJOR
|
|
184
|
+
|
|
185
|
+
#ifdef __CUDACC__
|
|
186
|
+
#include <thrust/system/cuda/vector.h>
|
|
187
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
188
|
+
ODEINT_THRUST_VECTOR_IS_RESIZEABLE( thrust::cuda::vector )
|
|
189
|
+
ODEINT_TRHUST_VECTOR_RESIZE_IMPL( thrust::cuda::vector )
|
|
190
|
+
ODEINT_THRUST_SAME_SIZE_IMPL( thrust::cuda::vector )
|
|
191
|
+
ODEINT_THRUST_COPY_IMPL( thrust::cuda::vector )
|
|
192
|
+
} } }
|
|
193
|
+
#endif // __CUDACC__
|
|
194
|
+
|
|
195
|
+
#endif // THRUST_VERSION >= 100600
|
|
196
|
+
|
|
197
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_RESIZE_HPP_INCLUDED
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/vexcl/vexcl.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
includes all headers required for using vexcl in odeint
|
|
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_EXTERNAL_VEXCL_VEXCL_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/external/vexcl/vexcl_resize.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/external/vexcl/vexcl_abs.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/external/vexcl/vexcl_copy.hpp>
|
|
27
|
+
|
|
28
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_HPP_DEFINED
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/vexcl/vexcl_abs.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
abs() specialization for vexcl
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2013 Karsten Ahnert
|
|
10
|
+
Copyright 2009-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_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
#include <vexcl/vector.hpp>
|
|
22
|
+
#include <vexcl/multivector.hpp>
|
|
23
|
+
#include <vexcl/operations.hpp>
|
|
24
|
+
|
|
25
|
+
namespace vex {
|
|
26
|
+
|
|
27
|
+
template <typename T, size_t N>
|
|
28
|
+
typename std::enable_if<
|
|
29
|
+
std::is_integral<T>::value,
|
|
30
|
+
typename boost::proto::result_of::make_expr<
|
|
31
|
+
boost::proto::tag::function,
|
|
32
|
+
abs_func,
|
|
33
|
+
const vex::multivector<T, N>&
|
|
34
|
+
>::type const
|
|
35
|
+
>::type
|
|
36
|
+
abs(const multivector<T, N> &arg) {
|
|
37
|
+
return boost::proto::make_expr<boost::proto::tag::function>(
|
|
38
|
+
abs_func(),
|
|
39
|
+
boost::ref(arg)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
template <typename T, size_t N>
|
|
44
|
+
typename std::enable_if<
|
|
45
|
+
!std::is_integral<T>::value,
|
|
46
|
+
typename boost::proto::result_of::make_expr<
|
|
47
|
+
boost::proto::tag::function,
|
|
48
|
+
fabs_func,
|
|
49
|
+
const vex::multivector<T, N>&
|
|
50
|
+
>::type const
|
|
51
|
+
>::type
|
|
52
|
+
abs(const multivector<T, N> &arg) {
|
|
53
|
+
return boost::proto::make_expr<boost::proto::tag::function>(
|
|
54
|
+
fabs_func(),
|
|
55
|
+
boost::ref(arg)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
} // namespace vex
|
|
60
|
+
|
|
61
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
algebra_dispatcher specialization for vexcl
|
|
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_EXTERNAL_VEXCL_VEXCL_ALGEBRA_DISPATCHER_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ALGEBRA_DISPATCHER_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
#include <vexcl/vector.hpp>
|
|
22
|
+
#include <vexcl/multivector.hpp>
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace numeric {
|
|
30
|
+
namespace odeint {
|
|
31
|
+
|
|
32
|
+
// specialization for vexcl vector
|
|
33
|
+
template< typename T >
|
|
34
|
+
struct algebra_dispatcher< vex::vector< T > >
|
|
35
|
+
{
|
|
36
|
+
typedef vector_space_algebra algebra_type;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// specialization for vexcl multivector
|
|
40
|
+
template< typename T , size_t N >
|
|
41
|
+
struct algebra_dispatcher< vex::multivector< T , N > >
|
|
42
|
+
{
|
|
43
|
+
typedef vector_space_algebra algebra_type;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
} // namespace odeint
|
|
47
|
+
} // namespace numeric
|
|
48
|
+
} // namespace boost
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ALGEBRA_DISPATCHER_HPP_DEFINED
|