PDDTTRSV(l)

πŸ“¦ version 1.5, in ubuntu jammy

🌸 PDDTTRSV β€” the tridiagonal triangular solve, bestie edition πŸ’–

ok so like. pookie. you're in LAPACK land (version 1.5, if we're being precise, and we ARE) and you have a tridiagonal triangular system that is not going to solve itself. that's literally what PDDTTRSV is here for. pull up a chair, grab a strawberry πŸ“, and let's get into it.


✨ NAME ✨

PDDTTRSV β€” she solves a tridiagonal triangular system of linear equations, and honestly? she ate.

A(1:N, JA:JA+N-1) * X = B(IB:IB+N-1, 1:NRHS)

πŸŽ€ SYNOPSIS πŸŽ€

here's the whole cast, no cap:

SUBROUTINE PDDTTRSV( 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( * )

    DOUBLE           PRECISION AF( * ), B( * ), D( * ), DL( * ), DU( *
                     ), WORK( * )

like yes bestie, that is a lot of arguments. but every single one of them matters, i promise. πŸ’…


πŸ‘‘ PURPOSE πŸ‘‘

PDDTTRSV solves a tridiagonal triangular system of linear equations, and it can do it two ways:

A(1:N, JA:JA+N-1) * X = B(IB:IB+N-1, 1:NRHS)

or

A(1:N, JA:JA+N-1)^T * X = B(IB:IB+N-1, 1:NRHS)

so where does A(1:N, JA:JA+N-1) even come from? it's a tridiagonal triangular matrix factor, produced by the Gaussian elimination code PD@(dom_pre)TTRF, and it lives in A(1:N,JA:JA+N-1) and in AF. two homes. main character energy honestly.

the matrix chillin' in A(1:N, JA:JA+N-1) is either upper or lower triangular β€” that's decided by UPLO, not by you vibing β€” and whether you solve with A(1:N, JA:JA+N-1) or with A(1:N, JA:JA+N-1)^T is entirely dictated by the user through the parameter TRANS.

🚨 okay this is the part where you listen: routine PDDTTRF MUST be called first. like. must. no skipping. that's the pre-req, that's the lore, that's the vibe check you do not fail. πŸ™ˆ

and that's the whole page, babe β€” short, sweet, and extremely specific about which routine you have to run before this one. πŸ¦‹


this iconic lil slice of LAPACK is from LAPACK version 1.5, dated 12 May 1997 β€” vintage, honestly, and still serving. mwah πŸ’–βœ¨

πŸ“¦ where this page comes from