docs: public static double[][] solve(double[][] A, double[][] B) {
      final int rows = A.length, cols = A[0].length;
      return rows == cols //
          ? (new LUDecomposition(A, rows, cols)).solve(B) //
          : (new QRDecomposition(A, rows, cols)).solve(B);
    }