docs: public double[] solveInplace(double[] b) {
      if(b.length != m) {
        throw new IllegalArgumentException(ERR_MATRIX_DIMENSIONS);
      }
      if(!this.isNonsingular()) {
        throw new ArithmeticException(ERR_SINGULAR);
      }
      // Solve L*Y = B(piv,:)
      for(int k = 0; k < n; k++) {
        for(int i = k + 1; i < n; i++) {
          b[i] -= b[k] * LU[i][k];
        }
      }
      // Solve U*X = Y;
      for(int k = n - 1; k >= 0; k--) {
        b[k] /= LU[k][k];
        for(int i = 0; i < k; i++) {
          b[i] -= b[k] * LU[i][k];
        }
      }
      return b;
    }