public void elsolve(final double[] b, final double[] y) {
    int i,j;
    double sum;
    if (b.length != n || y.length != n) throw new IllegalArgumentException("bad lengths");
    for (i=0;i<n;i++) {
      for (sum=b[i],j=0; j<i; j++) sum -= el[i][j]*y[j];
      y[i] = sum/el[i][i];
    }
  }