Class WatchedDoubleStepQREigen_FDRM


  • public class WatchedDoubleStepQREigen_FDRM
    extends java.lang.Object

    The float step implicit Eigenvalue decomposition algorithm is fairly complicated and needs to be designed so that it can handle several special cases. To aid in development and debugging this class was created. It allows individual components to be tested and to print out their results. This shows how each step is performed.

    Do not use this class to compute the eigenvalues since it is much slower than a non-debug implementation.

    • Field Detail

      • createR

        public boolean createR
      • Q

        public org.ejml.data.FMatrixRMaj Q
    • Constructor Detail

      • WatchedDoubleStepQREigen_FDRM

        public WatchedDoubleStepQREigen_FDRM()
    • Method Detail

      • incrementSteps

        public void incrementSteps()
      • setQ

        public void setQ​(org.ejml.data.FMatrixRMaj Q)
      • setChecks

        public void setChecks​(boolean hessenberg,
                              boolean orthogonal,
                              boolean uncountable)
      • isZero

        public boolean isZero​(int x1,
                              int x2)
      • setup

        public void setup​(org.ejml.data.FMatrixRMaj A)
      • exceptionalShift

        public void exceptionalShift​(int x1,
                                     int x2)
        Perform a shift in a random direction that is of the same magnitude as the elements in the matrix.
      • implicitDoubleStep

        public void implicitDoubleStep​(int x1,
                                       int x2)
        Performs an implicit float step using the values contained in the lower right hand side of the submatrix for the estimated eigenvector values.
        Parameters:
        x1 -
        x2 -
      • performImplicitDoubleStep

        public void performImplicitDoubleStep​(int x1,
                                              int x2,
                                              float real,
                                              float img)
        Performs an implicit float step given the set of two imaginary eigenvalues provided. Since one eigenvalue is the complex conjugate of the other only one set of real and imaginary numbers is needed.
        Parameters:
        x1 - upper index of submatrix.
        x2 - lower index of submatrix.
        real - Real component of each of the eigenvalues.
        img - Imaginary component of one of the eigenvalues.
      • performImplicitSingleStep

        public void performImplicitSingleStep​(int x1,
                                              int x2,
                                              float eigenvalue)
      • createBulgeSingleStep

        public boolean createBulgeSingleStep​(int x1,
                                             float eigenvalue)
      • bulgeDoubleStepQn

        public boolean bulgeDoubleStepQn​(int i)
      • bulgeDoubleStepQn

        public boolean bulgeDoubleStepQn​(int i,
                                         float a11,
                                         float a21,
                                         float a31,
                                         float threshold,
                                         boolean set)
      • bulgeSingleStepQn

        public boolean bulgeSingleStepQn​(int i)
      • bulgeSingleStepQn

        public boolean bulgeSingleStepQn​(int i,
                                         float a11,
                                         float a21,
                                         float threshold,
                                         boolean set)
      • eigen2by2_scale

        public void eigen2by2_scale​(float a11,
                                    float a12,
                                    float a21,
                                    float a22)
      • getNumberOfEigenvalues

        public int getNumberOfEigenvalues()
      • getEigenvalues

        public org.ejml.data.Complex_F32[] getEigenvalues()
      • addComputedEigen2x2

        public void addComputedEigen2x2​(int x1,
                                        int x2)
      • isReal2x2

        public boolean isReal2x2​(int x1,
                                 int x2)
      • addEigenAt

        public void addEigenAt​(int x1)
      • printSteps

        public void printSteps()