33     puts(
"############ Basic Matrix Algebra ###############");
 
   38     matrix_t matrix1[3][4] = { { 0.2785, 0.9649, 0.9572, 0.1419 },
 
   39                                { 0.5469, 0.1576, 0.4854, 0.4218 },
 
   40                                { 0.9575, 0.9706, 0.8003, 0.9157 },
 
   43     matrix_t matrix2[3][4] = { { 0.7922, 0.0357, 0.6787, 0.3922 },
 
   44                                { 0.9595, 0.8491, 0.7577, 0.6555 },
 
   45                                { 0.6557, 0.9340, 0.7431, 0.1712 },
 
   50     matrix_t diag_vec[3] = { 1.1, 2.3, 3.5 };
 
   52     matrix_add(m, n, matrix1, matrix2, res_matrix);
 
   53     printf(
"matrix1 + matrix2 = ");
 
   56     matrix_sub(m, n, matrix1, matrix2, res_matrix);
 
   57     printf(
"matrix1 - matrix2 = ");
 
   61     printf(
"trans(matrix2) = ");
 
   64     matrix_mul(m, n, matrix1, n, m, trans_matrix, res_mul_matrix);
 
   65     printf(
"matrix1 x matrix2 = ");
 
   69     printf(
"dig_matrix = ");
 
   73     printf(
"dig_matrix = ");
 
   77         { 0.8147, 0.0975, 0.1576, 0.1419, 0.6557 },
 
   78         { 0.9058, 0.2785, 0.9706, 0.4218, 0.0357 },
 
   79         { 0.1270, 0.5469, 0.9572, 0.9157, 0.8491 },
 
   80         { 0.9595, 0.8491, 0.7577, 0.6555, 0.6787 },
 
   81         { 0.6557, 0.9340, 0.7431, 0.1712, 0.9595 },
 
   85     printf(
"swapped matrix3 = ");
 
   88     puts(
" *** Test Partial Matrix Multiplication *** ");
 
   91         { 0.8147, 0.9706, 0.8491, 0.0462, 0.1869, 0.4984, 0.5472 },
 
   92         { 0.9058, 0.9572, 0.9340, 0.0971, 0.4898, 0.9597, 0.1386 },
 
   93         { 0.1270, 0.4854, 0.6787, 0.8235, 0.4456, 0.3404, 0.1493 },
 
   94         { 0.9134, 0.8003, 0.7577, 0.6948, 0.6463, 0.5853, 0.2575 },
 
   95         { 0.6324, 0.1419, 0.7431, 0.3171, 0.7094, 0.2238, 0.8407 },
 
   96         { 0.0975, 0.4218, 0.3922, 0.9502, 0.7547, 0.7513, 0.2543 },
 
   97         { 0.2785, 0.9157, 0.6555, 0.0344, 0.2760, 0.2551, 0.8143 },
 
   98         { 0.5469, 0.7922, 0.1712, 0.4387, 0.6797, 0.5060, 0.2435 },
 
   99         { 0.9575, 0.9595, 0.7060, 0.3816, 0.6551, 0.6991, 0.9293 },
 
  100         { 0.9649, 0.6557, 0.0318, 0.7655, 0.1626, 0.8909, 0.3500 },
 
  101         { 0.1576, 0.0357, 0.2769, 0.7952, 0.1190, 0.9593, 0.1966 }
 
  105         { 0.2511, 0.9172, 0.0540, 0.0119, 0.6020 },
 
  106         { 0.6160, 0.2858, 0.5308, 0.3371, 0.2630 },
 
  107         { 0.4733, 0.7572, 0.7792, 0.1622, 0.6541 },
 
  108         { 0.3517, 0.7537, 0.9340, 0.7943, 0.6892 },
 
  109         { 0.8308, 0.3804, 0.1299, 0.3112, 0.7482 },
 
  110         { 0.5853, 0.5678, 0.5688, 0.5285, 0.4505 },
 
  111         { 0.5497, 0.0759, 0.4694, 0.1656, 0.0838 }
 
  115     uint8_t a_row_begin, a_row_end, a_col_begin, a_col_end;
 
  116     uint8_t b_row_begin, b_row_end, b_col_begin, b_col_end;
 
  122     a_row_begin = 3, a_row_end = 7;
 
  123     a_col_begin = 2, a_col_end = 4;
 
  124     b_row_begin = 3, b_row_end = 5;
 
  125     b_col_begin = 1, b_col_end = 3;
 
  127                     a_row_begin, a_row_end, a_col_begin, a_col_end,
 
  128                     b_row_begin, b_row_end, b_col_begin, b_col_end,
 
  141     puts(
" *** Test The 2-norm of a Matrix, *** ");
 
  144     printf(
"A_two_norm = %7.4f\n", two_norm);
 
  147         { -0.2743, -4.9913, 0.3375, -6.5684, -6.9048 },
 
  148         { -4.9657, -2.0716, -4.7133, -2.7536, -4.3030 },
 
  149         { -0.4857, -3.2137, -0.9424, -0.7667, -5.7025 },
 
  150         { -5.0518, -4.1867, -0.9702, 0.4721, -0.6457 },
 
  151         { 0.4341, -0.3534, -3.9564, -5.9608, -4.5103 },
 
  152         { -4.2001, -2.3179, -2.4574, -2.4494, -2.7717 },
 
  153         { -5.4272, -2.6022, -6.3932, -3.2449, -5.6748 }
 
  158     printf(
"D_two_norm = %7.4f\n", two_norm);
 
  161     printf(
"D_frob_norm = %7.4f\n", frob_norm);
 
  168         "*********** Test the Inverse of Upper Triangular Matrices ***********");
 
  171         { 0.8147, 0.9706, 0.8491, 0.0462, 0.1869, 0.4984, 0.5472 },
 
  172         { 0.0000, 0.9572, 0.9340, 0.0971, 0.4898, 0.9597, 0.1386 },
 
  173         { 0.0000, 0.0000, 0.6787, 0.8235, 0.4456, 0.3404, 0.1493 },
 
  174         { 0.0000, 0.0000, 0.0000, 0.6948, 0.6463, 0.5853, 0.2575 },
 
  175         { 0.0000, 0.0000, 0.0000, 0.0000, 0.7094, 0.2238, 0.8407 },
 
  176         { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.7513, 0.2543 },
 
  177         { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.8143 },
 
  178         { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 },
 
  179         { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 },
 
  180         { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 },
 
  181         { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 }
 
  185     puts(
"Square Matrix:");
 
  195     puts(
"Rectangular Matrix:");
 
  206         "*********** Test the Inverse of Lower Triangular Matrices ***********");
 
  209         { 0.8147, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 },
 
  210         { 0.9058, 0.9572, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 },
 
  211         { 0.1270, 0.4854, 0.6787, 0.0000, 0.0000, 0.0000, 0.0000 },
 
  212         { 0.9134, 0.8003, 0.7577, 0.6948, 0.0000, 0.0000, 0.0000 },
 
  213         { 0.6324, 0.1419, 0.7431, 0.3171, 0.7094, 0.0000, 0.0000 },
 
  214         { 0.0975, 0.4218, 0.3922, 0.9502, 0.7547, 0.7513, 0.0000 },
 
  215         { 0.2785, 0.9157, 0.6555, 0.0344, 0.2760, 0.2551, 0.8143 },
 
  216         { 0.5469, 0.7922, 0.1712, 0.4387, 0.6797, 0.5060, 0.2435 },
 
  217         { 0.9575, 0.9595, 0.7060, 0.3816, 0.6551, 0.6991, 0.9293 },
 
  218         { 0.9649, 0.6557, 0.0318, 0.7655, 0.1626, 0.8909, 0.3500 },
 
  219         { 0.1576, 0.0357, 0.2769, 0.7952, 0.1190, 0.9593, 0.1966 }
 
  223     puts(
"Square Matrix:");
 
  231     puts(
"Rectangular Matrix:");
 
  245         { 0.8147, 0.1576, 0.6557, 0.7060, 0.4387 },
 
  246         { 0.9058, 0.9706, 0.0357, 0.0318, 0.3816 },
 
  247         { 0.1270, 0.9572, 0.8491, 0.2769, 0.7655 },
 
  248         { 0.9134, 0.4854, 0.9340, 0.0462, 0.7952 },
 
  249         { 0.6324, 0.8003, 0.6787, 0.0971, 0.1869 },
 
  250         { 0.0975, 0.1419, 0.7577, 0.8235, 0.4898 },
 
  251         { 0.2785, 0.4218, 0.7431, 0.6948, 0.4456 },
 
  252         { 0.5469, 0.9157, 0.3922, 0.3171, 0.6463 },
 
  253         { 0.9575, 0.7922, 0.6555, 0.9502, 0.7094 },
 
  254         { 0.9649, 0.9595, 0.1712, 0.0344, 0.7547 }
 
  257     uint8_t m = 10, n = 5;
 
  265     puts(
"++++++++++ upper triangular ++++++++++");
 
  280     puts(
"++++++++++ lower triangular ++++++++++");