MCPcopy Create free account
hub / github.com/AdvancedCompiler/AdvancedCompiler / matrixmulti

Function matrixmulti

code/Chapter2/2-6.c:9–40  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7int x[n][n],y[n][n],z[n][n];
8int a,b,i,j,k,r;
9void matrixmulti(int N, int x[n][n], int y[n][n], int z[n][n]){
10for (k = 0; k < N; k++) {
11 for (i = 0; i < N; i++) {
12 r = y[i][k];
13 for (j = 0; j < N-4; j+=4) {//内层循环展开四次
14 x[i][j] += r* z[k][j];
15 x[i][j+1] += r* z[k][j+1];
16 x[i][j+2] += r* z[k][j+2];
17x[i][j+3] += r* z[k][j+3];
18 }
19for(;j<N;j++)
20x[i][j] += r* z[k][j];
21 }
22 }
23int main(){
24 for (i = 0; i < n; i++)
25 {
26 for (j = 0; j < n; j++)
27 {
28 y[i][j] = rand() % 10;
29 z[i][j] = rand() % 10;
30 x[i][j] = 0;
31 }
32 }
33struct timeval starttime,endtime;
34 gettimeofday(&starttime,0);
35 matrixmulti(n, x, y, z);
36gettimeofday(&endtime,0);
37 doubletimeuse=(endtime.tv_sec-starttime.tv_sec)+(endtime.tv_usec-starttime.tv_usec)/1000000.0;
38 printf("run time = %f s\n", timeuse);
39return 0;
40}

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected