}
template <typename T>
-matrix<T> transpose(const matrix<T> m)
+matrix<T> tran(const matrix<T> m)
{
matrix<T> m1(m.m_cols, m.m_rows);
return m1;
}
+
+template <typename T>
+matrix<T> mul(const matrix<T> m1, const matrix<T> m2)
+{
+ assert(m2.m_cols == 1);
+ assert(m1.m_cols == m2.m_rows);
+
+ matrix<T> m3(m1.m_rows, 1);
+
+ for (int i = 0; i < m1.m_rows; i++)
+ {
+ m3.m_mat[i][0] = 0;
+ for (int k = 0; k < m2.m_rows; k++)
+ m3.m_mat[i][0] += m1.m_mat[i][k] * m2.m_mat[k][0];
+ }
+
+ return m3;
+}
+
#endif //_MATRIX_H
float arr3[3][3] = {{20.2, 40.5, 10.0}, {3.6, 52.0, 5.5}, {1.0, 45.5, 66.6}};
float arr4[3][3] = {{2.24, 0.5, 0.023}, {3.675, 5.32, 0.556}, {1.023, 45.75, 621.6}};
float arr8[3][3] = {{4.75, 0.65, 0.123}, {0.075, 5.302, 0.56}, {1.113, 0.475, 2.362}};
+ float arr9[3][3] = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
matrix<float> m1(2, 2, (float *) arr0);
matrix<float> m2(2, 2, (float *) arr1);
matrix<float> m20(1, 3, (float *) arr11);
matrix<float> m21(3, 1, (float *) arr12);
matrix<float> m22(2, 3, (float *) arr15);
+ matrix<float> m9(3, 3, (float *) arr9);
cout<< "Constructor Test\n";
cout<< "\n" << m6;
cout<< "\nProduct:\n" << m3 << endl;
cout<< "\n" << m20 << "\n" << m21;
cout<< "\nProduct:\n" << m7 << endl;
+ cout<< "\n" << m9 << "\n" << m21;
+ m21 = mul(m9, m21);
+ cout<< "\nProduct:\n" << m21 << endl;
cout<< "\n\n\nDivision\n";
m3 = m1 / (float)2.5;
cout<< "\n\n" << m12;
cout<< "\nResult:\n\n" << m6;
- m6 = transpose(m15);
+ m6 = tran(m15);
cout<< "\n\n\nTranspose:";
cout << "\n\n" << m15;
cout << "\nResult:\n\n" << m6;
template<typename T> friend T mul(const vector<T> v, const matrix<T> m);
template<typename T> friend void insert_end(vector<T>& v, T val);
template<typename T> friend matrix<T> transpose(const vector<T> v);
+ template <typename T> friend vector<T> transpose(const matrix<T> m);
template<typename T> friend vector<T> cross(const vector<T> v1,
const vector<T> v2);
template <typename T> friend T var(const vector<T> v);