PCDTTRSV(l)
πΈ NAME πΈ
PCDTTRSV β bestie, this one solves a tridiagonal triangular system of linear equations, like:
A(1:N, JA:JA+N-1) * X = B(IB:IB+N-1, 1:NRHS)
That's the whole vibe. Tridiagonal. Triangular. Solving. Slay. π
β¨ SYNOPSIS β¨
SUBROUTINE PCDTTRSV( UPLO, TRANS, N, NRHS, DL, D, DU, JA, DESCA, B, IB,
DESCB, AF, LAF, WORK, LWORK, INFO )
CHARACTER TRANS, UPLO
INTEGER IB, INFO, JA, LAF, LWORK, N, NRHS
INTEGER DESCA( * ), DESCB( * )
COMPLEX AF( * ), B( * ), D( * ), DL( * ), DU( * ), WORK( *
)
Look at all those arguments. Not me counting them like a girlboss. π Every single one of them is real and every single one of them matters, no cap.
π¦ PURPOSE π¦
Okay so here's the tea, bestie. PCDTTRSV solves a tridiagonal triangular system of linear equations:
A(1:N, JA:JA+N-1) * X = B(IB:IB+N-1, 1:NRHS)
or
A(1:N, JA:JA+N-1)^H * X = B(IB:IB+N-1, 1:NRHS)
Like, pick your fighter. π₯
So A(1:N, JA:JA+N-1) is a tridiagonal triangular matrix factor produced by the Gaussian elimination code PC@(dom_pre)TTRF, and it's stored in A(1:N,JA:JA+N-1) and AF. Yes, both. It's giving storage goals. β¨
The matrix chilling in A(1:N, JA:JA+N-1) is either upper or lower triangular, and that's entirely according to UPLO β so, like, UPLO is the one calling the shots there. π
And whether you're solving A(1:N, JA:JA+N-1) or its conjugate transpose A(1:N, JA:JA+N-1)^H? That's dictated by the user through the parameter TRANS. You are the main character. You decide. π
β οΈ Real talk though, bestie: routine PCDTTRF MUST be called first. Not "should", not "maybe", not "if you feel like it". MUST. It's giving prerequisite, and you cannot skip it. π
LAPACK routine, version 1.5 β dated 12 May 1997, and yes she's still iconic. π Bye bestie, go call PCDTTRF first! π
π¦ where this page comes from
- ubuntu jammy: scalapack-doc 1.5-11
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms