/home/abui...D/dlatzm.f(3)

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

πŸ’… dlatzm.f β€” from the LAPACK Library Functions Manual ✨

Okay bestie, so this whole file lives at:

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

and yeah, you clocked it β€” that path literally has DEPRECATED in it. That's not me being shady, that's just the truth of it 🫢


✨ NAME ✨

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

That's it, that's the name, the whole entire thing, no notes πŸ’€ (LAPACK manpages name things by their path, it's giving "my legal name is my social security number" energy)


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine DLATZM (side, m, n, v, incv, tau, c1, c2, ldc, work) β€” that's our girl. DLATZM. Say it with your chest.

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

subroutine DLATZM (character side, integer m, integer n, double precision,
    dimension( * ) v, integer incv, double precision tau, double precision,
    dimension( ldc, * ) c1, double precision, dimension( ldc, * ) c2,
    integer ldc, double precision, dimension( * ) work)

DLATZM. Again. For the people in the back πŸ“£

πŸ’– Purpose πŸ’–

⚠️ Okay so first things first, and I need you to hear me: this routine is deprecated and has been replaced by routine DORMRZ. She's retired, she's living her best life in the DEPRECATED folder, and you should probably be calling DORMRZ instead. But she still shows up to the function, and the facts are the facts, so let's learn her πŸ’…

DLATZM applies a Householder matrix generated by DTZRQF to a matrix.

Let

P = I - tau*u*u**T,   u = ( 1 ),
                            ( v )

where v is an (m-1) vector if SIDE = 'L', or a (n-1) vector if SIDE = 'R'.

If SIDE equals 'L', let

       C = [ C1 ] 1
           [ C2 ] m-1
             n

Then C is overwritten by P*C.

If SIDE equals 'R', let

       C = [ C1, C2 ] m
              1  n-1

Then C is overwritten by C*P.

Not her doing a little glow-up on your matrix. Iconic behavior, no cap 🌸


πŸ‘‘ Parameters πŸ‘‘

⭐ SIDE

SIDE is CHARACTER*1 - = 'L': form P * C - = 'R': form C * P

Pick a side bestie, literally β€” left or right, those are the only two options πŸ¦‹

⭐ M

M is INTEGER The number of rows of the matrix C.

Rows. The up-and-down ones. You got this 🫢

⭐ N

N is INTEGER The number of columns of the matrix C.

Columns. The side-to-side ones. Slay ✨

⭐ V

V is DOUBLE PRECISION array, dimension fortran (1 + (M-1)*abs(INCV)) if SIDE = 'L' (1 + (N-1)*abs(INCV)) if SIDE = 'R' The vector v in the representation of P. V is not used if TAU = 0.

Little side note, and I mean this gently: if TAU = 0, V is quite literally not even looked at. She's off the clock 😌

⭐ INCV

INCV is INTEGER The increment between elements of v. INCV <> 0

The stride, the skip, the "how far apart are we walking." And yes, INCV is not allowed to be 0 β€” that's a hard no πŸ™ˆ

⭐ TAU

TAU is DOUBLE PRECISION The value tau in the representation of P.

The scalar. The moment. The tau. πŸ’œ

⭐ C1

C1 is DOUBLE PRECISION array, dimension fortran (LDC,N) if SIDE = 'L' (M,1) if SIDE = 'R' On entry, the n-vector C1 if SIDE = 'L', or the m-vector C1 if SIDE = 'R'. On exit, the first row of P*C if SIDE = 'L', or the first column of C*P if SIDE = 'R'.

In she goes, out she comes. Main character energy, truly πŸ‘‘

⭐ C2

C2 is DOUBLE PRECISION array, dimension fortran (LDC, N) if SIDE = 'L' (LDC, N-1) if SIDE = 'R' On entry, the (m - 1) x n matrix C2 if SIDE = 'L', or the m x (n - 1) matrix C2 if SIDE = 'R'. On exit, rows 2:m of P*C if SIDE = 'L', or columns 2:m of C*P if SIDE = 'R'.

C2 is the supporting actress and honestly she's carrying the whole scene. Also note the exit description says columns 2:m of C*P for SIDE = 'R' β€” I'm just the messenger, writing it exactly as the source says it 😭

⭐ LDC

LDC is INTEGER The leading dimension of the arrays C1 and C2. LDC >= (1,M)

The leading dimension, i.e. how wide the array actually is in memory. Hard requirement bestie: LDC >= (1,M). No negotiating πŸ’€

⭐ WORK

WORK is DOUBLE PRECISION array, dimension fortran (N) if SIDE = 'L' (M) if SIDE = 'R'

Scratch space. Everybody needs a little room to think 🌈


🌸 Author 🌸

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

Four institutions, one subroutine. Group project that actually got finished, we love to see it πŸ”₯


🧚 Definition at line 150 of file dlatzm.f.

Yeah. Line 150. You want to go read it yourself, she's right there πŸ“


⭐ Author (again, yes, really) ⭐

Generated automatically by Doxygen for LAPACK from the source code.

It wasn't even hand-written, the robots did this one. Not me being shady, that's just what the manpage says πŸ’…


That's the whole tea, bestie β€” deprecated queen, Householder matrix, DORMRZ is the successor, go in peace 🫢

LAPACK Β· Version 3.12.0 Β· /home/abui...D/dlatzm.f(3) β€” mwah, that's the sign-off, see you at the next man page πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from