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,172 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/openmp/openmp_state.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Wrappers for OpenMP.
|
|
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_EXTERNAL_OPENMP_OPENMP_STATE_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_OPENMP_OPENMP_STATE_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <omp.h>
|
|
23
|
+
#include <vector>
|
|
24
|
+
#include <algorithm>
|
|
25
|
+
#include <type_traits>
|
|
26
|
+
#include <boost/range/adaptor/sliced.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/util/copy.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/util/split.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/util/resize.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp>
|
|
31
|
+
|
|
32
|
+
namespace boost {
|
|
33
|
+
namespace numeric {
|
|
34
|
+
namespace odeint {
|
|
35
|
+
|
|
36
|
+
/** \brief A container that is split into distinct parts, for threading.
|
|
37
|
+
* Just a wrapper for vector<vector<T>>, use `copy` for splitting/joining.
|
|
38
|
+
*/
|
|
39
|
+
template< class T >
|
|
40
|
+
struct openmp_state : public std::vector< std::vector< T > >
|
|
41
|
+
{
|
|
42
|
+
openmp_state() {}
|
|
43
|
+
|
|
44
|
+
openmp_state(size_t n, const std::vector<T>& val = std::vector<T>())
|
|
45
|
+
: std::vector< std::vector< T > >(n, val) {}
|
|
46
|
+
|
|
47
|
+
template<class InputIterator>
|
|
48
|
+
openmp_state(InputIterator first, InputIterator last)
|
|
49
|
+
: std::vector< std::vector< T > >(first, last) {}
|
|
50
|
+
|
|
51
|
+
openmp_state(const std::vector< std::vector< T > > &orig)
|
|
52
|
+
: std::vector< std::vector< T > >(orig) {}
|
|
53
|
+
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
template< class T >
|
|
60
|
+
struct is_resizeable< openmp_state< T > > : std::true_type { };
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
template< class T >
|
|
64
|
+
struct same_size_impl< openmp_state< T > , openmp_state< T > >
|
|
65
|
+
{
|
|
66
|
+
static bool same_size( const openmp_state< T > &x , const openmp_state< T > &y )
|
|
67
|
+
{
|
|
68
|
+
if( x.size() != y.size() ) return false;
|
|
69
|
+
for( size_t i = 0 ; i != x.size() ; i++ )
|
|
70
|
+
if( x[i].size() != y[i].size() ) return false;
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
template< class T >
|
|
77
|
+
struct resize_impl< openmp_state< T > , openmp_state< T > >
|
|
78
|
+
{
|
|
79
|
+
static void resize( openmp_state< T > &x , const openmp_state< T > &y )
|
|
80
|
+
{
|
|
81
|
+
x.resize( y.size() );
|
|
82
|
+
# pragma omp parallel for schedule(dynamic)
|
|
83
|
+
for(size_t i = 0 ; i < x.size() ; i++)
|
|
84
|
+
x[i].resize( y[i].size() );
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
/** \brief Copy data between openmp_states of same size. */
|
|
90
|
+
template< class T >
|
|
91
|
+
struct copy_impl< openmp_state< T >, openmp_state< T > >
|
|
92
|
+
{
|
|
93
|
+
static void copy( const openmp_state< T > &from, openmp_state< T > &to )
|
|
94
|
+
{
|
|
95
|
+
# pragma omp parallel for schedule(dynamic)
|
|
96
|
+
for(size_t i = 0 ; i < from.size() ; i++)
|
|
97
|
+
std::copy( from[i].begin() , from[i].end() , to.begin() );
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
/** \brief Copy data from some container to an openmp_state and resize it.
|
|
104
|
+
* Target container size will determine number of blocks to split into.
|
|
105
|
+
* If it is empty, it will be resized to the maximum number of OpenMP threads.
|
|
106
|
+
* SourceContainer must support `s::value_type`, `s::const_iterator`, `s.begin()`, `s.end()` and `s.size()`,
|
|
107
|
+
* with Random Access Iterators; i.e. it must be a Random Access Container. */
|
|
108
|
+
template< class SourceContainer >
|
|
109
|
+
struct split_impl< SourceContainer, openmp_state< typename SourceContainer::value_type > >
|
|
110
|
+
{
|
|
111
|
+
static void split( const SourceContainer &from, openmp_state< typename SourceContainer::value_type > &to )
|
|
112
|
+
{
|
|
113
|
+
if(to.size() == 0) to.resize( omp_get_max_threads() );
|
|
114
|
+
const size_t part = from.size() / to.size();
|
|
115
|
+
# pragma omp parallel for schedule(dynamic)
|
|
116
|
+
for(size_t i = 0 ; i < to.size() ; i++) {
|
|
117
|
+
typedef typename SourceContainer::const_iterator it_t;
|
|
118
|
+
const it_t begin = from.begin() + i * part;
|
|
119
|
+
it_t end = begin + part;
|
|
120
|
+
// for cases where from.size() % to.size() > 0
|
|
121
|
+
if(i + 1 == to.size() || end > from.end()) end = from.end();
|
|
122
|
+
to[i].resize(end - begin);
|
|
123
|
+
std::copy(begin, end, to[i].begin());
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/** \brief Copy data from an openmp_state to some container and resize it.
|
|
129
|
+
* TargetContainer must support `s::value_type`, `s::iterator`, `s.begin()` and `s.resize(n)`,
|
|
130
|
+
* i.e. it must be a `std::vector`. */
|
|
131
|
+
template< class TargetContainer >
|
|
132
|
+
struct unsplit_impl< openmp_state< typename TargetContainer::value_type >, TargetContainer >
|
|
133
|
+
{
|
|
134
|
+
static void unsplit( const openmp_state< typename TargetContainer::value_type > &from , TargetContainer &to )
|
|
135
|
+
{
|
|
136
|
+
// resize target
|
|
137
|
+
size_t total_size = 0;
|
|
138
|
+
for(size_t i = 0 ; i < from.size() ; i++)
|
|
139
|
+
total_size += from[i].size();
|
|
140
|
+
to.resize( total_size );
|
|
141
|
+
// copy parts
|
|
142
|
+
typename TargetContainer::iterator out = to.begin();
|
|
143
|
+
for(size_t i = 0 ; i < from.size() ; i++)
|
|
144
|
+
out = std::copy(from[i].begin(), from[i].end(), out);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
/** \brief OpenMP-parallelized algebra.
|
|
152
|
+
* For use with openmp_state.
|
|
153
|
+
*/
|
|
154
|
+
typedef openmp_nested_algebra< range_algebra > openmp_algebra;
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
/** \brief Use `openmp_algebra` for `openmp_state`. */
|
|
159
|
+
template< class T >
|
|
160
|
+
struct algebra_dispatcher< openmp_state< T > >
|
|
161
|
+
{
|
|
162
|
+
typedef openmp_algebra algebra_type;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
#endif
|
|
172
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/thrust/thrust.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
includes all headers required for using odeint with thrust
|
|
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_THRUST_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_HPP_DEFINED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/external/thrust/thrust_algebra.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/external/thrust/thrust_operations.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/external/thrust/thrust_resize.hpp>
|
|
26
|
+
|
|
27
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_HPP_DEFINED
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/thrust/thrust_algebra.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
An algebra for thrusts device_vectors.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2010-2013 Mario Mulansky
|
|
10
|
+
Copyright 2010-2011 Karsten Ahnert
|
|
11
|
+
Copyright 2013 Kyle Lutz
|
|
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_EXTERNAL_THRUST_THRUST_ALGEBRA_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include <thrust/device_vector.h>
|
|
24
|
+
#include <thrust/for_each.h>
|
|
25
|
+
#include <thrust/iterator/zip_iterator.h>
|
|
26
|
+
|
|
27
|
+
#include <boost/range.hpp>
|
|
28
|
+
|
|
29
|
+
namespace boost {
|
|
30
|
+
namespace numeric {
|
|
31
|
+
namespace odeint {
|
|
32
|
+
|
|
33
|
+
namespace detail {
|
|
34
|
+
|
|
35
|
+
// to use in thrust::reduce
|
|
36
|
+
template< class Value >
|
|
37
|
+
struct maximum
|
|
38
|
+
{
|
|
39
|
+
template< class Fac1 , class Fac2 >
|
|
40
|
+
__host__ __device__
|
|
41
|
+
Value operator()( const Fac1 t1 , const Fac2 t2 ) const
|
|
42
|
+
{
|
|
43
|
+
return ( abs( t1 ) < abs( t2 ) ) ? t2 : t1 ;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
typedef Value result_type;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/** ToDO extend until for_each14 for rk78 */
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* The const versions are needed for boost.range to work, i.e.
|
|
58
|
+
* it allows you to do
|
|
59
|
+
* for_each1( make_pair( vec1.begin() , vec1.begin() + 10 ) , op );
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
struct thrust_algebra
|
|
63
|
+
{
|
|
64
|
+
template< class StateType , class Operation >
|
|
65
|
+
static void for_each1( StateType &s , Operation op )
|
|
66
|
+
{
|
|
67
|
+
thrust::for_each( boost::begin(s) , boost::end(s) , op );
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
template< class StateType1 , class StateType2 , class Operation >
|
|
71
|
+
static void for_each2( StateType1 &s1 , StateType2 &s2 , Operation op )
|
|
72
|
+
{
|
|
73
|
+
thrust::for_each(
|
|
74
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
75
|
+
boost::begin(s2) ) ) ,
|
|
76
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
77
|
+
boost::end(s2) ) ) ,
|
|
78
|
+
op);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template< class StateType1 , class StateType2 , class StateType3 , class Operation >
|
|
82
|
+
static void for_each3( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , Operation op )
|
|
83
|
+
{
|
|
84
|
+
thrust::for_each(
|
|
85
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
86
|
+
boost::begin(s2) ,
|
|
87
|
+
boost::begin(s3) ) ) ,
|
|
88
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
89
|
+
boost::end(s2) ,
|
|
90
|
+
boost::end(s3) ) ) ,
|
|
91
|
+
op);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
|
|
95
|
+
class Operation >
|
|
96
|
+
static void for_each4( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
|
|
97
|
+
Operation op )
|
|
98
|
+
{
|
|
99
|
+
thrust::for_each(
|
|
100
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
101
|
+
boost::begin(s2) ,
|
|
102
|
+
boost::begin(s3) ,
|
|
103
|
+
boost::begin(s4) ) ) ,
|
|
104
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
105
|
+
boost::end(s2) ,
|
|
106
|
+
boost::end(s3) ,
|
|
107
|
+
boost::end(s4) ) ) ,
|
|
108
|
+
op);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
template< class StateType1 , class StateType2 , class StateType3 ,
|
|
112
|
+
class StateType4 , class StateType5 ,class Operation >
|
|
113
|
+
static void for_each5( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
|
|
114
|
+
StateType5 &s5 , Operation op )
|
|
115
|
+
{
|
|
116
|
+
thrust::for_each(
|
|
117
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
118
|
+
boost::begin(s2) ,
|
|
119
|
+
boost::begin(s3) ,
|
|
120
|
+
boost::begin(s4) ,
|
|
121
|
+
boost::begin(s5) ) ) ,
|
|
122
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
123
|
+
boost::end(s2) ,
|
|
124
|
+
boost::end(s3) ,
|
|
125
|
+
boost::end(s4) ,
|
|
126
|
+
boost::end(s5) ) ) ,
|
|
127
|
+
op);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
template< class StateType1 , class StateType2 , class StateType3 ,
|
|
131
|
+
class StateType4 , class StateType5 , class StateType6 , class Operation >
|
|
132
|
+
static void for_each6( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
|
|
133
|
+
StateType5 &s5 , StateType6 &s6 , Operation op )
|
|
134
|
+
{
|
|
135
|
+
thrust::for_each(
|
|
136
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
137
|
+
boost::begin(s2) ,
|
|
138
|
+
boost::begin(s3) ,
|
|
139
|
+
boost::begin(s4) ,
|
|
140
|
+
boost::begin(s5) ,
|
|
141
|
+
boost::begin(s6) ) ) ,
|
|
142
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
143
|
+
boost::end(s2) ,
|
|
144
|
+
boost::end(s3) ,
|
|
145
|
+
boost::end(s4) ,
|
|
146
|
+
boost::end(s5) ,
|
|
147
|
+
boost::end(s6) ) ) ,
|
|
148
|
+
op);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
|
|
152
|
+
class StateType5 , class StateType6 , class StateType7 , class Operation >
|
|
153
|
+
static void for_each7( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
|
|
154
|
+
StateType5 &s5 , StateType6 &s6 , StateType7 &s7 , Operation op )
|
|
155
|
+
{
|
|
156
|
+
thrust::for_each(
|
|
157
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
158
|
+
boost::begin(s2) ,
|
|
159
|
+
boost::begin(s3) ,
|
|
160
|
+
boost::begin(s4) ,
|
|
161
|
+
boost::begin(s5) ,
|
|
162
|
+
boost::begin(s6) ,
|
|
163
|
+
boost::begin(s7) ) ) ,
|
|
164
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
165
|
+
boost::end(s2) ,
|
|
166
|
+
boost::end(s3) ,
|
|
167
|
+
boost::end(s4) ,
|
|
168
|
+
boost::end(s5) ,
|
|
169
|
+
boost::end(s6) ,
|
|
170
|
+
boost::end(s7) ) ) ,
|
|
171
|
+
op);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
|
|
175
|
+
class StateType5 , class StateType6 , class StateType7 , class StateType8 , class Operation >
|
|
176
|
+
static void for_each8( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
|
|
177
|
+
StateType5 &s5 , StateType6 &s6 , StateType7 &s7 , StateType8 &s8 , Operation op )
|
|
178
|
+
{
|
|
179
|
+
thrust::for_each(
|
|
180
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
|
|
181
|
+
boost::begin(s2) ,
|
|
182
|
+
boost::begin(s3) ,
|
|
183
|
+
boost::begin(s4) ,
|
|
184
|
+
boost::begin(s5) ,
|
|
185
|
+
boost::begin(s6) ,
|
|
186
|
+
boost::begin(s7) ,
|
|
187
|
+
boost::begin(s8) ) ) ,
|
|
188
|
+
thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
|
|
189
|
+
boost::end(s2) ,
|
|
190
|
+
boost::end(s3) ,
|
|
191
|
+
boost::end(s4) ,
|
|
192
|
+
boost::end(s5) ,
|
|
193
|
+
boost::end(s6) ,
|
|
194
|
+
boost::end(s7) ,
|
|
195
|
+
boost::end(s8) ) ) ,
|
|
196
|
+
op);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
template< class S >
|
|
200
|
+
static typename S::value_type norm_inf( const S &s )
|
|
201
|
+
{
|
|
202
|
+
typedef typename S::value_type value_type;
|
|
203
|
+
return thrust::reduce( boost::begin( s ) , boost::end( s ) ,
|
|
204
|
+
static_cast<value_type>(0) ,
|
|
205
|
+
detail::maximum<value_type>() );
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
} // odeint
|
|
212
|
+
} // numeric
|
|
213
|
+
} // boost
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_HPP_INCLUDED
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
algebra_dispatcher specialization for thrust
|
|
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_THRUST_THRUST_ALGEBRA_DISPATCHER_HPP_DEFINED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_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_algebra.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
|
|
26
|
+
|
|
27
|
+
// specializations 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 algebra_dispatcher< thrust::host_vector< T , A > >
|
|
36
|
+
{
|
|
37
|
+
typedef thrust_algebra algebra_type;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// specialization for thrust device_vector
|
|
41
|
+
template< class T , class A >
|
|
42
|
+
struct algebra_dispatcher< thrust::device_vector< T , A > >
|
|
43
|
+
{
|
|
44
|
+
typedef thrust_algebra algebra_type;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
} // namespace odeint
|
|
48
|
+
} // namespace numeric
|
|
49
|
+
} // namespace boost
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
// add support for thrust backend vectors, if available
|
|
53
|
+
|
|
54
|
+
#include <thrust/version.h>
|
|
55
|
+
|
|
56
|
+
#if THRUST_VERSION >= 101000
|
|
57
|
+
|
|
58
|
+
#include <thrust/detail/vector_base.h>
|
|
59
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
60
|
+
template< class T , class A >
|
|
61
|
+
struct algebra_dispatcher< thrust::detail::vector_base< T , A > >
|
|
62
|
+
{
|
|
63
|
+
typedef thrust_algebra algebra_type;
|
|
64
|
+
};
|
|
65
|
+
} } }
|
|
66
|
+
|
|
67
|
+
#elif THRUST_VERSION >= 100600
|
|
68
|
+
|
|
69
|
+
// specialization for thrust cpp vector
|
|
70
|
+
#include <thrust/system/cpp/vector.h>
|
|
71
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
72
|
+
template< class T , class A >
|
|
73
|
+
struct algebra_dispatcher< thrust::cpp::vector< T , A > >
|
|
74
|
+
{
|
|
75
|
+
typedef thrust_algebra algebra_type;
|
|
76
|
+
};
|
|
77
|
+
} } }
|
|
78
|
+
|
|
79
|
+
// specialization for thrust omp vector
|
|
80
|
+
#ifdef _OPENMP
|
|
81
|
+
#include <thrust/system/omp/vector.h>
|
|
82
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
83
|
+
template< class T , class A >
|
|
84
|
+
struct algebra_dispatcher< thrust::omp::vector< T , A > >
|
|
85
|
+
{
|
|
86
|
+
typedef thrust_algebra algebra_type;
|
|
87
|
+
};
|
|
88
|
+
} } }
|
|
89
|
+
#endif // _OPENMP
|
|
90
|
+
|
|
91
|
+
// specialization for thrust tbb vector
|
|
92
|
+
#ifdef TBB_VERSION_MAJOR
|
|
93
|
+
#include <thrust/system/tbb/vector.h>
|
|
94
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
95
|
+
template< class T , class A >
|
|
96
|
+
struct algebra_dispatcher< thrust::tbb::vector< T , A > >
|
|
97
|
+
{
|
|
98
|
+
typedef thrust_algebra algebra_type;
|
|
99
|
+
};
|
|
100
|
+
} } }
|
|
101
|
+
#endif // TBB_VERSION_MAJOR
|
|
102
|
+
|
|
103
|
+
// specialization for thrust cuda vector
|
|
104
|
+
#ifdef __CUDACC__
|
|
105
|
+
#include <thrust/system/cuda/vector.h>
|
|
106
|
+
namespace boost { namespace numeric { namespace odeint {
|
|
107
|
+
template< class T , class A >
|
|
108
|
+
struct algebra_dispatcher< thrust::cuda::vector< T , A > >
|
|
109
|
+
{
|
|
110
|
+
typedef thrust_algebra algebra_type;
|
|
111
|
+
};
|
|
112
|
+
} } }
|
|
113
|
+
#endif // __CUDACC__
|
|
114
|
+
|
|
115
|
+
#endif // THRUST_VERSION >= 100600
|
|
116
|
+
|
|
117
|
+
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_DISPATCHER_HPP_DEFINED
|
|
118
|
+
|