// matmain2.cpp - A file that uses the user defined type matrix.
// Written by Wayne Pollock, Tampa FL, 2000.

#include <iostream>
#include "matrix2.h"

using namespace std;

int main ()
{  const int ary1[3][3] = { 1, 1, 1,  2, 2, 2,  3, 3, 3 };
   const int ary2[3][3] = { 1, 0, 0,  0, 1, 0,  0, 0, 1 };
   matrix m1;                // default initialization.
   const matrix m2(ary1);    // initialized from ary1.
   matrix ident = ary2;      // initialized from ary2.

   cout << endl << "m1 = (default):" << m1;
   cout << endl << "m2 = (array of int)" << m2;
   matrix m3 = m2 + m2;
   cout << endl << "m3 = m2 + m2:" << m3;

   m1 = ident * m3 + m2;
   cout << endl << "m1 = ident * m3 + m2:" << m1;

   m1 = m2 + ary1;
   cout << endl << "m1 = m2 + ary1:" << m1;

   m1 = ary1 + m2;
   cout << endl << "m1 = ary1 + m2:" << m1;
   cout << endl << "m2 * m2:" << m2 * m2;

   return 0;
}


#ifdef COMMENTED_OUT	// Output of Above Program:

m1 = (default):
  {
      0,  0,  0,
      0,  0,  0,
      0,  0,  0,
  }

m2 = (array of int)
  {
      1,  1,  1,
      2,  2,  2,
      3,  3,  3,
  }

m3 = m2 + m2:
  {
      2,  2,  2,
      4,  4,  4,
      6,  6,  6,
  }

m1 = ident * m3 + m2:
  {
      3,  3,  3,
      6,  6,  6,
      9,  9,  9,
  }

m1 = m2 + ary1:
  {
      2,  2,  2,
      4,  4,  4,
      6,  6,  6,
  }

m1 = ary1 + m2:
  {
      2,  2,  2,
      4,  4,  4,
      6,  6,  6,
  }

m2 * m2:
  {
      6,  6,  6,
     12, 12, 12,
     18, 18, 18,
  }

#endif
