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