123 template <
typename _Xp,
typename _Yp>
124 bool operator()(_Xp &&__x, _Yp &&__y)
const
126 if constexpr (both_types_are_same<
127 dpnp_remove_cvref_t<_Xp>, dpnp_remove_cvref_t<_Yp>,
128 std::complex<float>, std::complex<double>>)
131 _Xp a = std::forward<_Xp>(__x);
132 _Yp b = std::forward<_Yp>(__y);
134 if (a.real() < b.real()) {
135 ret = (a.imag() == a.imag() || b.imag() != b.imag());
137 else if (a.real() > b.real()) {
138 ret = (b.imag() != b.imag() && a.imag() == a.imag());
140 else if (a.real() == b.real() ||
141 (a.real() != a.real() && b.real() != b.real())) {
142 ret = (a.imag() < b.imag() ||
143 (b.imag() != b.imag() && a.imag() == a.imag()));
146 ret = (b.real() != b.real());
151 return std::forward<_Xp>(__x) < std::forward<_Yp>(__y);