SRC/clatrs3.f(3)
π NAME
Ok bestie, you're on the SRC/clatrs3.f(3) page in the Library Functions Manual π
, and the main character is SRC/clatrs3.f β a routine that solves triangular systems while keeping the numbers from overflowing. Itβs giving βmath but make it safeβ energy. β¨
β¨ SYNOPSIS
π Functions/Subroutines
subroutine clatrs3 (uplo, trans, diag, normin, n, nrhs, a, lda, x, ldx,
scale, cnorm, work, lwork, info)
CLATRS3 solves a triangular system of equations with the scale factors set to prevent overflow. No cap. π«Ά
π§ Function/Subroutine Documentation
π¦ subroutine clatrs3
Hereβs the full signature, bestie, copied exactly so you donβt have to squint:
subroutine clatrs3 (character uplo, character trans, character diag,
character normin, integer n, integer nrhs, complex, dimension( lda, * )
a, integer lda, complex, dimension( ldx, * ) x, integer ldx, real,
dimension( * ) scale, real, dimension( * ) cnorm, real, dimension( * )
work, integer lwork, integer info)
CLATRS3 solves a triangular system of equations with the scale factors set to prevent overflow. Thatβs the whole point, and honestly? Iconic. π
πΈ Purpose
Ok so CLATRS3 solves one of these triangular systems:
A * X = B * diag(scale), A**T * X = B * diag(scale), or
A**H * X = B * diag(scale)
β¦with scaling to prevent overflow. Here A is an upper or lower triangular matrix, A**T denotes the transpose of A, and A**H denotes the conjugate transpose of A. X and B are n-by-nrhs matrices, and scale is an nrhs-element vector of scaling factors. A scaling factor scale(j) is usually less than or equal to 1, chosen such that X(:,j) is less than the overflow threshold. If the matrix A is singular (A(j,j) = 0 for some j), then a non-trivial solution to A*X = 0 is returned. If the system is so badly scaled that the solution cannot be represented as (1/scale(k))*X(:,k), then x(:,k) = 0 and scale(k) is returned.
This is a BLAS-3 version of LATRS for solving several right hand sides simultaneously. π₯
π«Ά Parameters
π UPLO
UPLO is CHARACTER*1. It specifies whether the matrix A is upper or lower triangular.
= 'U': Upper triangular= 'L': Lower triangular
π TRANS
TRANS is CHARACTER*1. It specifies the operation applied to A.
= 'N': Solve A * x = s*b (No transpose)= 'T': Solve A**T* x = s*b (Transpose)= 'C': Solve A**T* x = s*b (Conjugate transpose)
π DIAG
DIAG is CHARACTER*1. It specifies whether or not the matrix A is unit triangular.
= 'N': Non-unit triangular= 'U': Unit triangular
π NORMIN
NORMIN is CHARACTER*1. It specifies whether CNORM has been set or not.
= 'Y': CNORM contains the column norms on entry= 'N': CNORM is not set on entry. On exit, the norms will be computed and stored in CNORM.
π N
N is INTEGER. Itβs the order of the matrix A. N >= 0. π«‘
π NRHS
NRHS is INTEGER. Itβs the number of columns of X. NRHS >= 0.
π A
A is COMPLEX array, dimension (LDA,N). Itβs the triangular matrix A.
If UPLO = 'U', the leading n by n upper triangular part of the array A contains the upper triangular matrix, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading n by n lower triangular part of the array A contains the lower triangular matrix, and the strictly upper triangular part of A is not referenced. If DIAG = 'U', the diagonal elements of A are also not referenced and are assumed to be 1.
π LDA
LDA is INTEGER. Itβs the leading dimension of the array A. LDA >= max (1,N).
π X
X is COMPLEX array, dimension (LDX,NRHS).
On entry, itβs the right hand side B of the triangular system. On exit, X is overwritten by the solution matrix X. Literally the glow-up happens in place. π
π LDX
LDX is INTEGER. Itβs the leading dimension of the array X. LDX >= max (1,N).
π SCALE
SCALE is REAL array, dimension (NRHS).
The scaling factor s(k) is for the triangular system:
A * x(:,k) = s(k)*b(:,k) or A**T* x(:,k) = s(k)*b(:,k).
If SCALE = 0, the matrix A is singular or badly scaled. If A(j,j) = 0 is encountered, a non-trivial vector x(:,k) that is an exact or approximate solution to A*x(:,k) = 0 is returned. If the system is so badly scaled that the solution cannot be presented as x(:,k) * 1/s(k), then x(:,k) = 0 is returned. π«
π CNORM
CNORM is REAL array, dimension (N).
If NORMIN = 'Y', CNORM is an input argument and CNORM(j) contains the norm of the off-diagonal part of the j-th column of A. If TRANS = 'N', CNORM(j) must be greater than or equal to the infinity-norm, and if TRANS = 'T' or 'C', CNORM(j) must be greater than or equal to the 1-norm.
If NORMIN = 'N', CNORM is an output argument and CNORM(j) returns the 1-norm of the offdiagonal part of the j-th column of A.
π WORK
WORK is REAL array, dimension (MAX(1,LWORK)).
On exit, if INFO = 0, WORK(1) returns the optimal size of WORK.
π LWORK
LWORK is INTEGER. Itβs the dimension of the array WORK.
If MIN(N,NRHS) = 0, LWORK >= 1, else
LWORK >= MAX(1, 2*NBA * MAX(NBA, MIN(NRHS, 32)), where
NBA = (N + NB - 1)/NB and NB is the optimal block size.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal dimensions of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.
π INFO
INFO is INTEGER.
= 0: successful exit< 0: if INFO = -k, the k-th argument had an illegal value
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
Not much extra tea here, bestie β just the source pointer:
Definition at line 233 of file clatrs3.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
Thatβs the whole page, bestie π β from LAPACK Version 3.12.0, SRC/clatrs3.f(3). Slay, stay scaled, and donβt overflow. β¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms