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>>) {
133 _Xp a = std::forward<_Xp>(__x);
134 _Yp b = std::forward<_Yp>(__y);
136 if (a.real() < b.real()) {
137 ret = (a.imag() == a.imag() || b.imag() != b.imag());
139 else if (a.real() > b.real()) {
140 ret = (b.imag() != b.imag() && a.imag() == a.imag());
142 else if (a.real() == b.real() ||
143 (a.real() != a.real() && b.real() != b.real())) {
144 ret = (a.imag() < b.imag() ||
145 (b.imag() != b.imag() && a.imag() == a.imag()));
148 ret = (b.real() != b.real());
153 return std::forward<_Xp>(__x) < std::forward<_Yp>(__y);