Commit 07c4df4e authored by Davis King's avatar Davis King

Fixed set_colm() and set_rowm() not being assignable from some matrix

expressions.
parent c4f48a16
......@@ -410,6 +410,18 @@ namespace dlib
template <typename T, long NR, long NC, typename MM>
int get_ld (const assignable_sub_matrix<T,NR,NC,MM,column_major_layout>& m) { return m.m.nr(); }
template <typename T, long NR, long NC, typename MM>
int get_ld (const assignable_col_matrix<T,NR,NC,MM,row_major_layout>& m) { return m.m.nc(); }
template <typename T, long NR, long NC, typename MM>
int get_ld (const assignable_col_matrix<T,NR,NC,MM,column_major_layout>& m) { return m.m.nr(); }
template <typename T, long NR, long NC, typename MM>
int get_ld (const assignable_row_matrix<T,NR,NC,MM,row_major_layout>& m) { return m.m.nc(); }
template <typename T, long NR, long NC, typename MM>
int get_ld (const assignable_row_matrix<T,NR,NC,MM,column_major_layout>& m) { return m.m.nr(); }
template <typename T>
int get_ld (const assignable_ptr_matrix<T>& m) { return m.nc(); }
......
......@@ -1451,6 +1451,45 @@ namespace
}
{
matrix<double,3,3,default_memory_manager,column_major_layout> a(3,3);
matrix<double,3,3,default_memory_manager,column_major_layout> m = randm(3,3);
matrix<double,3,1,default_memory_manager,column_major_layout> b = randm(3,1);
a = 0;
set_colm(a,0) = m*b;
DLIB_TEST(colm(a,0) == m*b);
a = 0;
set_rowm(a,0) = trans(m*b);
DLIB_TEST(rowm(a,0) == trans(m*b));
DLIB_TEST(rowm(a,0) != m*b);
}
{
matrix<double,0,0,default_memory_manager,column_major_layout> a(3,3);
matrix<double,0,0,default_memory_manager,column_major_layout> m = randm(3,3);
matrix<double,0,0,default_memory_manager,column_major_layout> b = randm(3,1);
a = 0;
set_colm(a,0) = m*b;
DLIB_TEST(colm(a,0) == m*b);
a = 0;
set_rowm(a,0) = trans(m*b);
DLIB_TEST(rowm(a,0) == trans(m*b));
DLIB_TEST(rowm(a,0) != m*b);
}
{
matrix<double> a(3,3);
matrix<double> m = randm(3,3);
matrix<double> b = randm(3,1);
a = 0;
set_colm(a,0) = m*b;
DLIB_TEST(colm(a,0) == m*b);
a = 0;
set_rowm(a,0) = trans(m*b);
DLIB_TEST(rowm(a,0) == trans(m*b));
DLIB_TEST(rowm(a,0) != m*b);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment