?ggglm

Solves a general Gauss-Markov linear model problem using a generalized QR factorization.

Syntax

lapack_int LAPACKE_sggglm (int matrix_layout, lapack_int n, lapack_int m, lapack_int p, float* a, lapack_int lda, float* b, lapack_int ldb, float* d, float* x, float* y);

lapack_int LAPACKE_dggglm (int matrix_layout, lapack_int n, lapack_int m, lapack_int p, double* a, lapack_int lda, double* b, lapack_int ldb, double* d, double* x, double* y);

lapack_int LAPACKE_cggglm (int matrix_layout, lapack_int n, lapack_int m, lapack_int p, lapack_complex_float* a, lapack_int lda, lapack_complex_float* b, lapack_int ldb, lapack_complex_float* d, lapack_complex_float* x, lapack_complex_float* y);

lapack_int LAPACKE_zggglm (int matrix_layout, lapack_int n, lapack_int m, lapack_int p, lapack_complex_double* a, lapack_int lda, lapack_complex_double* b, lapack_int ldb, lapack_complex_double* d, lapack_complex_double* x, lapack_complex_double* y);

Include Files

  • mkl.h

Description

The routine solves a general Gauss-Markov linear model (GLM) problem:

minimizex ||y||2 subject to d = A*x + B*y

where A is an n-by-m matrix, B is an n-by-p matrix, and d is a given n-vector. It is assumed that mnm+p, and rank(A) = m and rank(AB) = n.

Under these assumptions, the constrained equation is always consistent, and there is a unique solution x and a minimal 2-norm solution y, which is obtained using a generalized QR factorization of the matrices (A, B ) given by

Equation

In particular, if matrix B is square nonsingular, then the problem GLM is equivalent to the following weighted linear least squares problem

minimizex ||B-1(d-A*x)||2.

Input Parameters

matrix_layout

Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).

n

The number of rows of the matrices A and B (n 0).

m

The number of columns in A (m 0).

p

The number of columns in B (pn - m).

a, b, d

Arrays:

a(size max(1, lda*m) for column major layout and max(1, lda*n) for row major layout) contains the n-by-m matrix A.

b(size max(1, ldb*p) for column major layout and max(1, ldb*n) for row major layout) contains the n-by-p matrix B.

d, size at least max(1, n), contains the left hand side of the GLM equation.

lda

The leading dimension of a; at least max(1, n)for column major layout and max(1, m) for row major layout.

ldb

The leading dimension of b; at least max(1, n)for column major layout and max(1, p) for row major layout.

Output Parameters

x, y

Arrays x, y. size at least max(1, m) for x and at least max(1, p) for y.

On exit, x and y are the solutions of the GLM problem.

a

On exit, the upper triangular part of the array a contains the m-by-m upper triangular matrix R.

b

On exit, if np, the upper right triangle contains the n-by-n upper triangular matrix T as returned by ?ggrqf; if n > p, the elements on and above the (n-p)-th subdiagonal contain the n-by-p upper trapezoidal matrix T.

d

On exit, d is destroyed

Return Values

This function returns a value info.

If info=0, the execution is successful.

If info = -i, the i-th parameter had an illegal value.

If info = 1, the upper triangular factor R associated with A in the generalized QR factorization of the pair (A, B) is singular, so that rank(A) < m; the least squares solution could not be computed.

If info = 2, the bottom (n-m)-by-(n-m) part of the upper trapezoidal factor T associated with B in the generalized QR factorization of the pair (A, B) is singular, so that rank(AB) < n; the least squares solution could not be computed.

Select sticky button color: 
Orange (only for download buttons)
For more complete information about compiler optimizations, see our Optimization Notice.