always use stable sort for sorting indices
This commit is contained in:
@@ -26,7 +26,7 @@ class op_sort_index
|
||||
{
|
||||
public:
|
||||
|
||||
template<bool use_stable_sort, typename T1>
|
||||
template<typename T1>
|
||||
static inline bool apply_helper(Mat<uword>& out, const Proxy<T1>& P, const uword sort_mode);
|
||||
|
||||
template<typename T1>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
|
||||
|
||||
template<bool use_stable_sort, typename T1>
|
||||
template<typename T1>
|
||||
inline
|
||||
bool
|
||||
op_sort_index::apply_helper(Mat<uword>& out, const Proxy<T1>& P, const uword sort_mode)
|
||||
@@ -76,27 +76,13 @@ op_sort_index::apply_helper(Mat<uword>& out, const Proxy<T1>& P, const uword sor
|
||||
{
|
||||
arma_sort_index_mangle_ascend_comparator<eT> comparator;
|
||||
|
||||
if(use_stable_sort)
|
||||
{
|
||||
std::stable_sort( packet_vec.begin(), packet_vec.end(), comparator );
|
||||
}
|
||||
else
|
||||
{
|
||||
std::sort( packet_vec.begin(), packet_vec.end(), comparator );
|
||||
}
|
||||
std::stable_sort( packet_vec.begin(), packet_vec.end(), comparator );
|
||||
}
|
||||
else
|
||||
{
|
||||
arma_sort_index_mangle_descend_comparator<eT> comparator;
|
||||
|
||||
if(use_stable_sort)
|
||||
{
|
||||
std::stable_sort( packet_vec.begin(), packet_vec.end(), comparator );
|
||||
}
|
||||
else
|
||||
{
|
||||
std::sort( packet_vec.begin(), packet_vec.end(), comparator );
|
||||
}
|
||||
std::stable_sort( packet_vec.begin(), packet_vec.end(), comparator );
|
||||
}
|
||||
|
||||
uword* out_mem = out.memptr();
|
||||
@@ -130,13 +116,13 @@ op_sort_index::apply(Mat<uword>& out, const mtOp<uword,T1,op_sort_index>& in)
|
||||
{
|
||||
Mat<uword> tmp;
|
||||
|
||||
all_non_nan = op_sort_index::apply_helper<true>(tmp, P, sort_mode);
|
||||
all_non_nan = op_sort_index::apply_helper(tmp, P, sort_mode);
|
||||
|
||||
out.steal_mem(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
all_non_nan = op_sort_index::apply_helper<true>(out, P, sort_mode);
|
||||
all_non_nan = op_sort_index::apply_helper(out, P, sort_mode);
|
||||
}
|
||||
|
||||
if(all_non_nan == false) { out.soft_reset(); }
|
||||
|
||||
@@ -88,7 +88,7 @@ op_sort::apply_noalias(Mat<eT>& out, const Mat<eT>& X, const uword sort_mode, co
|
||||
|
||||
const Proxy< Col<eT> > P(X_col);
|
||||
|
||||
const bool all_non_nan = op_sort_index::apply_helper<false>(indices, P, sort_mode);
|
||||
const bool all_non_nan = op_sort_index::apply_helper(indices, P, sort_mode);
|
||||
|
||||
if(all_non_nan == false)
|
||||
{
|
||||
@@ -128,7 +128,7 @@ op_sort::apply_noalias(Mat<eT>& out, const Mat<eT>& X, const uword sort_mode, co
|
||||
|
||||
const Proxy< Col<eT> > P(Y_col);
|
||||
|
||||
const bool all_non_nan = op_sort_index::apply_helper<false>(indices, P, sort_mode);
|
||||
const bool all_non_nan = op_sort_index::apply_helper(indices, P, sort_mode);
|
||||
|
||||
if(all_non_nan == false)
|
||||
{
|
||||
@@ -260,7 +260,7 @@ op_sort_vec::apply(Mat<typename T1::elem_type>& out, const Op<T1,op_sort_vec>& i
|
||||
|
||||
const Proxy< Mat<eT> > P(X);
|
||||
|
||||
const bool all_non_nan = op_sort_index::apply_helper<false>(indices, P, sort_mode);
|
||||
const bool all_non_nan = op_sort_index::apply_helper(indices, P, sort_mode);
|
||||
|
||||
if(all_non_nan == false)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user