#include #include #include #include #include #ifndef MINDIM_M #define MINDIM_M 1000 #endif #ifndef MINDIM_N #define MINDIM_N 1000 #endif #ifndef MINDIM_K #define MINDIM_K 1000 #endif #ifndef MAXDIM_M #define MAXDIM_M 5000 #endif #ifndef MAXDIM_N #define MAXDIM_N 5000 #endif #ifndef MAXDIM_K #define MAXDIM_K 5000 #endif #ifndef INC_M #define INC_M 100 #endif #ifndef INC_N #define INC_N 100 #endif #ifndef INC_K #define INC_K 100 #endif #ifndef MIN_T #define MIN_T 1 #endif double buffer[MAXDIM_M*MAXDIM_N]; double buffer1[MAXDIM_M*MAXDIM_N]; double buffer2[MAXDIM_M*MAXDIM_N]; double walltime() { struct tms ts; static double ClockTick=0.0; if (ClockTick==0.0) { ClockTick = 1.0 / ((double) sysconf(_SC_CLK_TCK)); } return ((double) times(&ts)) * ClockTick; } void gecopy(long m, long n, const double *A, long incRowA, long incColA, double *B, long incRowB, long incColB) { long i, j; for (i=0; i