Guest User

Untitled

a guest
May 26th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void printMatrix
  6. (int m , int n, double (matrix)[n]) // matrix burda Variable Length Array
  7. {
  8. int i = 0;
  9. int j = 0;
  10. for(i;i<m;i++){
  11. j=0;
  12. for(j;j<n;j++){
  13. printf("%lf ", matrix[i + m*j]);
  14. }
  15. printf("\n");
  16. }
  17. }
  18.  
  19. void matrixMultiply
  20. (int m, int n, int p, double (A)[n], double (B)[p], double (C)[p])
  21. {
  22. int i, j, k = 0;
  23. for(i;i<m;i++){ // A'nin her satirindaki
  24. j=0;
  25. for(j;j<p;j++){ // B'nin her sutun icin
  26. k=0;
  27. for(k;k<n;k++){ // butun elemanlari
  28. C[i*p + j] += A[i*n+k]*B[k*n+j];
  29. }
  30. }
  31. }
  32. }
  33.  
  34. int main(int argc, char** argv){
  35. int m = 2; int n = 2; int p = 2;
  36. // Matrislerin boyutlari
  37. double A[m][n], B[n][p], C[m][p]; // C=AxB+C
  38.  
  39. printf("Toplam %d double kadar yer aldik\n", m*n+n*p+m*p);
  40. srand(12345); // Random seed
  41. double maxr=RAND_MAX; // Max Random
  42. int i,j;
  43. for (i = 0; i < m; i++)
  44. for (j = 0; j < n; j++)
  45. A[i][j] = rand()/maxr;
  46. // rand()/maxr 0 ile 1 arasinda sayi dondurur.
  47. for (i = 0; i < n; i++)
  48. for (j = 0; j < p; j++)
  49. B[i][j] = rand()/maxr;
  50.  
  51. double alpha = 1.; // Alpha parametresi
  52. double beta = 0.; // Beta parametresi
  53. double start;
  54. start = clock();
  55. matrixMultiply(m, n, p, *A, *B, *C);
  56. double finish = clock();
  57. printf("C(%d,%d) = A(%d,%d) B(%d,%d) icin gecen sure %f saniye\n",\
  58. m, p, m, n, n, p, (finish - start)/CLOCKS_PER_SEC);
  59. printMatrix(m, n, *A);
  60. printMatrix(n, p, *B);
  61. printMatrix(m, p, *C);
  62.  
  63. return 0;
  64. }
Add Comment
Please, Sign In to add comment