#include #include double *A, *B, *C; int N; int main(int argc, char *argv[]) { int i, j, k; if ( argc != 3 ) { cout << "Usage: " << argv[0] << " N (matrix size) print" << endl; exit(0); } N = atoi(argv[1]); A = new double[N*N]; B = new double[N*N]; C = new double[N*N]; for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) A[i*N + j] = (double) random() / 2147483647; for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) B[i*N + j] = (double) random() / 2147483647; /**** Matrix matrix multiply ****/ for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) C[i*N + j] = 0.0; for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) for (k = 0; k < N; k = k + 1) C[i*N + j] = C[i*N + j] + A[i*N + k]*B[k*N + j]; /**** Matrix matrix multiply ****/ if ( strcmp(argv[2], "print") == 0 ) { for (i = 0; i < N; i = i + 1) { for (j = 0; j < N; j = j + 1) cout << C[i*N + j] << " "; cout << endl; } cout << endl; } }