// This is core/vnl/vnl_rank.hxx #ifndef vnl_rank_hxx_ #define vnl_rank_hxx_ #include "vnl_rank.h" template vnl_matrix vnl_rank_row_reduce(vnl_matrix const& mat, vnl_rank_pivot_type t) { vnl_matrix a = mat; bool changed = true; unsigned int m = a.rows(), n=a.columns(); while (changed) { changed = false; for (unsigned int r=0; r vnl_matrix vnl_rank_column_reduce(vnl_matrix const& mat, vnl_rank_pivot_type t) { vnl_matrix a = mat; bool changed = true; unsigned int m = a.rows(), n=a.columns(); while (changed) { changed = false; for (unsigned int c=0; c vnl_matrix vnl_rank_row_column_reduce(vnl_matrix const& mat, vnl_rank_pivot_type t) { vnl_matrix a = mat; bool changed = true; unsigned int m = a.rows(), n=a.columns(); while (changed) { changed = false; for (unsigned int r=0; r unsigned int vnl_rank(vnl_matrix const& mat, vnl_rank_type t) { unsigned int rank = 0; if (t == vnl_rank_row) { vnl_matrix a = vnl_rank_row_reduce(mat, vnl_rank_pivot_all); for (unsigned int r=0; r a = (t == vnl_rank_column) ? vnl_rank_column_reduce(mat,vnl_rank_pivot_all) : vnl_rank_row_column_reduce(mat,vnl_rank_pivot_all); for (unsigned int c=0; c vnl_rank_row_reduce(vnl_matrix const&, vnl_rank_pivot_type);\ template VNL_EXPORT vnl_matrix vnl_rank_column_reduce(vnl_matrix const&, vnl_rank_pivot_type);\ template VNL_EXPORT vnl_matrix vnl_rank_row_column_reduce(vnl_matrix const&, vnl_rank_pivot_type);\ template VNL_EXPORT unsigned int vnl_rank(vnl_matrix const&, vnl_rank_type) #endif // vnl_rank_hxx_