Class SVD

  • All Implemented Interfaces:
    java.io.Serializable

    public class SVD
    extends java.lang.Object
    implements java.io.Serializable
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      SVD()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void DBDSDC​(char UPLO, char COMPQ, int N, double[] D, double[] E, double[][] U, int LDU, double[][] VT, int LDVT, double[] Q, int[] IQ, double[] WORK, int[] IWORK, int[] INFO)  
      (package private) int DCOPY​(int n, double[] dx, int incx, double[] dy, int incy)  
      private void ddrvbd​(int nsizes, int[] mm, int[] nn, int ntypes, boolean[] dotype, int[] iseed, double thresh, double[][] A, int lda, double[][] U, int ldu, double[][] VT, int ldvt, double[][] ASAV, double[][] USAV, double[][] VTSAV, double[] s, double[] ssav, double[] e, double[] work, int lwork, int[] iwork, int[] info)  
      void ddrvbd_test()
      This routine is an extraction from the FORTRAN program version 3.4.1 DCHKEE of the code needed to drive ddrvbd in order to run ddrvbd in order to test the singular value decomposition drivers dgesvd and dgesdd.
      private void derred()  
      void dgesdd​(char JOBZ, int M, int N, double[][] A, int LDA, double[] S, double[][] U, int LDU, double[][] VT, int LDVT, double[] WORK, int LWORK, int[] IWORK, int[] INFO)  
      void dgesvd​(char jobu, char jobvt, int m, int n, double[][] A, int lda, double[] s, double[][] U, int ldu, double[][] VT, int ldvt, double[] work, int lwork, int[] info)  
      private void DLAED6​(int KNITER, boolean ORGATI, double RHO, double[] D, double[] Z, double FINIT, double[] TAU, int[] INFO)  
      private void DLAMRG​(int N1, int N2, double[] A, int DTRD1, int DTRD2, int[] INDEX)  
      private void DLASD0​(int N, int SQRE, double[] D, double[] E, double[][] U, int LDU, double[][] VT, int LDVT, int SMLSIZ, int[] IWORK, double[] WORK, int[] INFO)  
      private void DLASD1​(int NL, int NR, int SQRE, double[] D, double[] ALPHA, double[] BETA, double[][] U, int LDU, double[][] VT, int LDVT, int[] IDXQ, int[] IWORK, double[] WORK, int[] INFO)  
      private void DLASD2​(int NL, int NR, int SQRE, int[] K, double[] D, double[] Z, double ALPHA, double BETA, double[][] U, int LDU, double[][] VT, int LDVT, double[] DSIGMA, double[][] U2, int LDU2, double[][] VT2, int LDVT2, int[] IDXP, int[] IDX, int[] IDXC, int[] IDXQ, int[] COLTYP, int[] INFO)  
      private void DLASD3​(int NL, int NR, int SQRE, int K, double[] D, double[][] Q, int LDQ, double[] DSIGMA, double[][] U, int LDU, double[][] U2, int LDU2, double[][] VT, int LDVT, double[][] VT2, int LDVT2, int[] IDXC, int[] CTOT, double[] Z, int[] INFO)  
      private void DLASD4​(int N, int I, double[] D, double[] Z, double[] DELTA, double RHO, double[] SIGMA, double[] WORK, int[] INFO)  
      private void DLASD5​(int I, double[] D, double[] Z, double[] DELTA, double RHO, double[] DSIGMA, double[] WORK)  
      private void DLASD6​(int ICOMPQ, int NL, int NR, int SQRE, double[] D, double[] VF, double[] VL, double[] ALPHA, double[] BETA, int[] IDXQ, int[] PERM, int[] GIVPTR, int[][] GIVCOL, int LDGCOL, double[][] GIVNUM, int LDGNUM, double[][] POLES, double[] DIFL, double[][] DIFR, double[] Z, int[] K, double[] C, double[] S, double[] WORK, int[] IWORK, int[] INFO)  
      private void DLASD7​(int ICOMPQ, int NL, int NR, int SQRE, int[] K, double[] D, double[] Z, double[] ZW, double[] VF, double[] VFW, double[] VL, double[] VLW, double ALPHA, double BETA, double[] DSIGMA, int[] IDX, int[] IDXP, int[] IDXQ, int[] PERM, int[] GIVPTR, int[][] GIVCOL, int LDGCOL, double[][] GIVNUM, int LDGNUM, double[] C, double[] S, int[] INFO)  
      private void DLASD8​(int ICOMPQ, int K, double[] D, double[] Z, double[] VF, double[] VL, double[] DIFL, double[][] DIFR, int LDDIFR, double[] DSIGMA, double[] WORK, int[] INFO)  
      private void DLASDA​(int ICOMPQ, int SMLSIZ, int N, int SQRE, double[] D, double[] E, double[][] U, int LDU, double[][] VT, int[] K, double[][] DIFL, double[][] DIFR, double[][] Z, double[][] POLES, int[] GIVPTR, int[][] GIVCOL, int LDGCOL, int[][] PERM, double[][] GIVNUM, double[] C, double[] S, double[] WORK, int[] IWORK, int[] INFO)  
      private void DLASDQ​(char UPLO, int SQRE, int N, int NCVT, int NRU, int NCC, double[] D, double[] E, double[][] VT, int LDVT, double[][] U, int LDU, double[][] C, int LDC, double[] WORK, int[] INFO)  
      private void DLASDT​(int N, int[] LVL, int[] ND, int[] INODE, int[] NDIML, int[] NDIMR, int MSUB)  
      private void dort03​(char rc, int mu, int mv, int n, int k, double[][] U, int ldu, double[][] V, int ldv, double[] work, int lwork, double[] result, int[] info)  
      (package private) double DROUNDUP_LWORK​(int LWORK)  
      private double log2​(double x)  
      double SIGN​(double A, double B)  
      void xlaenv​(int ispec, int nvalue)
      This is a port of version 3.1 LAPACK auxiliary routine XLAENV.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SVD

        public SVD()
    • Method Detail

      • ddrvbd_test

        public void ddrvbd_test()
        This routine is an extraction from the FORTRAN program version 3.4.1 DCHKEE of the code needed to drive ddrvbd in order to run ddrvbd in order to test the singular value decomposition drivers dgesvd and dgesdd. Numerical values were obtained from the svd.in datafile. Original DCHKEE created by Univ. of Tennessee, Univ. of California Berkeley, University of Colorado Denver, and NAG Ltd., April, 2012 Always see All 2660.0 dgesvd tests passed by being less than the threshold If DLASD0 uses if (N <= SMLSIZ) to call DLASDQ rather than divide and conquer see 96 out of 2660 dgesdd tests failed by being >= the threshold. If DLASDO uses if (true) so that DLASDQ is always called instead of divide and conquer see All 2660.0 dgesdd tests passed by being less than the threshold.
      • derred

        private void derred()
      • ddrvbd

        private void ddrvbd​(int nsizes,
                            int[] mm,
                            int[] nn,
                            int ntypes,
                            boolean[] dotype,
                            int[] iseed,
                            double thresh,
                            double[][] A,
                            int lda,
                            double[][] U,
                            int ldu,
                            double[][] VT,
                            int ldvt,
                            double[][] ASAV,
                            double[][] USAV,
                            double[][] VTSAV,
                            double[] s,
                            double[] ssav,
                            double[] e,
                            double[] work,
                            int lwork,
                            int[] iwork,
                            int[] info)
      • dort03

        private void dort03​(char rc,
                            int mu,
                            int mv,
                            int n,
                            int k,
                            double[][] U,
                            int ldu,
                            double[][] V,
                            int ldv,
                            double[] work,
                            int lwork,
                            double[] result,
                            int[] info)
      • dgesdd

        public void dgesdd​(char JOBZ,
                           int M,
                           int N,
                           double[][] A,
                           int LDA,
                           double[] S,
                           double[][] U,
                           int LDU,
                           double[][] VT,
                           int LDVT,
                           double[] WORK,
                           int LWORK,
                           int[] IWORK,
                           int[] INFO)
      • DBDSDC

        public void DBDSDC​(char UPLO,
                           char COMPQ,
                           int N,
                           double[] D,
                           double[] E,
                           double[][] U,
                           int LDU,
                           double[][] VT,
                           int LDVT,
                           double[] Q,
                           int[] IQ,
                           double[] WORK,
                           int[] IWORK,
                           int[] INFO)
      • log2

        private double log2​(double x)
      • DLASDA

        private void DLASDA​(int ICOMPQ,
                            int SMLSIZ,
                            int N,
                            int SQRE,
                            double[] D,
                            double[] E,
                            double[][] U,
                            int LDU,
                            double[][] VT,
                            int[] K,
                            double[][] DIFL,
                            double[][] DIFR,
                            double[][] Z,
                            double[][] POLES,
                            int[] GIVPTR,
                            int[][] GIVCOL,
                            int LDGCOL,
                            int[][] PERM,
                            double[][] GIVNUM,
                            double[] C,
                            double[] S,
                            double[] WORK,
                            int[] IWORK,
                            int[] INFO)
      • DLASD6

        private void DLASD6​(int ICOMPQ,
                            int NL,
                            int NR,
                            int SQRE,
                            double[] D,
                            double[] VF,
                            double[] VL,
                            double[] ALPHA,
                            double[] BETA,
                            int[] IDXQ,
                            int[] PERM,
                            int[] GIVPTR,
                            int[][] GIVCOL,
                            int LDGCOL,
                            double[][] GIVNUM,
                            int LDGNUM,
                            double[][] POLES,
                            double[] DIFL,
                            double[][] DIFR,
                            double[] Z,
                            int[] K,
                            double[] C,
                            double[] S,
                            double[] WORK,
                            int[] IWORK,
                            int[] INFO)
      • DLASD7

        private void DLASD7​(int ICOMPQ,
                            int NL,
                            int NR,
                            int SQRE,
                            int[] K,
                            double[] D,
                            double[] Z,
                            double[] ZW,
                            double[] VF,
                            double[] VFW,
                            double[] VL,
                            double[] VLW,
                            double ALPHA,
                            double BETA,
                            double[] DSIGMA,
                            int[] IDX,
                            int[] IDXP,
                            int[] IDXQ,
                            int[] PERM,
                            int[] GIVPTR,
                            int[][] GIVCOL,
                            int LDGCOL,
                            double[][] GIVNUM,
                            int LDGNUM,
                            double[] C,
                            double[] S,
                            int[] INFO)
      • DLASD8

        private void DLASD8​(int ICOMPQ,
                            int K,
                            double[] D,
                            double[] Z,
                            double[] VF,
                            double[] VL,
                            double[] DIFL,
                            double[][] DIFR,
                            int LDDIFR,
                            double[] DSIGMA,
                            double[] WORK,
                            int[] INFO)
      • DLASD0

        private void DLASD0​(int N,
                            int SQRE,
                            double[] D,
                            double[] E,
                            double[][] U,
                            int LDU,
                            double[][] VT,
                            int LDVT,
                            int SMLSIZ,
                            int[] IWORK,
                            double[] WORK,
                            int[] INFO)
      • DLASD1

        private void DLASD1​(int NL,
                            int NR,
                            int SQRE,
                            double[] D,
                            double[] ALPHA,
                            double[] BETA,
                            double[][] U,
                            int LDU,
                            double[][] VT,
                            int LDVT,
                            int[] IDXQ,
                            int[] IWORK,
                            double[] WORK,
                            int[] INFO)
      • DLASD3

        private void DLASD3​(int NL,
                            int NR,
                            int SQRE,
                            int K,
                            double[] D,
                            double[][] Q,
                            int LDQ,
                            double[] DSIGMA,
                            double[][] U,
                            int LDU,
                            double[][] U2,
                            int LDU2,
                            double[][] VT,
                            int LDVT,
                            double[][] VT2,
                            int LDVT2,
                            int[] IDXC,
                            int[] CTOT,
                            double[] Z,
                            int[] INFO)
      • DLASD4

        private void DLASD4​(int N,
                            int I,
                            double[] D,
                            double[] Z,
                            double[] DELTA,
                            double RHO,
                            double[] SIGMA,
                            double[] WORK,
                            int[] INFO)
      • DLAED6

        private void DLAED6​(int KNITER,
                            boolean ORGATI,
                            double RHO,
                            double[] D,
                            double[] Z,
                            double FINIT,
                            double[] TAU,
                            int[] INFO)
      • DLASD5

        private void DLASD5​(int I,
                            double[] D,
                            double[] Z,
                            double[] DELTA,
                            double RHO,
                            double[] DSIGMA,
                            double[] WORK)
      • DLAMRG

        private void DLAMRG​(int N1,
                            int N2,
                            double[] A,
                            int DTRD1,
                            int DTRD2,
                            int[] INDEX)
      • DLASD2

        private void DLASD2​(int NL,
                            int NR,
                            int SQRE,
                            int[] K,
                            double[] D,
                            double[] Z,
                            double ALPHA,
                            double BETA,
                            double[][] U,
                            int LDU,
                            double[][] VT,
                            int LDVT,
                            double[] DSIGMA,
                            double[][] U2,
                            int LDU2,
                            double[][] VT2,
                            int LDVT2,
                            int[] IDXP,
                            int[] IDX,
                            int[] IDXC,
                            int[] IDXQ,
                            int[] COLTYP,
                            int[] INFO)
      • DLASDT

        private void DLASDT​(int N,
                            int[] LVL,
                            int[] ND,
                            int[] INODE,
                            int[] NDIML,
                            int[] NDIMR,
                            int MSUB)
      • DLASDQ

        private void DLASDQ​(char UPLO,
                            int SQRE,
                            int N,
                            int NCVT,
                            int NRU,
                            int NCC,
                            double[] D,
                            double[] E,
                            double[][] VT,
                            int LDVT,
                            double[][] U,
                            int LDU,
                            double[][] C,
                            int LDC,
                            double[] WORK,
                            int[] INFO)
      • DCOPY

        int DCOPY​(int n,
                  double[] dx,
                  int incx,
                  double[] dy,
                  int incy)
      • SIGN

        public double SIGN​(double A,
                           double B)
      • DROUNDUP_LWORK

        double DROUNDUP_LWORK​(int LWORK)
      • dgesvd

        public void dgesvd​(char jobu,
                           char jobvt,
                           int m,
                           int n,
                           double[][] A,
                           int lda,
                           double[] s,
                           double[][] U,
                           int ldu,
                           double[][] VT,
                           int ldvt,
                           double[] work,
                           int lwork,
                           int[] info)
      • xlaenv

        public void xlaenv​(int ispec,
                           int nvalue)
        This is a port of version 3.1 LAPACK auxiliary routine XLAENV. Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. November 2006 .. Scalar Arguments .. INTEGER ISPEC, NVALUE .. Purpose ======= XLAENV sets certain machine- and problem-dependent quantities which will later be retrieved by ILAENV. Arguments ========= ISPEC (input) INTEGER Specifies the parameter to be set in the COMMON array IPARMS. = 1: the optimal blocksize; if this value is 1, an unblocked algorithm will give the best performance. = 2: the minimum block size for which the block routine should be used; if the usable block size is less than this value, an unblocked routine should be used. = 3: the crossover point (in a block routine, for N less than this value, an unblocked routine should be used) = 4: the number of shifts, used in the nonsymmetric eigenvalue routines = 5: the minimum column dimension for blocking to be used; rectangular blocks must have dimension at least k by m, where k is given by ILAENV(2,...) and m by ILAENV(5,...) = 6: the crossover point for the SVD (when reducing an m by n matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds this value, a QR factorization is used first to reduce the matrix to a triangular form) = 7: the number of processors = 8: another crossover point, for the multishift QR and QZ methods for nonsymmetric eigenvalue problems. = 9: maximum size of the subproblems at the bottom of the computation tree in the divide-and-conquer algorithm (used by xGELSD and xGESDD) =10: ieee NaN arithmetic can be trusted not to trap =11: infinity arithmetic can be trusted not to trap NVALUE (input) INTEGER The value of the parameter specified by ISPEC.