12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #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)
- );
- }
- }
- #endif
|