/***************************  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 += a[i][k]*b[k][j]; // von Zeile i und Spalte j  
            c[i][j] = summe;              // die Produktsumme steht in c[i,j]
        }       
  }
}
