NAG Library Function Document
nag_dggglm (f08zbc)
 
1
 Purpose
nag_dggglm (f08zbc) solves a real general Gauss–Markov linear (least squares) model problem.
 
2
 Specification
| 
| #include <nag.h> |  
| #include <nagf08.h> |  
| void | nag_dggglm (Nag_OrderType order,
Integer m,
Integer n,
Integer p,
double a[],
Integer pda,
double b[],
Integer pdb,
double d[],
double x[],
double y[],
NagError *fail) |  | 
 
3
 Description
nag_dggglm (f08zbc) solves the real general Gauss–Markov linear model (GLM) problem
where 
 is an 
 by 
 matrix, 
 is an 
 by 
 matrix and 
 is an 
 element vector.  It is assumed that 
, 
 and 
, where 
.  Under these assumptions, the problem has a unique solution 
 and a minimal 
-norm solution 
, which is obtained using a generalized 
 factorization of the matrices 
 and 
.
 In particular, if the matrix 
 is square and nonsingular, then the GLM problem is equivalent to the weighted linear least squares problem
 
4
 References
Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999)  LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia 
Anderson E, Bai Z and Dongarra J (1992)  Generalized QR factorization and its applications Linear Algebra Appl. (Volume 162–164) 243–271 
 
5
 Arguments
- 1:
  
      – Nag_OrderTypeInput
- 
On entry: the  order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by  . See  Section 3.3.1.3 in How to Use the NAG Library and its Documentation for a more detailed explanation of the use of this argument. 
 Constraint:
   or .
 
- 2:
  
      – IntegerInput
- 
On entry: , the number of rows of the matrices  and . Constraint:
  .
 
- 3:
  
      – IntegerInput
- 
On entry: , the number of columns of the matrix . Constraint:
  .
 
- 4:
  
      – IntegerInput
- 
On entry: , the number of columns of the matrix . Constraint:
  .
 
- 5:
  
      – doubleInput/Output
- 
Note: the dimension,  dim, of the array  a
must be at least
 
-  when 
	;
-  when 
  .
 
 The  th element of the matrix   is stored in  
-  when ;
-  when .
 
On entry: the  by  matrix . On exit:  a is overwritten. 
 
- 6:
  
      – IntegerInput
- 
On entry: the stride separating row or column elements (depending on the value of  order) in  the array  a. 
 Constraints:
      
- if , 
;
- if , .
 
 
- 7:
  
      – doubleInput/Output
- 
Note: the dimension,  dim, of the array  b
must be at least
 
-  when 
	;
-  when 
  .
 
 The  th element of the matrix   is stored in  
-  when ;
-  when .
 
On entry: the  by  matrix . On exit:  b is overwritten. 
 
- 8:
  
      – IntegerInput
- 
On entry: the stride separating row or column elements (depending on the value of  order) in  the array  b. 
 Constraints:
      
- if , 
;
- if , .
 
 
- 9:
  
      – doubleInput/Output
- 
On entry: the left-hand side vector  of the GLM equation. On exit:  d is overwritten. 
 
- 10:
  
    – doubleOutput
- 
On exit: the solution vector  of the GLM problem. 
- 11:
  
    – doubleOutput
- 
On exit: the solution vector  of the GLM problem. 
- 12:
  
    – NagError *Input/Output
- 
The NAG error argument (see  Section 3.7 in How to Use the NAG Library and its Documentation). 
 
6
 Error Indicators and Warnings
- NE_ALLOC_FAIL
- 
Dynamic memory allocation failed.
       
      See  Section 2.3.1.2  in How to Use the NAG Library and its Documentation for further information. 
- NE_BAD_PARAM
- 
On entry, argument   had an illegal value. 
- NE_INT
- 
On entry, .
 Constraint: .
 On entry, .
 Constraint: .
 On entry, .
 Constraint: .
 
- NE_INT_2
- 
On entry,  and .
 Constraint: .
 On entry,  and .
 Constraint: .
 On entry,  and .
 Constraint: .
 On entry,  and .
 Constraint: .
 On entry,  and .
 Constraint: .
 
- NE_INT_3
- 
On entry, ,  and .
 Constraint: .
 
- NE_INTERNAL_ERROR
- 
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact  NAG for assistance. 
	See  Section 2.7.6  in How to Use the NAG Library and its Documentation for further information. 
- NE_NO_LICENCE
- 
Your licence key may have expired or may not have been installed correctly.
       
      See  Section 2.7.5 in How to Use the NAG Library and its Documentation for further information. 
- NE_SINGULAR
- 
The bottom  by  part of the upper trapezoidal factor  associated with  in the generalized  factorization of the pair  is singular, so that ; the least squares solutions could not be computed.
 
The  by  part of the upper trapezoidal factor  associated with  in the generalized  factorization of the pair  is singular, so that ; the least squares solutions could not be computed.
 
 
7
 Accuracy
For an error analysis, see 
Anderson et al. (1992).  See also Section 4.6 of 
Anderson et al. (1999).
 
8
 Parallelism and Performance
nag_dggglm (f08zbc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_dggglm (f08zbc) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the 
x06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the 
Users' Note for your implementation for any additional implementation-specific information.
When , the total number of floating-point operations is approximately ; when , the total number of floating-point operations is approximately .
 
10
 Example
This example solves the weighted least squares problem
where
 
10.1
 Program Text
Program Text (f08zbce.c)
 
10.2
 Program Data
Program Data (f08zbce.d)
 
10.3
 Program Results
Program Results (f08zbce.r)