PCDTTRSV(l)

πŸ“¦ version 1.5, in ubuntu jammy

🌸 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