mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Added support for argmax/argmin
This commit is contained in:
@@ -31,6 +31,60 @@ template <> struct max_n_1<0> {
|
||||
static const size_t size = 1;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#if defined(EIGEN_HAS_CONSTEXPR)
|
||||
#define EIGEN_CONSTEXPR constexpr
|
||||
#else
|
||||
#define EIGEN_CONSTEXPR
|
||||
#endif
|
||||
|
||||
// Tuple mimics std::pair but works on e.g. nvcc.
|
||||
template <typename U, typename V> struct Tuple {
|
||||
public:
|
||||
U first;
|
||||
V second;
|
||||
|
||||
typedef U first_type;
|
||||
typedef V second_type;
|
||||
|
||||
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||
Tuple() : first(), second() {}
|
||||
|
||||
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||
Tuple(const U& f, const V& s) : first(f), second(s) {}
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||
Tuple& operator= (const Tuple& rhs) {
|
||||
if (&rhs == this) return *this;
|
||||
first = rhs.first;
|
||||
second = rhs.second;
|
||||
return *this;
|
||||
}
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||
void swap(Tuple& rhs) {
|
||||
using numext::swap;
|
||||
swap(first, rhs.first);
|
||||
swap(second, rhs.second);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename U, typename V>
|
||||
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||
bool operator==(const Tuple<U, V>& x, const Tuple<U, V>& y) {
|
||||
return (x.first == y.first && x.second == y.second);
|
||||
}
|
||||
|
||||
template <typename U, typename V>
|
||||
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||
bool operator!=(const Tuple<U, V>& x, const Tuple<U, V>& y) {
|
||||
return !(x == y);
|
||||
}
|
||||
|
||||
#undef EIGEN_CONSTEXPR
|
||||
|
||||
} // namespace Eigen
|
||||
|
||||
#endif // EIGEN_CXX11_TENSOR_TENSOR_META_H
|
||||
|
||||
Reference in New Issue
Block a user