#include "Test.h"
class MatrixTestCase : public Test
{
bool TestMatrixMultiplication() {
double v = 2.0;
auto D = A * v;
for(size_t i = 0; i < D.rows(); ++i) {
for(size_t j = 0; j < D.columns(); ++j) { assert(D(i, j) == 2.0); }
}
D = A;
D *= v;
for(size_t i = 0; i < D.rows(); ++i) {
for(size_t j = 0; j < D.columns(); ++j) { assert(D(i, j) == 2.0); }
}
C* C2;
C3 = C * C2;
for(
size_t i = 0; i < C3.
rows(); ++i) {
for(
size_t j = 0; j < C3.
columns(); ++j) { assert(C3(i, j) == 4.0); }
}
auto E = A * B;
assert(E.columns() == 3);
assert(E.rows() == 3);
for(size_t i = 0; i < E.rows(); ++i) {
for(size_t j = 0; j < E.columns(); ++j) { assert(E(i, j) == 4); }
}
auto resVec = vec *
vec2;
assert(resVec.rows() == 10);
assert(resVec.columns() == 10);
auto resVec2 =
vec2 * vec;
assert(resVec2.rows() == 1);
assert(resVec2.columns() == 1);
assert(resA == vec2b);
assert(resB == mat2B);
return true;
}
bool TestMatrixDivision() {
AssertEqual(1.0 / A, B);
AssertEqual(A / 2, C);
AssertEqual(1 / A, B);
AssertEqual(A / 2.0f, C);
return true;
}
return true;
}
return true;
}
Matrix<double> C2({ { 0, 5, 0, 10 }, { 6, 7, 12, 14 }, { 0, 15, 0, 20 }, { 18, 21, 24, 28 } });
{ { 7, 8, 14, 16 }, { 9, 0, 18, 0 }, { 21, 24, 28, 32 }, { 27, 0, 36, 0 }, { 35, 40, 42, 48 }, { 45, 0, 54, 0 } });
return true;
}
return true;
}
return true;
}
Matrix<double> D({ { 9, 5, 2, 5 }, { 9, 5, 3, 7 }, { 6, 5, 4, 8 }, { 1, 5, 3, 7 } });
return true;
}
return true;
}
Matrix<double> m2({ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } });
for(
size_t i = 0;
i < 2;
i++) {
}
for(
size_t i = 0;
i < 2;
i++) {
}
return true;
}
std::function<
bool(
double)>
cond = [](
double i) {
return bool(
i == 1); };
auto B =
where(
cond,
A, { { 1, 1 }, { 1, 1 }, { 1, 1 } }, { { 0, 0 }, { 0, 0 }, { 0, 0 } });
return true;
}
return true;
}
return true;
}
return true;
}
return true;
}
return true;
}
float in[4] = { 1, 2, 3, 4 };
return true;
}
return true;
}
return true;
}
return true;
}
return true;
}
return true;
}
Matrix<double> A = { { 0., 1. }, { 0., 2. }, { 1., 1. }, { 1., 0. }, { 0., 1. } };
return true;
}
public:
}
};
return 0;
}
constexpr Matrix< T > Transpose() const
Definition Matrix.h:256
Matrix & HadamardMulti(const Matrix &other)
Definition Matrix.h:389
size_t rows() const
Definition Matrix.h:193
T Determinant() const
Definition Matrix.h:216
size_t columns() const
Definition Matrix.h:198
Matrix GetSlice(size_t rowStart) const
Definition Matrix.h:609
void assertSize(const Matrix< T > &other) const
Definition Matrix.h:334
void Resize(size_t rows, size_t cols, size_t elementSize=1)
Definition Matrix.h:585
Matrix()
Definition Matrix.h:69
Matrix< T > & KroneckerMulti(const Matrix< T > &other)
Definition Matrix.h:400
Matrix< T > GetComponents(const size_t &index) const
Definition Matrix.h:670
Matrix< T > Apply(const std::function< T(T)> &fun) const
Definition Matrix.h:375
static Matrix Random(size_t rows, size_t columns, size_t element_size=1, double minValue=0.0, double maxValue=1.0)
Definition Matrix.h:158
int GetIndex(size_t row, size_t col, size_t elem=0) const
Definition Matrix.h:605
Matrix< T > HorizontalConcat(const Matrix< T > &other)
Definition Matrix.h:270
size_t Corr(const Matrix< T > &A, const Matrix< T > &B)
Definition matrix_utils.h:103
size_t argmin(const Matrix< T > &mat)
Definition matrix_utils.h:167
Matrix< T > mean(const Matrix< T > &mat, int axis=-1)
Definition matrix_utils.h:401
size_t argmax(const Matrix< T > &mat)
Definition matrix_utils.h:143
T elemMean(const Matrix< T > &mat, const size_t &elemIndex)
Definition matrix_utils.h:431
Matrix< double > eye(size_t rows, size_t columns)
Definition matrix_utils.h:492
Matrix< T > from_vptr(const T *value, MatrixDimension size)
Definition matrix_utils.h:122
T elemMax(const Matrix< T > &mat, const size_t &elemIndex)
Definition matrix_utils.h:358
Matrix< T > unique(const Matrix< T > &in, int axis=0)
Definition matrix_utils.h:466
Matrix< T > where(const std::function< bool(T)> &condition, const Matrix< T > &in, const Matrix< T > &valIfTrue, const Matrix< T > &valIfFalse)
Definition matrix_utils.h:194