Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

sbdsqr (3p)

Name

sbdsqr - N (upper or lower) bidiagonal matrix B

Synopsis

SUBROUTINE SBDSQR(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C,
LDC, WORK, INFO)

CHARACTER*1 UPLO
INTEGER N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
REAL D(*), E(*), VT(LDVT,*), U(LDU,*), C(LDC,*), WORK(*)

SUBROUTINE SBDSQR_64(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU,
C, LDC, WORK, INFO)

CHARACTER*1 UPLO
INTEGER*8 N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
REAL D(*), E(*), VT(LDVT,*), U(LDU,*), C(LDC,*), WORK(*)




F95 INTERFACE
SUBROUTINE BDSQR(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT,
U, LDU, C, LDC, WORK, INFO)

CHARACTER(LEN=1) :: UPLO
INTEGER :: N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
REAL, DIMENSION(:) :: D, E, WORK
REAL, DIMENSION(:,:) :: VT, U, C

SUBROUTINE BDSQR_64(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT,
U, LDU, C, LDC, WORK, INFO)

CHARACTER(LEN=1) :: UPLO
INTEGER(8) :: N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
REAL, DIMENSION(:) :: D, E, WORK
REAL, DIMENSION(:,:) :: VT, U, C




C INTERFACE
#include <sunperf.h>

void sbdsqr(char uplo, int n, int ncvt, int nru,  int  ncc,  float  *d,
float  *e,  float *vt, int ldvt, float *u, int ldu, float *c,
int ldc, int *info);

void sbdsqr_64(char uplo, long n, long ncvt, long nru, long ncc,  float
*d, float *e, float *vt, long ldvt, float *u, long ldu, float
*c, long ldc, long *info);

Description

Oracle Solaris Studio Performance Library                           sbdsqr(3P)



NAME
       sbdsqr - compute the singular value decomposition (SVD) of a real N-by-
       N (upper or lower) bidiagonal matrix B


SYNOPSIS
       SUBROUTINE SBDSQR(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C,
             LDC, WORK, INFO)

       CHARACTER*1 UPLO
       INTEGER N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
       REAL D(*), E(*), VT(LDVT,*), U(LDU,*), C(LDC,*), WORK(*)

       SUBROUTINE SBDSQR_64(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU,
             C, LDC, WORK, INFO)

       CHARACTER*1 UPLO
       INTEGER*8 N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
       REAL D(*), E(*), VT(LDVT,*), U(LDU,*), C(LDC,*), WORK(*)




   F95 INTERFACE
       SUBROUTINE BDSQR(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT,
              U, LDU, C, LDC, WORK, INFO)

       CHARACTER(LEN=1) :: UPLO
       INTEGER :: N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
       REAL, DIMENSION(:) :: D, E, WORK
       REAL, DIMENSION(:,:) :: VT, U, C

       SUBROUTINE BDSQR_64(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT,
              U, LDU, C, LDC, WORK, INFO)

       CHARACTER(LEN=1) :: UPLO
       INTEGER(8) :: N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
       REAL, DIMENSION(:) :: D, E, WORK
       REAL, DIMENSION(:,:) :: VT, U, C




   C INTERFACE
       #include <sunperf.h>

       void sbdsqr(char uplo, int n, int ncvt, int nru,  int  ncc,  float  *d,
                 float  *e,  float *vt, int ldvt, float *u, int ldu, float *c,
                 int ldc, int *info);

       void sbdsqr_64(char uplo, long n, long ncvt, long nru, long ncc,  float
                 *d, float *e, float *vt, long ldvt, float *u, long ldu, float
                 *c, long ldc, long *info);



PURPOSE
       sbdsqr computes the singular value decomposition (SVD) of a real N-by-N
       (upper  or  lower) bidiagonal matrix B:  B = Q * S * P' (P' denotes the
       transpose of P), where S is a diagonal matrix with non-negative  diago-
       nal  elements  (the  singular  values of B), and Q and P are orthogonal
       matrices.

       The routine computes S, and optionally computes U * Q, P' * VT, or Q' *
       C, for given real input matrices U, VT, and C.

       See "Computing  Small Singular Values of Bidiagonal Matrices With Guar-
       anteed High Relative Accuracy," by J. Demmel and W. Kahan, LAPACK Work-
       ing  Note  #3  (or  SIAM  J.  Sci. Statist. Comput. vol. 11, no. 5, pp.
       873-912, Sept 1990) and
       "Accurate singular values and differential qd algorithms," by  B.  Par-
       lett  and  V.  Fernando, Technical Report CPAM-554, Mathematics Depart-
       ment, University of California at Berkeley, July 1992  for  a  detailed
       description of the algorithm.


ARGUMENTS
       UPLO (input)
                 = 'U':  B is upper bidiagonal;
                 = 'L':  B is lower bidiagonal.


       N (input) The order of the matrix B.  N >= 0.


       NCVT (input)
                 The number of columns of the matrix VT. NCVT >= 0.


       NRU (input)
                 The number of rows of the matrix U. NRU >= 0.


       NCC (input)
                 The number of columns of the matrix C. NCC >= 0.


       D (input/output)
                 On entry, the n diagonal elements of the bidiagonal matrix B.
                 On exit, if INFO=0, the singular values of  B  in  decreasing
                 order.


       E (input/output)
                 On  entry, the elements of E contain the offdiagonal elements
                 of the bidiagonal matrix whose SVD is desired. On normal exit
                 (INFO  =  0), E is destroyed.  If the algorithm does not con-
                 verge (INFO > 0), D and  E  will  contain  the  diagonal  and
                 superdiagonal  elements  of  a bidiagonal matrix orthogonally
                 equivalent to the one  given  as  input.  E(N)  is  used  for
                 workspace.


       VT (input/output)
                 On entry, an N-by-NCVT matrix VT.  On exit, VT is overwritten
                 by P' * VT.  VT is not referenced if NCVT = 0.


       LDVT (input)
                 The leading dimension of the array VT.  LDVT >=  max(1,N)  if
                 NCVT > 0; LDVT >= 1 if NCVT = 0.


       U (input/output)
                 On entry, an NRU-by-N matrix U.  On exit, U is overwritten by
                 U * Q.  U is not referenced if NRU = 0.


       LDU (input)
                 The leading dimension of the array U.  LDU >= max(1,NRU).


       C (input/output)
                 On entry, an N-by-NCC matrix C.  On exit, C is overwritten by
                 Q' * C.  C is not referenced if NCC = 0.


       LDC (input)
                 The leading dimension of the array C.  LDC >= max(1,N) if NCC
                 > 0; LDC >=1 if NCC = 0.


       WORK (workspace)
                 dimension(4*N)

       INFO (output)
                 = 0:  successful exit;
                 < 0:  If INFO = -i, the i-th argument had an illegal value;
                 > 0:  the algorithm did not converge; D  and  E  contain  the
                 elements of a bidiagonal matrix which is orthogonally similar
                 to the input matrix B;  if INFO = i, i elements of E have not
                 converged to zero.




                                  7 Nov 2015                        sbdsqr(3P)