#include #include #define SIZE 1600 typedef double mat_t[SIZE][SIZE]; typedef double vec_t[SIZE]; double elapsed_time(struct timeval tp[2]) { return tp[1].tv_sec-tp[0].tv_sec+1e-6*(tp[1].tv_usec-tp[0].tv_usec); } void lu_f(int n, mat_t a) { int i,j,k; for(k=0;kj) ? 0.0 : a[i][j]; } void transpose(int n, mat_t a) { int i,j; for(i=0;i 1) n = atol(argv[1]); if(argc > 2) al = atol(argv[2]); if(argc > 3) d = 1; genmat(n, a); if(d) printmat(n, a); gettimeofday(tp, 0); switch(al){ case 1: lu_f(n, a); break; } gettimeofday(tp+1, 0); printf("%lf\n", elapsed_time(tp)); if(d){ printmat(n, a); copy_l(n, a, l); copy_u(n, a, u); printmat(n, l); printmat(n, u); matmul(n, l, u, a); printmat(n, a); } }