code: public static ComplexDoubleMatrix[] eigenvectors(DoubleMatrix A) {
          A.assertSquare();
          // setting up result arrays
          DoubleMatrix WR = new DoubleMatrix(A.rows);
          DoubleMatrix WI = WR.dup();
          DoubleMatrix VR = new DoubleMatrix(A.rows, A.rows);
  
          SimpleBlas.geev('N', 'V', A.dup(), WR, WI, dummyDouble, VR);
  
          // transferring the result
          ComplexDoubleMatrix E = new ComplexDoubleMatrix(WR, WI);
          ComplexDoubleMatrix V = new ComplexDoubleMatrix(A.rows, A.rows);
          //System.err.printf("VR = %s\n", VR.toString());
          for (int i = 0; i < A.rows; i++) {
              if (E.get(i).isReal()) {
                  V.putColumn(i, new ComplexDoubleMatrix(VR.getColumn(i)));
              } else {
                  ComplexDoubleMatrix v = new ComplexDoubleMatrix(VR.getColumn(i), VR.getColumn(i + 1));
                  V.putColumn(i, v);
                  V.putColumn(i + 1, v.conji());
                  i += 1;
              }
          }
          return new ComplexDoubleMatrix[]{V, ComplexDoubleMatrix.diag(E)};
      }
docs: Computes the eigenvalues and eigenvectors of a general matrix.
  
  @return an array of ComplexDoubleMatrix objects containing the eigenvectors
  stored as the columns of the first matrix, and the eigenvalues as the
  diagonal elements of the second matrix.