Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- void printMatrix
- (int m , int n, double (matrix)[n]) // matrix burda Variable Length Array
- {
- int i = 0;
- int j = 0;
- for(i;i<m;i++){
- j=0;
- for(j;j<n;j++){
- printf("%lf ", matrix[i + m*j]);
- }
- printf("\n");
- }
- }
- void matrixMultiply
- (int m, int n, int p, double (A)[n], double (B)[p], double (C)[p])
- {
- int i, j, k = 0;
- for(i;i<m;i++){ // A'nin her satirindaki
- j=0;
- for(j;j<p;j++){ // B'nin her sutun icin
- k=0;
- for(k;k<n;k++){ // butun elemanlari
- C[i*p + j] += A[i*n+k]*B[k*n+j];
- }
- }
- }
- }
- int main(int argc, char** argv){
- int m = 2; int n = 2; int p = 2;
- // Matrislerin boyutlari
- double A[m][n], B[n][p], C[m][p]; // C=AxB+C
- printf("Toplam %d double kadar yer aldik\n", m*n+n*p+m*p);
- srand(12345); // Random seed
- double maxr=RAND_MAX; // Max Random
- int i,j;
- for (i = 0; i < m; i++)
- for (j = 0; j < n; j++)
- A[i][j] = rand()/maxr;
- // rand()/maxr 0 ile 1 arasinda sayi dondurur.
- for (i = 0; i < n; i++)
- for (j = 0; j < p; j++)
- B[i][j] = rand()/maxr;
- double alpha = 1.; // Alpha parametresi
- double beta = 0.; // Beta parametresi
- double start;
- start = clock();
- matrixMultiply(m, n, p, *A, *B, *C);
- double finish = clock();
- printf("C(%d,%d) = A(%d,%d) B(%d,%d) icin gecen sure %f saniye\n",\
- m, p, m, n, n, p, (finish - start)/CLOCKS_PER_SEC);
- printMatrix(m, n, *A);
- printMatrix(n, p, *B);
- printMatrix(m, p, *C);
- return 0;
- }
Add Comment
Please, Sign In to add comment