diff options
Diffstat (limited to 'boost/numeric/odeint/external/vexcl/vexcl_abs.hpp')
-rw-r--r-- | boost/numeric/odeint/external/vexcl/vexcl_abs.hpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp b/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp new file mode 100644 index 0000000000..c5e5c73329 --- /dev/null +++ b/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp @@ -0,0 +1,61 @@ +/* + [auto_generated] + boost/numeric/odeint/external/vexcl/vexcl_abs.hpp + + [begin_description] + abs() specialization for vexcl + [end_description] + + Copyright 2009-2013 Karsten Ahnert + Copyright 2009-2013 Mario Mulansky + + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or + copy at http://www.boost.org/LICENSE_1_0.txt) +*/ + + +#ifndef BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED +#define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED + +#include <vexcl/vector.hpp> +#include <vexcl/multivector.hpp> +#include <vexcl/operations.hpp> + +namespace vex { + +template <typename T, size_t N> +typename std::enable_if< + std::is_integral<T>::value, + typename boost::proto::result_of::make_expr< + boost::proto::tag::function, + abs_func, + const vex::multivector<T, N>& + >::type const +>::type +abs(const multivector<T, N> &arg) { + return boost::proto::make_expr<boost::proto::tag::function>( + abs_func(), + boost::ref(arg) + ); +} + +template <typename T, size_t N> +typename std::enable_if< + !std::is_integral<T>::value, + typename boost::proto::result_of::make_expr< + boost::proto::tag::function, + fabs_func, + const vex::multivector<T, N>& + >::type const +>::type +abs(const multivector<T, N> &arg) { + return boost::proto::make_expr<boost::proto::tag::function>( + fabs_func(), + boost::ref(arg) + ); +} + +} // namespace vex + +#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED |