Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

cbdsqr (3p)

Name

cbdsqr - N (upper or lower) bidiagonal matrix B

Synopsis

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

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

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

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




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

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

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

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




C INTERFACE
#include <sunperf.h>

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

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

Description

Oracle Solaris Studio Performance Library                           cbdsqr(3P)



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


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

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

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

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




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

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

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

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




   C INTERFACE
       #include <sunperf.h>

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

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



PURPOSE
       cbdsqr 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 complex 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 of the bidiagonal matrix whose SVD is desired.  On  normal
                 exit  (INFO  = 0), E is destroyed.  If the algorithm does not
                 converge (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                        cbdsqr(3P)