NAME

sgelss - compute the minimum norm solution to a real linear least squares problem


SYNOPSIS

  SUBROUTINE SGELSS( M, N, NRHS, A, LDA, B, LDB, SING, RCOND, IRANK, 
 *      WORK, LDWORK, INFO)
  INTEGER M, N, NRHS, LDA, LDB, IRANK, LDWORK, INFO
  REAL RCOND
  REAL A(LDA,*), B(LDB,*), SING(*), WORK(*)
  SUBROUTINE SGELSS_64( M, N, NRHS, A, LDA, B, LDB, SING, RCOND, 
 *      IRANK, WORK, LDWORK, INFO)
  INTEGER*8 M, N, NRHS, LDA, LDB, IRANK, LDWORK, INFO
  REAL RCOND
  REAL A(LDA,*), B(LDB,*), SING(*), WORK(*)

F95 INTERFACE

  SUBROUTINE GELSS( [M], [N], [NRHS], A, [LDA], B, [LDB], SING, RCOND, 
 *       IRANK, [WORK], [LDWORK], [INFO])
  INTEGER :: M, N, NRHS, LDA, LDB, IRANK, LDWORK, INFO
  REAL :: RCOND
  REAL, DIMENSION(:) :: SING, WORK
  REAL, DIMENSION(:,:) :: A, B
  SUBROUTINE GELSS_64( [M], [N], [NRHS], A, [LDA], B, [LDB], SING, 
 *       RCOND, IRANK, [WORK], [LDWORK], [INFO])
  INTEGER(8) :: M, N, NRHS, LDA, LDB, IRANK, LDWORK, INFO
  REAL :: RCOND
  REAL, DIMENSION(:) :: SING, WORK
  REAL, DIMENSION(:,:) :: A, B

C INTERFACE

#include <sunperf.h>

void sgelss(int m, int n, int nrhs, float *a, int lda, float *b, int ldb, float *sing, float rcond, int *irank, int *info);

void sgelss_64(long m, long n, long nrhs, float *a, long lda, float *b, long ldb, float *sing, float rcond, long *irank, long *info);


PURPOSE

sgelss computes the minimum norm solution to a real linear least squares problem:

Minimize 2-norm(| b - A*x |).

using the singular value decomposition (SVD) of A. A is an M-by-N matrix which may be rank-deficient.

Several right hand side vectors b and solution vectors x can be handled in a single call; they are stored as the columns of the M-by-NRHS right hand side matrix B and the N-by-NRHS solution matrix X.

The effective rank of A is determined by treating as zero those singular values which are less than RCOND times the largest singular value.


ARGUMENTS