code: public static double solve(Matrix A, double[] b, double[] x) {
          return solve(A, diagonalPreconditioner(A), b, x);
      }
docs: Solves A * x = b by iterative biconjugate gradient method.
  @param b the right hand side of linear equations.
  @param x on input, x should be set to an initial guess of the solution
  (or all zeros). On output, x is reset to the improved solution.
  @return the estimated error.