bool IsEqual(const matrix &m1, const matrix &m2) { if ((m1.Rows() != m2.Rows()) || (m1.Cols() != m2.Cols())) return false; for (int i = 0; i < m1.Rows(); i++) { for (int j = 0; j < m1.Cols(); j++) { if (!IsEqual(m1(i, j), m2(i, j))) return false; } } return true; }
matrix::matrix(const matrix &m1) { m = NULL; mFloat = NULL; Resize(m1.Rows(), m1.Cols(), false); memcpy(m, m1.m, rows * cols * sizeof(float)); }
bool IsZero(const matrix &m) { for (int i = 0; i < m.Rows(); i++) { for (int j = 0; j < m.Cols(); j++) { if (!IsZero(m(i, j))) return false; } } return true; }
bool IsIdentity(const matrix &m) { for (int i = 0; i < m.Rows(); i++) { for (int j = 0; j < m.Cols(); j++) { if (i == j) { if (!IsEqual(m(i, j), 1.0f)) return false; } else { if (!IsZero(m(i, j))) return false; } } } return true; }