/***************************  Matrix.java  ************************************/

import AlgoTools.IO;

/** Multiplikation zweier NxN-Matrizen (ohne Ein- und Ausgabe) 
 *
 *       c[i][j]  :=  Summe {k=0 bis N-1}  ( a[i][k] * b[k][j] )
 */

public class Matrix {

  public static void main (String [] argv) {

    final int N = 4;                      // Zeilen- und Spaltenzahl
    
    double[][] c = new double[N][N];      // eine 4x4 Matrix mit Speicherplatz

    double[][] a = {{  1,  2,  3,  4},    // eine initialisierte 4x4 Matrix
                    {  5,  6,  7,  8},
                    {  9, 10, 11, 12},
                    { 13, 14, 15, 16}};

    double[][] b = {{ 17, 18, 19, 20},    // eine initialisierte 4x4 Matrix
                    { 21, 22, 23, 24},
                    { 25, 26, 27, 28},
                    { 29, 30, 31, 32}};


    int i, j, k;                          // Laufindizes 
    double summe;                         // Zwischensumme
   

    for (i = 0; i < N; i++)               // Zeilenindex 
      for (j = 0; j < N; j++) {           // Spaltenindex 
        summe = 0.0;
        for (k = 0; k < N; k++)           // verknuepft werden alle Komponenten 
          summe = summe + a[i][k]*b[k][j];// von Zeile i und Spalte j  
        c[i][j] = summe;                  // die Produktsumme kommt nach c[i,j]
      }       
  }
}
