java.lang.Object
gov.nih.mipav.model.structures.jama.SVD
All Implemented Interfaces:
Serializable

public class SVD extends Object implements Serializable
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double
     
    (package private) GeneralizedEigenvalue
     
    (package private) GeneralizedInverse2
     
    private int[]
     
    Common variables in testing routines.
  • Constructor Summary

    Constructors
    Constructor
    Description
    SVD()
     
  • Method Summary

    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
    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
     
    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
  • Field Details

  • Constructor Details

    • SVD

      public SVD()
  • Method Details

    • 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 invalid input: '<'= 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.