21 matrix_t A[10][5] = { { 0.8147, 0.1576, 0.6557, 0.7060, 0.4387 },
22 { 0.9058, 0.9706, 0.0357, 0.0318, 0.3816 },
23 { 0.1270, 0.9572, 0.8491, 0.2769, 0.7655 },
24 { 0.9134, 0.4854, 0.9340, 0.0462, 0.7952 },
25 { 0.6324, 0.8003, 0.6787, 0.0971, 0.1869 },
26 { 0.0975, 0.1419, 0.7577, 0.8235, 0.4898 },
27 { 0.2785, 0.4218, 0.7431, 0.6948, 0.4456 },
28 { 0.5469, 0.9157, 0.3922, 0.3171, 0.6463 },
29 { 0.9575, 0.7922, 0.6555, 0.9502, 0.7094 },
30 { 0.9649, 0.9595, 0.1712, 0.0344, 0.7547 } };
32 matrix_t copy_A[10][5] = { { 0.8147, 0.1576, 0.6557, 0.7060, 0.4387 },
33 { 0.9058, 0.9706, 0.0357, 0.0318, 0.3816 },
34 { 0.1270, 0.9572, 0.8491, 0.2769, 0.7655 },
35 { 0.9134, 0.4854, 0.9340, 0.0462, 0.7952 },
36 { 0.6324, 0.8003, 0.6787, 0.0971, 0.1869 },
37 { 0.0975, 0.1419, 0.7577, 0.8235, 0.4898 },
38 { 0.2785, 0.4218, 0.7431, 0.6948, 0.4456 },
39 { 0.5469, 0.9157, 0.3922, 0.3171, 0.6463 },
40 { 0.9575, 0.7922, 0.6555, 0.9502, 0.7094 },
41 { 0.9649, 0.9595, 0.1712, 0.0344, 0.7547 } };
43 matrix_t B[5][10] = { { 0.2760, 0.4984, 0.7513, 0.9593, 0.8407, 0.3500, 0.3517, 0.2858, 0.0759, 0.1299 },
44 { 0.6797, 0.9597, 0.2551, 0.5472, 0.2543, 0.1966, 0.8308, 0.7572, 0.0540, 0.5688 },
45 { 0.6551, 0.3404, 0.5060, 0.1386, 0.8143, 0.2511, 0.5853, 0.7537, 0.5308, 0.4694 },
46 { 0.1626, 0.5853, 0.6991, 0.1493, 0.2435, 0.6160, 0.5497, 0.3804, 0.7792, 0.0119 },
47 { 0.1190, 0.2238, 0.8909, 0.2575, 0.9293, 0.4733, 0.9172, 0.5678, 0.9340, 0.3371 } };
49 matrix_t b[10] = { 1.2902, 0.8819, 0.9721, 1.2347, 0.9185, 0.9844, 1.0627, 1.0280, 1.7283, 1.0618 };
51 void ieee_mobile_comp_test_matrix_mul(
void)
53 puts(
"########### Measures of the times of matrices multiplications ###########");
56 for (uint8_t i = 0; i < ROW_MAX; i++) {
58 matrix_part_mul(COL_MAX, A, ROW_MAX, B, 0, i, 0, COL_MAX - 1, 0, COL_MAX - 1, 0, ROW_MAX - 1, ROW_MAX, C);
61 printf(
"C_%u = ", i + 1);
67 void ieee_solve_lin_equ_sys(
void)
70 puts(
"Square sub-matrices:");
72 for (uint8_t i = 1; i < COL_MAX; i++) {
76 printf(
"(%u,%u) matrix: ", i + 1, i + 1);
80 puts(
"Moore Penrose: ");
85 int8_t error_no =
solve(i + 1, i + 1, sub_A, b, x, algo);
98 printf(
"residual = %e\n", resid);
106 error_no =
solve(i + 1, i + 1, sub_A, b, x, algo);
119 printf(
"residual = %e\n", resid);
123 puts(
"Householder: ");
127 error_no =
solve(i + 1, i + 1, sub_A, b, x, algo);
140 printf(
"residual = %e\n", resid);
148 error_no =
solve(i + 1, i + 1, sub_A, b, x, algo);
161 printf(
"residual = %e\n", resid);
164 puts(
"Rectangular sub-matrices:");
165 for (uint8_t i = COL_MAX; i < ROW_MAX; i++) {
168 i + 1, COL_MAX, sub_A);
169 printf(
"(%u,%u) matrix: ", i + 1, COL_MAX);
174 puts(
"Moore Penrose: ");
179 int8_t error_no =
solve(i + 1, COL_MAX, sub_A, b, x, algo);
191 i + 1, COL_MAX, sub_A);
193 error_no =
solve(i + 1, COL_MAX, sub_A, b, x, algo);
203 puts(
"Householder: ");
205 i + 1, COL_MAX, sub_A);
207 error_no =
solve(i + 1, COL_MAX, sub_A, b, x, algo);
217 void ieee_mobile_comp_test_qr_givens(
void)
219 for (uint8_t i = 4; i < ROW_MAX; i++) {
231 printf(
"Decomposition of A_%d_5\n", i + 1);
248 void ieee_mobile_comp_test_qr_householder(
void)
250 for (uint8_t i = 4; i < ROW_MAX; i++) {
262 printf(
"Decomposition of A_%d_5\n", i + 1);
276 void ieee_mobile_comp_test_SVD(
void)
299 for (uint8_t i = 4; i < ROW_MAX; i++) {