CTPSV(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’œ CTPSV(3) β€” like, the LAPACK BLAS routine, bestie πŸ’œ

okay so this page lives in the LAPACK manual (Version 3.12.0, if we're being precise, and we are) and it's literally all about one little workhorse from BLAS/SRC/ctpsv.f. she's a Level 2 BLAS icon, no cap. let's get into it 🫢


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/ctpsv.f β€” that's the file, that's the whole vibe. she's a .f file, she solves triangular systems, she's booked and busy πŸ’…


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine CTPSV (uplo, trans, diag, n, ap, x, incx) β€” yep. that's her. that's the whole call. CTPSV.

πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine CTPSV (character uplo, character trans, character diag, integer &
   n, complex, dimension(*) ap, complex, dimension(*) x, integer incx)

CTPSV. say it with me. CTPSV. iconic behavior honestly ⭐

πŸ¦‹ Purpose πŸ¦‹

okay so here's the tea, straight from the source with the !> markup and everything:

!>
!> CTPSV  solves one of the systems of equations
!>
!>    A*x = b,   or   A**T*x = b,   or   A**H*x = b,
!>
!> where b and x are n element vectors and A is an n by n unit, or
!> non-unit, upper or lower triangular matrix, supplied in packed form.
!>
!> No test for singularity or near-singularity is included in this
!> routine. Such tests must be performed before calling this routine.
!>

so like. she solves for x. she is not checking whether your matrix is singular or near-singular, bestie β€” that is not her job and she said what she said 😭 you gotta do that test before you call her. do not come for her if your matrix was messy going in. 🫢


πŸ’– Parameters πŸ’–

okay this is the part where we go one by one, and yes i'm gonna be thorough, because every single one of these matters:

  • UPLO β€” UPLO is CHARACTER*1. on entry, UPLO specifies whether the matrix is an upper or lower triangular matrix, like so:
    • UPLO = 'U' or 'u' β†’ A is an upper triangular matrix.
    • UPLO = 'L' or 'l' β†’ A is a lower triangular matrix.
  • TRANS β€” TRANS is CHARACTER*1. on entry, TRANS specifies the equations to be solved, as follows:
    • TRANS = 'N' or 'n' β†’ A*x = b.
    • TRANS = 'T' or 't' β†’ A**T*x = b.
    • TRANS = 'C' or 'c' β†’ A**H*x = b.
  • DIAG β€” DIAG is CHARACTER*1. on entry, DIAG specifies whether or not A is unit triangular, like:
    • DIAG = 'U' or 'u' β†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' β†’ A is not assumed to be unit triangular.
  • N β€” N is INTEGER. on entry, N specifies the order of the matrix A. N must be at least zero. (zero is allowed! she's chill like that. negative? no ma'am.)
  • AP β€” AP is COMPLEX array, dimension at least ( ( n*( n + 1 ) )/2 ). this is the packed matrix and the packing order is very specific, so listen up:
    • before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on.
    • before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on.
    • note that when DIAG = 'U' or 'u', the diagonal elements of A are not referenced, but are assumed to be unity. so don't stress about what's sitting on that diagonal, she's not even looking at it πŸ‘€
  • X β€” X is COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). before entry, the incremented array X must contain the n element right-hand side vector b. on exit, X is overwritten with the solution vector x. she replaces it. no copy, no take-backs, that's the deal πŸ’€
  • INCX β€” INCX is INTEGER. on entry, INCX specifies the increment for the elements of X. INCX must not be zero. fr fr. zero is not a vibe here.
⚠️ heads up bestie: INCX must not be zero, N must be at least zero, and the singularity check? not included. that one's on you. 😌

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

a whole collab. the avengers of numerical linear algebra, honestly 🌈


πŸ”₯ Further Details πŸ”₯

!>
!>  Level 2 Blas routine.
!>
!>  -- Written on 22-October-1986.
!>     Jack Dongarra, Argonne National Lab.
!>     Jeremy Du Croz, Nag Central Office.
!>     Sven Hammarling, Nag Central Office.
!>     Richard Hanson, Sandia National Labs.
!>

Level 2 Blas routine. written on 22-October-1986 by Jack Dongarra (Argonne National Lab), Jeremy Du Croz (Nag Central Office), Sven Hammarling (Nag Central Office) and Richard Hanson (Sandia National Labs). 1986!! she's vintage, she's a classic, she's been serving since before most of us existed and she still hits πŸ’…βœ¨


⭐ Definition ⭐

Definition at line 143 of file ctpsv.f.


🌷 Author (the other one) 🌷

Generated automatically by Doxygen for LAPACK from the source code. not a human, just a robot doing her little documentation thing, and honestly? she ate. πŸŽ€


k that's the whole page, mwah πŸ’‹ β€” this was LAPACK, Version 3.12.0, and the file is ctpsv.f(3), courtesy of our fave automatic doc generator. go solve your triangular systems responsibly, bestie. πŸ¦‹πŸ’–

πŸ“¦ where this page comes from