// Evgenii B. Rudnyi, http://Evgenii.Rudnyi.Ru #include #include #include "matrix.h" using namespace::std; int main(int argc, char* argv[]) { if (argc < 2) { printf("Usage: mm dim1 dim2 dim3\n"); printf("Please specify matrix dimensions\n"); return 1; } int dim1, dim2, dim3; dim1 = atoi(argv[1]); if (argc < 3) dim2 = dim1; else dim2 = atoi(argv[2]); if (argc < 4) dim3 = dim1; else dim3 = atoi(argv[3]); Matrix A(dim1, dim2), B(dim2, dim3), C(dim1, dim3); srand(86456); double maxr=(double)RAND_MAX; for (int i = 0; i < dim1; i++) for (int j = 0; j < dim2; j++) A(i, j) = rand()/maxr; for (int i = 0; i < dim2; i++) for (int j = 0; j < dim3; j++) B(i, j) = rand()/maxr; Timing mul; for (int j = 0; j < dim3; j++) { for (int i = 0; i < dim1; i++) C(i, j) = 0.; for (int k = 0; k < dim2; k++) for (int i = 0; i < dim1; i++) C(i, j) += A(i, k)*B(k, j); } double time = mul.time(); cout << "time for C(" << dim1 << "," << dim3 << ") = A(" << dim1 << "," << dim2 << ") B(" << dim2 << "," << dim3 << ") is " << time << " s" << endl; return 0; }