12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- [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
|