Sort of functional implementation
This commit is contained in:
parent
a44e5fda1f
commit
2857ac72a5
25
trans.c
25
trans.c
@ -45,6 +45,31 @@ void diff_array(int M, int N, int A[N][M], int B[M][N], int x, int y)
|
||||
char transpose_submit_desc[] = "Transpose submission";
|
||||
void transpose_submit(int M, int N, int A[N][M], int B[M][N])
|
||||
{
|
||||
int blocksize = 8; //2^5/4
|
||||
int i, j, k, diag, diagX, diagY;
|
||||
for(i=0; i<M; i+=blocksize)
|
||||
{
|
||||
for(j=0; j<N; j++)
|
||||
{
|
||||
diag = 0;
|
||||
for(k=0; k<blocksize && (i+k < M); k++)
|
||||
{
|
||||
if (j*N + i + k != (i + k)*M + j)
|
||||
{
|
||||
B[i+k][j] = A[j][i+k];
|
||||
//diff_array(M, N, A, B, j, i+k);
|
||||
}
|
||||
else
|
||||
{
|
||||
diag = A[j][i+k];
|
||||
diagX = i+k;
|
||||
diagY = j;
|
||||
}
|
||||
}
|
||||
if(diag)
|
||||
B[diagX][diagY] = diag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user