package ppmrmn;

public class RealMat extends ComplexMat {

  public RealMat(double preal[][]) {
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        re[i][j] = preal[i][j];
  }

  public RealMat() {
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        re[i][j] = 0;
  }

  public static RealMat transpose(RealMat a) {
    RealMat c = new RealMat();
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++) {
          c.re[i][j] = a.re[j][i];
      }
    return c;
  }

  public ComplexMat mult(RealMat a, ComplexMat b) {
    ComplexMat c = new ComplexMat();
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        for (int k = 0; k < n; k++) {
          c.re[i][j] += a.re[i][k]*b.re[k][j];
          c.im[i][j] += a.re[i][k]*b.im[k][j];
        }
//    System.out.println("real-complex");
    return c;
  }

  public ComplexMat mult(ComplexMat a, RealMat b) {
    ComplexMat c = new ComplexMat();
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        for (int k = 0; k < n; k++) {
          c.re[i][j] += a.re[i][k]*b.re[k][j];
          c.im[i][j] += a.im[i][k]*b.re[k][j];
        }
//    System.out.println("complex-real");
    return c;
  }

  public RealMat mult(RealMat a, RealMat b) {
    RealMat c = new RealMat();
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        for (int k = 0; k < n; k++)
          c.re[i][j] += a.re[i][k]*b.re[k][j];
//    System.out.println("real-real");
    return c;
  }

}