#include <stdio.h>
#include <time.h>
#include <stdlib.h>
long int A[ 8000 ] [ 8000 ] ;
long int B[ 8000 ] [ 8000 ] ;
long int total= 0 ;
long int total1= 0 ;
long int x= ( 8000 * 8000 ) ;
double Average, Average1;
int main( )
{
long int i, j;
clock_t start, stop;
float cpuSecs;
for ( i = 0 ; i < 8000 ; i++ )
for ( j = 0 ; j < 8000 ; j++ )
A
[ i
] [ j
] = ( rand ( ) % 100 ) ; // random matrix generation ( square)
for ( i = 0 ; i < 8000 ; i++ )
for ( j = 0 ; j < 8000 ; j++ )
total= total+ A[ i] [ j] ;
Average= ( double ) total/ x;
printf ( "Average of elements of matrix calculated in row major order is %lf\n " , Average
) ;
cpuSecs= ( ( float ) ( stop- start) ) / CLOCKS_PER_SEC;
printf ( "CPU time for row major order is :%f\n " , cpuSecs
) ;
for ( i = 0 ; i < 8000 ; i++ )
for ( j = 0 ; j < 8000 ; j++ )
B
[ i
] [ j
] = ( rand ( ) % 100 ) ; // random matrix generation ( square)
for ( j = 0 ; j < 8000 ; j++ )
for ( i = 0 ; i < 8000 ; i++ )
total1= total1+ B[ i] [ j] ;
Average1= ( double ) total/ x;
printf ( "Average of elements of matrix calculated in column major order is %lf\n " , Average1
) ;
cpuSecs= ( ( float ) ( stop- start) ) / CLOCKS_PER_SEC;
printf ( "CPU time for column major order is :%f\n " , cpuSecs
) ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmxvbmcgaW50IEFbODAwMF1bODAwMF07CmxvbmcgaW50IEJbODAwMF1bODAwMF07CmxvbmcgaW50IHRvdGFsPTA7IApsb25nIGludCB0b3RhbDE9MDsKbG9uZyBpbnQgeD0oODAwMCo4MDAwKTsKZG91YmxlIEF2ZXJhZ2UsIEF2ZXJhZ2UxOwoKCmludCBtYWluKCkKICAKewogICBsb25nIGludCBpLCBqOwogICAgY2xvY2tfdCBzdGFydCwgc3RvcDsKICAgIGZsb2F0IGNwdVNlY3M7CiAgICAgc3RhcnQgPSBjbG9jaygpOwogICAKICAgIGZvciAoaSA9IDA7IGkgPCA4MDAwOyBpKyspCiAgICBmb3IgKGogPSAwOyBqIDwgODAwMDsgaisrKQogICAgQVtpXVtqXT0ocmFuZCgpJTEwMCk7ICAvLyByYW5kb20gbWF0cml4IGdlbmVyYXRpb24gKCBzcXVhcmUpCiAgICAgICAKICAgIAogICAgZm9yIChpID0gMDsgaSA8IDgwMDA7IGkrKykKICAgIGZvciAoaiA9IDA7IGogPCA4MDAwOyBqKyspCiAgICAKICAgIAogICAgdG90YWw9dG90YWwrQVtpXVtqXTsKICAgIEF2ZXJhZ2U9KGRvdWJsZSl0b3RhbC94OwogICAgcHJpbnRmKCJBdmVyYWdlIG9mIGVsZW1lbnRzIG9mIG1hdHJpeCBjYWxjdWxhdGVkIGluIHJvdyBtYWpvciBvcmRlciBpcyAlbGZcbiIsIEF2ZXJhZ2UpOwogICAKICAgIHN0b3AgPSBjbG9jaygpOwogICAgY3B1U2Vjcz0oKGZsb2F0KShzdG9wLXN0YXJ0KSkvQ0xPQ0tTX1BFUl9TRUM7CiAgICBwcmludGYoIkNQVSB0aW1lIGZvciByb3cgbWFqb3Igb3JkZXIgaXMgOiVmXG4iLGNwdVNlY3MpOwoJCgkKCXN0YXJ0ID0gY2xvY2soKTsKICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgODAwMDsgaSsrKQogICAgZm9yIChqID0gMDsgaiA8IDgwMDA7IGorKykKICAgIEJbaV1bal09KHJhbmQoKSUxMDApOyAgLy8gcmFuZG9tIG1hdHJpeCBnZW5lcmF0aW9uICggc3F1YXJlKQogICAgICAgCiAgICAKICAgCiAgICBmb3IgKGogPSAwOyBqIDwgODAwMDsgaisrKQogICAgZm9yIChpID0gMDsgaSA8IDgwMDA7IGkrKykKICAgIAogICAgdG90YWwxPXRvdGFsMStCW2ldW2pdOwogICAgQXZlcmFnZTE9KGRvdWJsZSl0b3RhbC94OwogICAgcHJpbnRmKCJBdmVyYWdlIG9mIGVsZW1lbnRzIG9mIG1hdHJpeCBjYWxjdWxhdGVkIGluIGNvbHVtbiBtYWpvciBvcmRlciBpcyAlbGZcbiIsIEF2ZXJhZ2UxKTsKICAgCiAgICBzdG9wID0gY2xvY2soKTsKICAgIGNwdVNlY3M9KChmbG9hdCkoc3RvcC1zdGFydCkpL0NMT0NLU19QRVJfU0VDOwogICAgcHJpbnRmKCJDUFUgdGltZSBmb3IgY29sdW1uIG1ham9yIG9yZGVyIGlzIDolZlxuIixjcHVTZWNzKTsKCQoJCgkKCQoJCgkKICAgIAp9Cgo=