package cap6.matrici;

public class Matrice
{ public static final int SIZE = 2;
  private double[][] val = new double[SIZE][SIZE];
  public void set(int i, int j, double d)
  { val[i][j] = d;
  }
  public double get(int i, int j)
  { return val[i][j];
  }
  public Matrice add(Matrice m)
  { Matrice tmp = new Matrice();
    for (int i = 0; i < SIZE; i++)
      for (int j = 0; j < SIZE; j++)
        tmp.val[i][j] = val[i][j] + m.val[i][j];
    return tmp;
  }
  public Matrice mul(double d)
  { Matrice tmp = new Matrice();
    for (int i = 0; i < SIZE; i++)
      for (int j = 0; j < SIZE; j++)
        tmp.val[i][j] = val[i][j] * d;
    return tmp;
  }
  public Matrice mul(Matrice m)
  { Matrice tmp = new Matrice();
    for (int i = 0; i < SIZE; i++)
      for (int j = 0; j < SIZE; j++)
      { tmp.val[i][j] = 0;
        for (int k = 0; k < SIZE; k++)
          tmp.val[i][j] += (val[i][k] * m.val[k][j]);
      }
    return tmp;
  }
  public double abs()
  { double max = 0;
    for (int i = 0; i < SIZE; i++)
    { double work = 0;
      for (int j = 0; j < SIZE; j++)
        work += Math.abs(val[i][j]);
      if (work > max)
        max = work;
    }
    return max;
  }
}
