![]() |
MAGMA 2.9.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_dlaqtrsd (magma_trans_t trans, magma_int_t n, const double *T, magma_int_t ldt, double *x, magma_int_t ldx, const double *cnorm, magma_int_t *info) |
DLAQTRSD is used by DTREVC to solve one of the (singular) quasi-triangular systems with modified diagonal (T - lambda*I) * x = 0 or (T - lambda*I)**T * x = 0 with scaling to prevent overflow. | |
magma_int_t | magma_slaqtrsd (magma_trans_t trans, magma_int_t n, const float *T, magma_int_t ldt, float *x, magma_int_t ldx, const float *cnorm, magma_int_t *info) |
SLAQTRSD is used by STREVC to solve one of the (singular) quasi-triangular systems with modified diagonal (T - lambda*I) * x = 0 or (T - lambda*I)**T * x = 0 with scaling to prevent overflow. | |
magma_int_t magma_dlaqtrsd | ( | magma_trans_t | trans, |
magma_int_t | n, | ||
const double * | T, | ||
magma_int_t | ldt, | ||
double * | x, | ||
magma_int_t | ldx, | ||
const double * | cnorm, | ||
magma_int_t * | info ) |
DLAQTRSD is used by DTREVC to solve one of the (singular) quasi-triangular systems with modified diagonal (T - lambda*I) * x = 0 or (T - lambda*I)**T * x = 0 with scaling to prevent overflow.
Here T is an upper quasi-triangular matrix with 1x1 or 2x2 diagonal blocks, A**T denotes the transpose of A, and x is an n-element real or complex vector. The eigenvalue lambda is computed from the block diagonal of T. It does not modify T during the computation.
If trans = MagmaNoTrans, lambda is an eigenvalue for the lower 1x1 or 2x2 block, and it solves ( [ That u ] - lambda*I ) * x = 0, ( [ 0 lambda ] ) which becomes (That - lambda*I) * w = -s*u, with x = [ w; 1 ] and scaling s. If the lower block is 1x1, lambda and x are real; if the lower block is 2x2, lambda and x are complex.
If trans = MagmaTrans, lambda is an eigenvalue for the upper 1x1 or 2x2 block, and it solves ( [ lambda v^T ] - lambda I )**T * x = 0, ( [ 0 That ] ) which becomes (That - lambda*I)**T * w = -s*v, with x = [ 1; w ] and scaling s. If the upper block is 1x1, lambda and x are real; if the upper block is 2x2, lambda and x are complex.
[in] | trans | magma_trans_t Specifies the operation applied to T.
|
[in] | n | INTEGER The order of the matrix T. N >= 0. |
[in] | T | DOUBLE PRECISION array, dimension (LDT,N) The triangular matrix T. The leading n by n upper triangular part of the array T contains the upper triangular matrix, and the strictly lower triangular part of T is not referenced. |
[in] | ldt | INTEGER The leading dimension of the array T. LDT >= max (1,N). |
[out] | x | DOUBLE PRECISION array, dimension (LDX,1) or (LDX,2). On exit, X is overwritten by the solution vector x. If LAMBDAI .EQ. 0, X is real and has dimension (LDX,1). If LAMBDAI .NE. 0, X is complex and has dimension (LDX,2); the real part is in X(:,0), the imaginary part in X(:,1). |
[in] | ldx | INTEGER The leading dimension of the array X. LDX >= max(1,N). |
[in,out] | cnorm | (input) DOUBLE PRECISION array, dimension (N) CNORM(j) contains the norm of the off-diagonal part of the j-th column of T. If TRANS = MagmaNoTrans, CNORM(j) must be greater than or equal to the infinity-norm, and if TRANS = MagmaTrans or MagmaConjTrans, CNORM(j) must be greater than or equal to the 1-norm. |
[out] | info | INTEGER
|
magma_int_t magma_slaqtrsd | ( | magma_trans_t | trans, |
magma_int_t | n, | ||
const float * | T, | ||
magma_int_t | ldt, | ||
float * | x, | ||
magma_int_t | ldx, | ||
const float * | cnorm, | ||
magma_int_t * | info ) |
SLAQTRSD is used by STREVC to solve one of the (singular) quasi-triangular systems with modified diagonal (T - lambda*I) * x = 0 or (T - lambda*I)**T * x = 0 with scaling to prevent overflow.
Here T is an upper quasi-triangular matrix with 1x1 or 2x2 diagonal blocks, A**T denotes the transpose of A, and x is an n-element real or complex vector. The eigenvalue lambda is computed from the block diagonal of T. It does not modify T during the computation.
If trans = MagmaNoTrans, lambda is an eigenvalue for the lower 1x1 or 2x2 block, and it solves ( [ That u ] - lambda*I ) * x = 0, ( [ 0 lambda ] ) which becomes (That - lambda*I) * w = -s*u, with x = [ w; 1 ] and scaling s. If the lower block is 1x1, lambda and x are real; if the lower block is 2x2, lambda and x are complex.
If trans = MagmaTrans, lambda is an eigenvalue for the upper 1x1 or 2x2 block, and it solves ( [ lambda v^T ] - lambda I )**T * x = 0, ( [ 0 That ] ) which becomes (That - lambda*I)**T * w = -s*v, with x = [ 1; w ] and scaling s. If the upper block is 1x1, lambda and x are real; if the upper block is 2x2, lambda and x are complex.
[in] | trans | magma_trans_t Specifies the operation applied to T.
|
[in] | n | INTEGER The order of the matrix T. N >= 0. |
[in] | T | REAL array, dimension (LDT,N) The triangular matrix T. The leading n by n upper triangular part of the array T contains the upper triangular matrix, and the strictly lower triangular part of T is not referenced. |
[in] | ldt | INTEGER The leading dimension of the array T. LDT >= max (1,N). |
[out] | x | REAL array, dimension (LDX,1) or (LDX,2). On exit, X is overwritten by the solution vector x. If LAMBDAI .EQ. 0, X is real and has dimension (LDX,1). If LAMBDAI .NE. 0, X is complex and has dimension (LDX,2); the real part is in X(:,0), the imaginary part in X(:,1). |
[in] | ldx | INTEGER The leading dimension of the array X. LDX >= max(1,N). |
[in,out] | cnorm | (input) REAL array, dimension (N) CNORM(j) contains the norm of the off-diagonal part of the j-th column of T. If TRANS = MagmaNoTrans, CNORM(j) must be greater than or equal to the infinity-norm, and if TRANS = MagmaTrans or MagmaConjTrans, CNORM(j) must be greater than or equal to the 1-norm. |
[out] | info | INTEGER
|