#include <stdio.h>
#include <stdlib.h>
#define SIZE 1000
void transpose(float *src, float *dst, const int N, const int M) {
for(int n = 0; n<N*M; n++) {
int i = n/N;
int j = n%N;
dst[n] = src[M*j + i];
}
}
int main(void) {
float* src = new float[SIZE * SIZE];
float* dst = new float[SIZE * SIZE];
for (int i = 0; i < SIZE * SIZE; i ++) {
src[i] = i;
}
printf("Start\n");
for (int i = 0; i < 320; i++) {
transpose(src, dst, SIZE, SIZE);
}
printf("Finish\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgU0laRSAxMDAwCgp2b2lkIHRyYW5zcG9zZShmbG9hdCAqc3JjLCBmbG9hdCAqZHN0LCBjb25zdCBpbnQgTiwgY29uc3QgaW50IE0pIHsKICAgIGZvcihpbnQgbiA9IDA7IG48TipNOyBuKyspIHsKICAgICAgICBpbnQgaSA9IG4vTjsKICAgICAgICBpbnQgaiA9IG4lTjsKICAgICAgICBkc3Rbbl0gPSBzcmNbTSpqICsgaV07CiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKCWZsb2F0KiBzcmMgPSBuZXcgZmxvYXRbU0laRSAqIFNJWkVdOwoJZmxvYXQqIGRzdCA9IG5ldyBmbG9hdFtTSVpFICogU0laRV07Cglmb3IgKGludCBpID0gMDsgaSA8IFNJWkUgKiBTSVpFOyBpICsrKSB7CgkJc3JjW2ldID0gaTsKCX0KCQoJcHJpbnRmKCJTdGFydFxuIik7Cglmb3IgKGludCBpID0gMDsgaSA8IDMyMDsgaSsrKSB7CgkJdHJhbnNwb3NlKHNyYywgZHN0LCBTSVpFLCBTSVpFKTsKCX0KCXByaW50ZigiRmluaXNoXG4iKTsKCQoJcmV0dXJuIDA7Cn0K