DLAGTF(3)

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

πŸ’… NAME

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dlagtf.f

okay so real talk, this page is straight out of the Library Functions Manual (yes, that's the manual name, bestie, it's right there at the top of the file β€” dlagtf.f(3) if you're keeping score πŸŽ€), and it's literally just one subroutine's whole personality. Buckle up. ✨


πŸ¦‹ SYNOPSIS

Functions/Subroutines

  • subroutine DLAGTF (n, a, lambda, b, c, tol, d, in, info) β€” DLAGTF computes an LU factorization of a matrix T-Ξ»I, where T is a general tridiagonal matrix, and Ξ» a scalar, using partial pivoting with row interchanges. That's the whole vibe. πŸ’…

✨ Function/Subroutine Documentation ✨

subroutine DLAGTF (integer n, double precision, dimension( * ) a, double
    precision lambda, double precision, dimension( * ) b, double precision,
    dimension( * ) c, double precision tol, double precision, dimension( * )
    d, integer, dimension( * ) in, integer info)

DLAGTF computes an LU factorization of a matrix T-λI, where T is a general tridiagonal matrix, and λ a scalar, using partial pivoting with row interchanges. 🫢


πŸŽ€ Purpose

Okay so here's what it actually does: DLAGTF factorizes the matrix (T - lambda*I), where T is an n by n tridiagonal matrix and lambda is a scalar, as

T - lambda*I = PLU,

where P is a permutation matrix, L is a unit lower tridiagonal matrix with at most one non-zero sub-diagonal elements per column and U is an upper triangular matrix with at most two non-zero super-diagonal elements per column. (Yes β€” L gets at most one sub-diagonal, U gets at most two super-diagonals. Iconic asymmetry, no notes. πŸ‘‘)

The factorization is obtained by Gaussian elimination with partial pivoting and implicit row scaling. Lowkey the whole point. πŸ”₯

The parameter LAMBDA is included in the routine so that DLAGTF may be used, in conjunction with DLAGTS, to obtain eigenvectors of T by inverse iteration. That's the plot twist β€” lambda's whole reason for existing here. πŸ’–


🌸 Parameters

N

N is INTEGER β€” the order of the matrix T. That's it. That's her whole job. πŸŽ€

A

A is DOUBLE PRECISION array, dimension (N).

  • On entry, A must contain the diagonal elements of T.
  • On exit, A is overwritten by the n diagonal elements of the upper triangular matrix U of the factorization of T.

so like… it goes in as T's diagonal and comes out as U's diagonal. glow-up fr fr ✨

LAMBDA

LAMBDA is DOUBLE PRECISION β€” on entry, the scalar lambda. she's just a girl. πŸ’…

B

B is DOUBLE PRECISION array, dimension (N-1).

  • On entry, B must contain the (n-1) super-diagonal elements of T.
  • On exit, B is overwritten by the (n-1) super-diagonal elements of the matrix U of the factorization of T.

same energy, same overwrite, different matrix. πŸ¦‹

C

C is DOUBLE PRECISION array, dimension (N-1).

  • On entry, C must contain the (n-1) sub-diagonal elements of T.
  • On exit, C is overwritten by the (n-1) sub-diagonal elements of the matrix L of the factorization of T.

TOL

TOL is DOUBLE PRECISION β€” bestie, this one matters. 🚨

On entry, it's a relative tolerance used to indicate whether or not the matrix (T - lambda*I) is nearly singular. TOL should normally be chosen as approximately the largest relative error in the elements of T. For example, if the elements of T are correct to about 4 significant figures, then TOL should be set to about 5*10**(-4). If TOL is supplied as less than eps, where eps is the relative machine precision, then the value eps is used in place of TOL. so tiny tolerances get bumped up to eps, no negotiation. πŸ™ˆ

D

D is DOUBLE PRECISION array, dimension (N-2).

On exit, D is overwritten by the (n-2) second super-diagonal elements of the matrix U of the factorization of T. yes, second super-diagonal. she has layers. 🌈

IN

IN is INTEGER array, dimension (N).

On exit, IN contains details of the permutation matrix P. If an interchange occurred at the kth step of the elimination, then IN(k) = 1, otherwise IN(k) = 0. The element IN(n) returns the smallest positive integer j such that

abs( u(j,j) ) <= norm( (T - lambda*I)(j) )*TOL,

where norm( A(j) ) denotes the sum of the absolute values of the jth row of the matrix A. If no such j exists then IN(n) is returned as zero. If IN(n) is returned as positive, then a diagonal element of U is small, indicating that (T - lambda*I) is singular or nearly singular. ⚠️ that's your "she's singular bestie" alarm right there. πŸ’€

INFO

INFO is INTEGER:

  • = 0: successful exit πŸŽ‰
  • < 0: if INFO = -k, the kth argument had an illegal value 😭

πŸ‘‘ Author

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

Definition at line 155 of file dlagtf.f. (yes, line 155, we counted πŸ’…)


⭐ Author

Generated automatically by Doxygen for LAPACK from the source code. not a human, just vibes and a parser. 🧚


and that's the whole page, bestie β€” every flag, every overwrite, every dimension, nothing skipped, periodt. πŸ’œ

LAPACK β€” Version 3.12.0 β€” sign-off from /home/abui...RC/dlagtf.f(3), the Library Functions Manual. mwah. πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from