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,304 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright (c) 2000-2002
|
|
3
|
+
// Joerg Walter, Mathias Koch
|
|
4
|
+
//
|
|
5
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
|
6
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
8
|
+
//
|
|
9
|
+
// The authors gratefully acknowledge the support of
|
|
10
|
+
// GeNeSys mbH & Co. KG in producing this work.
|
|
11
|
+
//
|
|
12
|
+
|
|
13
|
+
#ifndef _BOOST_UBLAS_CONFIG_
|
|
14
|
+
#define _BOOST_UBLAS_CONFIG_
|
|
15
|
+
|
|
16
|
+
#include <cassert>
|
|
17
|
+
#include <cstddef>
|
|
18
|
+
#include <algorithm>
|
|
19
|
+
#include <limits>
|
|
20
|
+
|
|
21
|
+
#include <boost/config.hpp>
|
|
22
|
+
#include <boost/static_assert.hpp>
|
|
23
|
+
#include <boost/noncopyable.hpp>
|
|
24
|
+
#include <boost/mpl/if.hpp>
|
|
25
|
+
#include <boost/mpl/and.hpp>
|
|
26
|
+
#include <boost/type_traits/is_same.hpp>
|
|
27
|
+
#include <boost/type_traits/is_convertible.hpp>
|
|
28
|
+
#include <boost/type_traits/is_const.hpp>
|
|
29
|
+
#include <boost/type_traits/remove_reference.hpp>
|
|
30
|
+
|
|
31
|
+
// C++11
|
|
32
|
+
#if defined(__cplusplus) && __cplusplus >= 201103L
|
|
33
|
+
|
|
34
|
+
#define BOOST_UBLAS_CPP_GE_2011
|
|
35
|
+
|
|
36
|
+
#elif BOOST_MSVC >= 1800
|
|
37
|
+
|
|
38
|
+
#define BOOST_UBLAS_CPP_GE_2011
|
|
39
|
+
|
|
40
|
+
#else
|
|
41
|
+
|
|
42
|
+
#undef BOOST_UBLAS_CPP_GE_2011 // Make sure no one defined it
|
|
43
|
+
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
// Microsoft Visual C++
|
|
47
|
+
#if defined (BOOST_MSVC) && ! defined (BOOST_STRICT_CONFIG)
|
|
48
|
+
|
|
49
|
+
// Version 7.1
|
|
50
|
+
#if BOOST_MSVC == 1310
|
|
51
|
+
// One of these workarounds is needed for MSVC 7.1 AFAIK
|
|
52
|
+
// (thanks to John Maddock and Martin Lauer).
|
|
53
|
+
#if !(defined(BOOST_UBLAS_NO_NESTED_CLASS_RELATION) || defined(BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION))
|
|
54
|
+
#define BOOST_UBLAS_NO_NESTED_CLASS_RELATION
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
// GNU Compiler Collection
|
|
63
|
+
#if defined (__GNUC__) && ! defined (BOOST_STRICT_CONFIG)
|
|
64
|
+
|
|
65
|
+
#if __GNUC__ >= 4 || (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)
|
|
66
|
+
// Specified by ABI definition see GCC bug id 9982
|
|
67
|
+
#define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
|
68
|
+
#endif
|
|
69
|
+
|
|
70
|
+
#if __GNUC__ < 3
|
|
71
|
+
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
// Intel Compiler
|
|
78
|
+
#if defined (BOOST_INTEL) && ! defined (BOOST_STRICT_CONFIG)
|
|
79
|
+
|
|
80
|
+
#if defined (BOOST_INTEL_LINUX) && (BOOST_INTEL_LINUX >= 800)
|
|
81
|
+
// By inspection of compiler results
|
|
82
|
+
#define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
|
83
|
+
#endif
|
|
84
|
+
|
|
85
|
+
#if (BOOST_INTEL < 700)
|
|
86
|
+
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
|
87
|
+
#endif
|
|
88
|
+
|
|
89
|
+
// Define swap for index_pair and triple.
|
|
90
|
+
#if (BOOST_INTEL <= 800)
|
|
91
|
+
namespace boost { namespace numeric { namespace ublas {
|
|
92
|
+
template<class C, class IC>
|
|
93
|
+
class indexed_iterator;
|
|
94
|
+
|
|
95
|
+
template<class V>
|
|
96
|
+
class index_pair;
|
|
97
|
+
template<class M>
|
|
98
|
+
class index_triple;
|
|
99
|
+
}}}
|
|
100
|
+
|
|
101
|
+
namespace std {
|
|
102
|
+
template<class V>
|
|
103
|
+
inline
|
|
104
|
+
void swap (boost::numeric::ublas::index_pair<V> i1, boost::numeric::ublas::index_pair<V> i2) {
|
|
105
|
+
i1.swap (i2);
|
|
106
|
+
}
|
|
107
|
+
template<class M>
|
|
108
|
+
inline
|
|
109
|
+
void swap (boost::numeric::ublas::index_triple<M> i1, boost::numeric::ublas::index_triple<M> i2) {
|
|
110
|
+
i1.swap (i2);
|
|
111
|
+
}
|
|
112
|
+
// iter_swap also needed for ICC on Itanium?
|
|
113
|
+
template<class C, class IC>
|
|
114
|
+
inline
|
|
115
|
+
void iter_swap (boost::numeric::ublas::indexed_iterator<C, IC> it1,
|
|
116
|
+
boost::numeric::ublas::indexed_iterator<C, IC> it2) {
|
|
117
|
+
swap (*it1, *it2);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
#endif
|
|
121
|
+
|
|
122
|
+
#endif
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
// Comeau compiler - thanks to Kresimir Fresl
|
|
126
|
+
#if defined (__COMO__) && ! defined (BOOST_STRICT_CONFIG)
|
|
127
|
+
|
|
128
|
+
// Missing std::abs overloads for float types in <cmath> are in <cstdlib>
|
|
129
|
+
#if defined(__LIBCOMO__) && (__LIBCOMO_VERSION__ <= 31)
|
|
130
|
+
#include <cstdlib>
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
#endif
|
|
134
|
+
|
|
135
|
+
// PGI compiler
|
|
136
|
+
#ifdef __PGIC__
|
|
137
|
+
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 0
|
|
138
|
+
#endif
|
|
139
|
+
|
|
140
|
+
// HP aCC C++ compiler
|
|
141
|
+
#if defined (__HP_aCC) && ! defined (BOOST_STRICT_CONFIG)
|
|
142
|
+
# if (__HP_aCC >= 60000 )
|
|
143
|
+
# define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
|
144
|
+
#endif
|
|
145
|
+
#endif
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
// SGI MIPSpro C++ compiler
|
|
149
|
+
#if defined (__sgi) && ! defined (BOOST_STRICT_CONFIG)
|
|
150
|
+
|
|
151
|
+
// Missing std::abs overloads for float types in <cmath> are in <cstdlib>
|
|
152
|
+
// This test should be library version specific.
|
|
153
|
+
#include <cstdlib>
|
|
154
|
+
|
|
155
|
+
#if __COMPILER_VERSION >=650
|
|
156
|
+
// By inspection of compiler results - thanks to Peter Schmitteckert
|
|
157
|
+
#define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
|
158
|
+
#endif
|
|
159
|
+
|
|
160
|
+
#endif
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
// Metrowerks Codewarrior
|
|
164
|
+
#if defined (__MWERKS__) && ! defined (BOOST_STRICT_CONFIG)
|
|
165
|
+
|
|
166
|
+
// 8.x
|
|
167
|
+
#if __MWERKS__ <= 0x3003
|
|
168
|
+
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
|
169
|
+
#endif
|
|
170
|
+
|
|
171
|
+
#endif
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
// Detect other compilers with serious defects - override by defineing BOOST_UBLAS_UNSUPPORTED_COMPILER=0
|
|
175
|
+
#ifndef BOOST_UBLAS_UNSUPPORTED_COMPILER
|
|
176
|
+
#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STDC_NAMESPACE)
|
|
177
|
+
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
|
178
|
+
#endif
|
|
179
|
+
#endif
|
|
180
|
+
|
|
181
|
+
// Cannot continue with an unsupported compiler
|
|
182
|
+
#if defined(BOOST_UBLAS_UNSUPPORTED_COMPILER) && (BOOST_UBLAS_UNSUPPORTED_COMPILER != 0)
|
|
183
|
+
#error Your compiler and/or configuration is unsupported by this verions of uBLAS. Define BOOST_UBLAS_UNSUPPORTED_COMPILER=0 to override this message. Boost 1.32.0 includes uBLAS with support for many older compilers.
|
|
184
|
+
#endif
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
// Enable performance options in RELEASE mode
|
|
189
|
+
#if defined (NDEBUG) || defined (BOOST_UBLAS_NDEBUG)
|
|
190
|
+
|
|
191
|
+
#ifndef BOOST_UBLAS_INLINE
|
|
192
|
+
#define BOOST_UBLAS_INLINE inline
|
|
193
|
+
#endif
|
|
194
|
+
|
|
195
|
+
// Do not check sizes!
|
|
196
|
+
#define BOOST_UBLAS_USE_FAST_SAME
|
|
197
|
+
|
|
198
|
+
// NO runtime error checks with BOOST_UBLAS_CHECK macro
|
|
199
|
+
#ifndef BOOST_UBLAS_CHECK_ENABLE
|
|
200
|
+
#define BOOST_UBLAS_CHECK_ENABLE 0
|
|
201
|
+
#endif
|
|
202
|
+
|
|
203
|
+
// NO type compatibility numeric checks
|
|
204
|
+
#ifndef BOOST_UBLAS_TYPE_CHECK
|
|
205
|
+
#define BOOST_UBLAS_TYPE_CHECK 0
|
|
206
|
+
#endif
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
// Disable performance options in DEBUG mode
|
|
210
|
+
#else
|
|
211
|
+
|
|
212
|
+
#ifndef BOOST_UBLAS_INLINE
|
|
213
|
+
#define BOOST_UBLAS_INLINE
|
|
214
|
+
#endif
|
|
215
|
+
|
|
216
|
+
// Enable runtime error checks with BOOST_UBLAS_CHECK macro. Check bounds etc
|
|
217
|
+
#ifndef BOOST_UBLAS_CHECK_ENABLE
|
|
218
|
+
#define BOOST_UBLAS_CHECK_ENABLE 1
|
|
219
|
+
#endif
|
|
220
|
+
|
|
221
|
+
// Type compatibiltity numeric checks
|
|
222
|
+
#ifndef BOOST_UBLAS_TYPE_CHECK
|
|
223
|
+
#define BOOST_UBLAS_TYPE_CHECK 1
|
|
224
|
+
#endif
|
|
225
|
+
|
|
226
|
+
#endif
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
/*
|
|
230
|
+
* Type compatibility checks
|
|
231
|
+
* Control type compatibility numeric runtime checks for non dense matrices.
|
|
232
|
+
* Require additional storage and complexity
|
|
233
|
+
*/
|
|
234
|
+
#if BOOST_UBLAS_TYPE_CHECK
|
|
235
|
+
template <class Dummy>
|
|
236
|
+
struct disable_type_check
|
|
237
|
+
{
|
|
238
|
+
static bool value;
|
|
239
|
+
};
|
|
240
|
+
template <class Dummy>
|
|
241
|
+
bool disable_type_check<Dummy>::value = false;
|
|
242
|
+
#endif
|
|
243
|
+
#ifndef BOOST_UBLAS_TYPE_CHECK_EPSILON
|
|
244
|
+
#define BOOST_UBLAS_TYPE_CHECK_EPSILON (type_traits<real_type>::type_sqrt (std::numeric_limits<real_type>::epsilon ()))
|
|
245
|
+
#endif
|
|
246
|
+
#ifndef BOOST_UBLAS_TYPE_CHECK_MIN
|
|
247
|
+
#define BOOST_UBLAS_TYPE_CHECK_MIN (type_traits<real_type>::type_sqrt ( (std::numeric_limits<real_type>::min) ()))
|
|
248
|
+
#endif
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
/*
|
|
252
|
+
* General Configuration
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
// Proxy shortcuts overload the alreadly heavily over used operator ()
|
|
256
|
+
//#define BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS
|
|
257
|
+
|
|
258
|
+
// In order to simplify debugging is is possible to simplify expression template
|
|
259
|
+
// so they are restricted to a single operation
|
|
260
|
+
// #define BOOST_UBLAS_SIMPLE_ET_DEBUG
|
|
261
|
+
|
|
262
|
+
// Use invariant hoisting.
|
|
263
|
+
// #define BOOST_UBLAS_USE_INVARIANT_HOISTING
|
|
264
|
+
|
|
265
|
+
// Use Duff's device in element access loops
|
|
266
|
+
// #define BOOST_UBLAS_USE_DUFF_DEVICE
|
|
267
|
+
|
|
268
|
+
// Choose evaluation method for dense vectors and matrices
|
|
269
|
+
#if !(defined(BOOST_UBLAS_USE_INDEXING) || defined(BOOST_UBLAS_USE_ITERATING))
|
|
270
|
+
#define BOOST_UBLAS_USE_INDEXING
|
|
271
|
+
#endif
|
|
272
|
+
// #define BOOST_UBLAS_ITERATOR_THRESHOLD 0
|
|
273
|
+
|
|
274
|
+
// Use indexed iterators - unsupported implementation experiment
|
|
275
|
+
// #define BOOST_UBLAS_USE_INDEXED_ITERATOR
|
|
276
|
+
|
|
277
|
+
// Alignment of bounded_array type
|
|
278
|
+
#ifndef BOOST_UBLAS_BOUNDED_ARRAY_ALIGN
|
|
279
|
+
#define BOOST_UBLAS_BOUNDED_ARRAY_ALIGN
|
|
280
|
+
#endif
|
|
281
|
+
|
|
282
|
+
// Enable different sparse element proxies
|
|
283
|
+
#ifndef BOOST_UBLAS_NO_ELEMENT_PROXIES
|
|
284
|
+
// Sparse proxies prevent reference invalidation problems in expressions such as:
|
|
285
|
+
// a [1] = a [0] = 1 Thanks to Marc Duflot for spotting this.
|
|
286
|
+
// #define BOOST_UBLAS_STRICT_MAP_ARRAY
|
|
287
|
+
#define BOOST_UBLAS_STRICT_VECTOR_SPARSE
|
|
288
|
+
#define BOOST_UBLAS_STRICT_MATRIX_SPARSE
|
|
289
|
+
// Hermitian matrices use element proxies to allow assignment to conjugate triangle
|
|
290
|
+
#define BOOST_UBLAS_STRICT_HERMITIAN
|
|
291
|
+
#endif
|
|
292
|
+
|
|
293
|
+
// Define to configure special settings for reference returning members
|
|
294
|
+
// #define BOOST_UBLAS_REFERENCE_CONST_MEMBER
|
|
295
|
+
// #define BOOST_UBLAS_PROXY_CONST_MEMBER
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
// Include type declerations and functions
|
|
299
|
+
#include <boost/numeric/ublas/fwd.hpp>
|
|
300
|
+
#include <boost/numeric/ublas/detail/definitions.hpp>
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
#endif
|
|
304
|
+
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright (c) 2000-2002
|
|
3
|
+
// Joerg Walter, Mathias Koch
|
|
4
|
+
//
|
|
5
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
|
6
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
8
|
+
//
|
|
9
|
+
// The authors gratefully acknowledge the support of
|
|
10
|
+
// GeNeSys mbH & Co. KG in producing this work.
|
|
11
|
+
//
|
|
12
|
+
|
|
13
|
+
#ifndef _BOOST_UBLAS_DEFINITIONS_
|
|
14
|
+
#define _BOOST_UBLAS_DEFINITIONS_
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
namespace boost { namespace numeric { namespace ublas {
|
|
18
|
+
|
|
19
|
+
namespace detail {
|
|
20
|
+
/* Borrowed from boost/concept_checks.hpp
|
|
21
|
+
"inline" is used for ignore_unused_variable_warning()
|
|
22
|
+
to make sure there is no overhead with g++.
|
|
23
|
+
*/
|
|
24
|
+
template <class T> inline
|
|
25
|
+
void ignore_unused_variable_warning(const T&) {}
|
|
26
|
+
} // namespace detail
|
|
27
|
+
|
|
28
|
+
// Borrowed from Dave Abraham's noncopyable.
|
|
29
|
+
// I believe this should be part of utility.hpp one day...
|
|
30
|
+
namespace nonassignable_ // protection from unintended ADL
|
|
31
|
+
{
|
|
32
|
+
class nonassignable {
|
|
33
|
+
protected:
|
|
34
|
+
nonassignable () {}
|
|
35
|
+
~nonassignable () {}
|
|
36
|
+
private: // emphasize the following members are private
|
|
37
|
+
const nonassignable& operator= (const nonassignable &);
|
|
38
|
+
}; // nonassignable
|
|
39
|
+
}
|
|
40
|
+
typedef nonassignable_::nonassignable nonassignable;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
// Assignment proxy.
|
|
44
|
+
// Provides temporary free assigment when LHS has no alias on RHS
|
|
45
|
+
template<class C>
|
|
46
|
+
class noalias_proxy:
|
|
47
|
+
private nonassignable {
|
|
48
|
+
public:
|
|
49
|
+
typedef typename C::closure_type closure_type;
|
|
50
|
+
|
|
51
|
+
BOOST_UBLAS_INLINE
|
|
52
|
+
noalias_proxy (C& lval):
|
|
53
|
+
nonassignable (), lval_ (lval) {}
|
|
54
|
+
BOOST_UBLAS_INLINE
|
|
55
|
+
noalias_proxy (const noalias_proxy& p):
|
|
56
|
+
nonassignable (), lval_ (p.lval_) {}
|
|
57
|
+
|
|
58
|
+
template <class E>
|
|
59
|
+
BOOST_UBLAS_INLINE
|
|
60
|
+
closure_type &operator= (const E& e) {
|
|
61
|
+
lval_.assign (e);
|
|
62
|
+
return lval_;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
template <class E>
|
|
66
|
+
BOOST_UBLAS_INLINE
|
|
67
|
+
closure_type &operator+= (const E& e) {
|
|
68
|
+
lval_.plus_assign (e);
|
|
69
|
+
return lval_;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
template <class E>
|
|
73
|
+
BOOST_UBLAS_INLINE
|
|
74
|
+
closure_type &operator-= (const E& e) {
|
|
75
|
+
lval_.minus_assign (e);
|
|
76
|
+
return lval_;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
closure_type lval_;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// Improve syntax of efficient assignment where no aliases of LHS appear on the RHS
|
|
84
|
+
// noalias(lhs) = rhs_expression
|
|
85
|
+
template <class C>
|
|
86
|
+
BOOST_UBLAS_INLINE
|
|
87
|
+
noalias_proxy<C> noalias (C& lvalue) {
|
|
88
|
+
return noalias_proxy<C> (lvalue);
|
|
89
|
+
}
|
|
90
|
+
template <class C>
|
|
91
|
+
BOOST_UBLAS_INLINE
|
|
92
|
+
noalias_proxy<const C> noalias (const C& lvalue) {
|
|
93
|
+
return noalias_proxy<const C> (lvalue);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Possible future compatible syntax where lvalue possible has an unsafe alias on the RHS
|
|
97
|
+
// safe(lhs) = rhs_expression
|
|
98
|
+
template <class C>
|
|
99
|
+
BOOST_UBLAS_INLINE
|
|
100
|
+
C& safe (C& lvalue) {
|
|
101
|
+
return lvalue;
|
|
102
|
+
}
|
|
103
|
+
template <class C>
|
|
104
|
+
BOOST_UBLAS_INLINE
|
|
105
|
+
const C& safe (const C& lvalue) {
|
|
106
|
+
return lvalue;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
// Dimension accessors
|
|
111
|
+
namespace dimension {
|
|
112
|
+
|
|
113
|
+
// Generic accessors
|
|
114
|
+
template<unsigned dimension>
|
|
115
|
+
struct dimension_properties {};
|
|
116
|
+
|
|
117
|
+
template<>
|
|
118
|
+
struct dimension_properties<1> {
|
|
119
|
+
template <class E>
|
|
120
|
+
BOOST_UBLAS_INLINE static
|
|
121
|
+
typename E::size_type size (const vector_expression<E> &e) {
|
|
122
|
+
return e ().size ();
|
|
123
|
+
}
|
|
124
|
+
template <class E>
|
|
125
|
+
BOOST_UBLAS_INLINE static
|
|
126
|
+
typename E::size_type size (const matrix_expression<E> &e) {
|
|
127
|
+
return e ().size1 ();
|
|
128
|
+
}
|
|
129
|
+
// Note: Index functions cannot deduce dependant template parameter V or M from i
|
|
130
|
+
template <class V>
|
|
131
|
+
BOOST_UBLAS_INLINE static
|
|
132
|
+
typename V::size_type index (const typename V::iterator &i) {
|
|
133
|
+
return i.index ();
|
|
134
|
+
}
|
|
135
|
+
template <class M>
|
|
136
|
+
BOOST_UBLAS_INLINE static
|
|
137
|
+
typename M::size_type index (const typename M::iterator1 &i) {
|
|
138
|
+
return i.index1 ();
|
|
139
|
+
}
|
|
140
|
+
template <class M>
|
|
141
|
+
BOOST_UBLAS_INLINE static
|
|
142
|
+
typename M::size_type index (const typename M::iterator2 &i) {
|
|
143
|
+
return i.index1 ();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
template<>
|
|
147
|
+
struct dimension_properties<2> {
|
|
148
|
+
template <class E>
|
|
149
|
+
BOOST_UBLAS_INLINE static
|
|
150
|
+
typename E::size_type size (const vector_expression<E> &) {
|
|
151
|
+
return 1;
|
|
152
|
+
}
|
|
153
|
+
template <class E>
|
|
154
|
+
BOOST_UBLAS_INLINE static
|
|
155
|
+
typename E::size_type size (const matrix_expression<E> &e) {
|
|
156
|
+
return e ().size2 ();
|
|
157
|
+
}
|
|
158
|
+
template <class V>
|
|
159
|
+
BOOST_UBLAS_INLINE static
|
|
160
|
+
typename V::size_type index (const typename V::iterator &) {
|
|
161
|
+
return 1;
|
|
162
|
+
}
|
|
163
|
+
template <class M>
|
|
164
|
+
BOOST_UBLAS_INLINE static
|
|
165
|
+
typename M::size_type index (const typename M::iterator1 &i) {
|
|
166
|
+
return i.index2 ();
|
|
167
|
+
}
|
|
168
|
+
template <class M>
|
|
169
|
+
BOOST_UBLAS_INLINE static
|
|
170
|
+
typename M::size_type index (const typename M::iterator2 &i) {
|
|
171
|
+
return i.index2 ();
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
template<unsigned dimension, class E>
|
|
176
|
+
BOOST_UBLAS_INLINE
|
|
177
|
+
typename E::size_type size (const E& e) {
|
|
178
|
+
return dimension_properties<dimension>::size (e);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
template<unsigned dimension, class I>
|
|
182
|
+
BOOST_UBLAS_INLINE
|
|
183
|
+
typename I::container_type::size_type
|
|
184
|
+
index (const I& i) {
|
|
185
|
+
typedef typename I::container_type container_type;
|
|
186
|
+
return dimension_properties<dimension>::template index<container_type> (i);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
// Named accessors - just syntactic sugar
|
|
191
|
+
template<class V>
|
|
192
|
+
typename V::size_type num_elements (const V &v) {
|
|
193
|
+
return v.size ();
|
|
194
|
+
}
|
|
195
|
+
template<class M>
|
|
196
|
+
typename M::size_type num_rows (const M &m) {
|
|
197
|
+
return m.size1 ();
|
|
198
|
+
}
|
|
199
|
+
template<class M>
|
|
200
|
+
typename M::size_type num_columns (const M &m) {
|
|
201
|
+
return m.size2 ();
|
|
202
|
+
}
|
|
203
|
+
template<class MV>
|
|
204
|
+
typename MV::size_type num_non_zeros (const MV &mv) {
|
|
205
|
+
return mv.non_zeros ();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
}}}
|
|
211
|
+
|
|
212
|
+
#endif
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright (c) 2000-2004
|
|
3
|
+
// Joerg Walter, Mathias Koch
|
|
4
|
+
//
|
|
5
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
|
6
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
8
|
+
//
|
|
9
|
+
// The authors gratefully acknowledge the support of
|
|
10
|
+
// GeNeSys mbH & Co. KG in producing this work.
|
|
11
|
+
//
|
|
12
|
+
|
|
13
|
+
// this file should not contain any code, but the documentation
|
|
14
|
+
// global to all files
|
|
15
|
+
|
|
16
|
+
/** \namespace boost::numeric::ublas
|
|
17
|
+
\brief contains all important classes and functions of uBLAS
|
|
18
|
+
|
|
19
|
+
all ublas definitions ...
|
|
20
|
+
\todo expand this section
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/** \defgroup blas1 Level 1 BLAS
|
|
24
|
+
\brief level 1 basic linear algebra subroutines
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/** \defgroup blas2 Level 2 BLAS
|
|
28
|
+
\brief level 2 basic linear algebra subroutines
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/** \defgroup blas3 Level 3 BLAS
|
|
32
|
+
\brief level 3 basic linear algebra subroutines
|
|
33
|
+
*/
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright (c) 2000-2002
|
|
3
|
+
// Joerg Walter, Mathias Koch
|
|
4
|
+
//
|
|
5
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
|
6
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
|
8
|
+
//
|
|
9
|
+
// The authors gratefully acknowledge the support of
|
|
10
|
+
// GeNeSys mbH & Co. KG in producing this work.
|
|
11
|
+
//
|
|
12
|
+
|
|
13
|
+
#ifndef _BOOST_UBLAS_DUFF_
|
|
14
|
+
#define _BOOST_UBLAS_DUFF_
|
|
15
|
+
|
|
16
|
+
#define DD_SWITCH(n, d, r, expr) \
|
|
17
|
+
{ \
|
|
18
|
+
unsigned r = ((n) + (d) - 1) / (d); \
|
|
19
|
+
switch ((n) % (d)) { \
|
|
20
|
+
case 0: do { expr;
|
|
21
|
+
#define DD_CASE_I(i, expr) \
|
|
22
|
+
case (i): expr;
|
|
23
|
+
#define DD_WHILE(r) \
|
|
24
|
+
} while (-- (r) > 0); \
|
|
25
|
+
} \
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
#define DD_1T(n, d, r, expr) \
|
|
29
|
+
DD_WHILE(r)
|
|
30
|
+
#define DD_2T(n, d, r, expr) \
|
|
31
|
+
DD_CASE_I(1, expr) \
|
|
32
|
+
DD_1T(n, d, r, expr)
|
|
33
|
+
#define DD_3T(n, d, r, expr) \
|
|
34
|
+
DD_CASE_I(2, expr) \
|
|
35
|
+
DD_2T(n, d, r, expr)
|
|
36
|
+
#define DD_4T(n, d, r, expr) \
|
|
37
|
+
DD_CASE_I(3, expr) \
|
|
38
|
+
DD_3T(n, d, r, expr)
|
|
39
|
+
#define DD_5T(n, d, r, expr) \
|
|
40
|
+
DD_CASE_I(4, expr) \
|
|
41
|
+
DD_4T(n, d, r, expr)
|
|
42
|
+
#define DD_6T(n, d, r, expr) \
|
|
43
|
+
DD_CASE_I(5, expr) \
|
|
44
|
+
DD_5T(n, d, r, expr)
|
|
45
|
+
#define DD_7T(n, d, r, expr) \
|
|
46
|
+
DD_CASE_I(6, expr) \
|
|
47
|
+
DD_6T(n, d, r, expr)
|
|
48
|
+
#define DD_8T(n, d, r, expr) \
|
|
49
|
+
DD_CASE_I(7, expr) \
|
|
50
|
+
DD_7T(n, d, r, expr)
|
|
51
|
+
|
|
52
|
+
#define DD(n, d, r, expr) \
|
|
53
|
+
DD_SWITCH(n, d, r, expr) \
|
|
54
|
+
DD_##d##T(n, d, r, expr)
|
|
55
|
+
|
|
56
|
+
#endif
|