Publishing R3
[platform/upstream/dldt.git] / inference-engine / thirdparty / clDNN / common / boost / 1.64.0 / include / boost-1_64 / boost / numeric / odeint / external / vexcl / vexcl_abs.hpp
1 /*
2   [auto_generated]
3   boost/numeric/odeint/external/vexcl/vexcl_abs.hpp
4
5   [begin_description]
6   abs() specialization for vexcl
7   [end_description]
8
9   Copyright 2009-2013 Karsten Ahnert
10   Copyright 2009-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_VEXCL_VEXCL_ABS_HPP_DEFINED
19 #define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED
20
21 #include <vexcl/vector.hpp>
22 #include <vexcl/multivector.hpp>
23 #include <vexcl/operations.hpp>
24
25 namespace vex {
26
27 template <typename T, size_t N>
28 typename std::enable_if<
29     std::is_integral<T>::value,
30     typename boost::proto::result_of::make_expr<
31         boost::proto::tag::function,
32         abs_func,
33         const vex::multivector<T, N>&
34     >::type const
35 >::type
36 abs(const multivector<T, N> &arg) {
37     return boost::proto::make_expr<boost::proto::tag::function>(
38             abs_func(),
39             boost::ref(arg)
40             );
41 }
42
43 template <typename T, size_t N>
44 typename std::enable_if<
45     !std::is_integral<T>::value,
46     typename boost::proto::result_of::make_expr<
47         boost::proto::tag::function,
48         fabs_func,
49         const vex::multivector<T, N>&
50     >::type const
51 >::type
52 abs(const multivector<T, N> &arg) {
53     return boost::proto::make_expr<boost::proto::tag::function>(
54             fabs_func(),
55             boost::ref(arg)
56             );
57 }
58
59 } // namespace vex
60
61 #endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_ABS_HPP_DEFINED