Sample MM code

mm.cpp
#include <iostream>
#include <cstdlib>
 
using namespace std; 
 
void mm(float **a, float **b, float **c, int n); 
void printm(float **a, int n); 
 
int main(int argc, char * argv[]) {
  if(argc==1) {
    cout << "Usage is:\nmm n seed m" << endl;
    return(0); 
  }
  int n = atoi(argv[1]); // dimensions of the matrixes
  int s = atoi(argv[2]); // seed for random number generator
  int m = atoi(argv[3]); // number of matrixes to use
 
  srand(s); 
 
  for(int t=0; t<m; t++) {
    // create matrix A
    float **A = new float* [n]; 
    for(int i=0; i<n; i++) 
      A[i] = new float[n]; 
    // create matrix B
    float **B = new float* [n]; 
    for(int i=0; i<n; i++) 
      B[i] = new float[n]; 
    // create matrix C
    float **C = new float* [n]; 
    for(int i=0; i<n; i++) 
      C[i] = new float[n]; 
 
    // init matrixes
    for(int i=0; i<n; i++) 
      for(int j=0; j<n; j++) {
	A[i][j] = ((float) rand()) / ((float) RAND_MAX); 
	B[i][j] = ((float) rand()) / ((float) RAND_MAX); 
	C[i][j] = 0.0;
      }
    // compute 
    mm(A,B,C,n); 
    // next matrix 
    // printm(A,n); 
    // printm(B,n);
    // printm(C,n);
  }
}
 
void mm(float **a, float **b, float **c, int n) {
  for(int i=0; i<n; i++) 
    for(int j=0; j<n; j++) 
      for(int k=0; k<n; k++) 
	c[i][j] += a[i][k]*b[k][j];
  return;
}
 
void printm(float **a, int n) {
  for(int i=0; i<n; i++) {
    for(int j=0; j<n; j++) 
      cout << a[i][j] << " "; 
    cout << endl; 
  }
  cout << endl; 
}