Advertisement
levartolona

matr_pow

Jan 11th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.95 KB | None | 0 0
  1. matr_t matrix_cpy(matr_t matrix, int row, int col)
  2. {
  3.     matr_t matrix_b = malloc(sizeof(matr_t));
  4.     for(int i = 0; i < row; i++)
  5.     {
  6.         *(matrix_b + i) = malloc(sizeof(arr_t) * col);
  7.     }
  8.  
  9.     for(int i = 0; i < row; i++)
  10.         for(int j = 0; j < col; j++)
  11.         {
  12.             *(*(matrix_b + i) + j) = *(*(matrix + i) + j);
  13.         }
  14.  
  15.     return matrix_b;
  16. }
  17.  
  18. matr_t matr_pow(matr_t matrix, int degree, int row, int col)
  19. {
  20.     matr_t matrix_b = matrix_cpy(matrix, row, col);
  21.  
  22.     for(int k = 1; k < degree; k++)
  23.     {
  24.         for (int i = 0; i < row; i++)
  25.         {
  26.             arr_t arr_tmp = calloc(col, sizeof(int));
  27.             for (int j = 0; j < col; j++)
  28.                 for (int q = 0; q < col; q++)
  29.                     arr_tmp[j] += matrix[i][q] * matrix_b[q][j];
  30.  
  31.             free(*(matrix + i));
  32.             *(matrix + i) = arr_tmp;
  33.         }
  34.     }
  35.     matrix_delete(matrix_b, row, col);
  36.  
  37.     return matrix;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement