ZUPMTR(3)

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

πŸ’… ZUPMTR(3) β€” like, the Library Functions Manual page for zupmtr.f πŸŽ€

okay bestie, so this is the manual page for /home/abui...RC/zupmtr.f(3) from the Library Functions Manual, and it is genuinely so iconic of LAPACK to name a file and then make that the NAME section. we love a self-titled queen. πŸ‘‘


✨ SYNOPSIS ✨

Functions/Subroutines πŸ¦‹

subroutine ZUPMTR (side, uplo, trans, m, n, ap, tau, c, ldc, work, info)

ZUPMTR β€” that's it, that's the whole description. main character energy fr.


πŸ’– Function/Subroutine Documentation πŸ’–

subroutine ZUPMTR (character side, character uplo, character trans, integer
    m, integer n, complex*16, dimension( * ) ap, complex*16, dimension( * )
    tau, complex*16, dimension( ldc, * ) c, integer ldc, complex*16,
    dimension( * ) work, integer info)

ZUPMTR πŸ‘‘

Purpose 🎯

fortran !> !> ZUPMTR overwrites the general complex M-by-N matrix C with !> !> SIDE = 'L' SIDE = 'R' !> TRANS = 'N': Q * C C * Q !> TRANS = 'C': Q**H * C C * Q**H !> !> where Q is a complex unitary matrix of order nq, with nq = m if !> SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of !> nq-1 elementary reflectors, as returned by ZHPTRD using packed !> storage: !> !> if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1); !> !> if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1). !>

so basically: it takes your matrix C (complex, M-by-N) and replaces it with Q*C, Q**H*C, C*Q, or C*Q**H depending on SIDE and TRANS. and Q? Q is a complex unitary matrix of order nq β€” where nq = m if SIDE = 'L' and nq = n if SIDE = 'R' β€” built from nq-1 elementary reflectors that ZHPTRD handed you earlier in packed storage. it's giving "we already did the hard part, this is just the glow-up." ✨

and the order matters, bestie β€” no cap:

  • if UPLO = 'U', then Q = H(nq-1) . . . H(2) H(1);
  • if UPLO = 'L', then Q = H(1) H(2) . . . H(nq-1).

Parameters 🌸

  • SIDE β€” SIDE is CHARACTER*1. it decides which side Q swings in from:
    • = 'L': apply Q or Q**H from the Left;
    • = 'R': apply Q or Q**H from the Right.
  • UPLO β€” UPLO is CHARACTER*1. tells us which triangular packed storage your precious previous call to ZHPTRD used:
    • = 'U': Upper triangular packed storage used in previous call to ZHPTRD;
    • = 'L': Lower triangular packed storage used in previous call to ZHPTRD.
  • TRANS β€” TRANS is CHARACTER*1. the transpose vibe check:
    • = 'N': No transpose, apply Q;
    • = 'C': Conjugate transpose, apply Q**H.
  • M β€” M is INTEGER. the number of rows of the matrix C. M >= 0. (zero rows? valid. slay.)
  • N β€” N is INTEGER. the number of columns of the matrix C. N >= 0.
  • AP β€” AP is COMPLEX*16 array, dimension
(M*(M+1)/2) if SIDE = 'L'
(N*(N+1)/2) if SIDE = 'R'

these are the vectors which define the elementary reflectors, as returned by ZHPTRD. heads up tho: AP is modified by the routine but restored on exit. so it gets messed with and then puts itself back together. resilience. πŸ’…

  • TAU β€” TAU is COMPLEX*16 array, dimension (M-1) if SIDE = 'L' or (N-1) if SIDE = 'R'. TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by ZHPTRD. iykyk.
  • C β€” C is COMPLEX*16 array, dimension (LDC,N). on entry, the M-by-N matrix C. on exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. it does not survive the transformation, bestie, it becomes the transformation. πŸ¦‹
  • LDC β€” LDC is INTEGER. the leading dimension of the array C. LDC >= max(1,M). respect the constraint or perish.
  • WORK β€” WORK is COMPLEX*16 array, dimension
(N) if SIDE = 'L'
(M) if SIDE = 'R'

workspace. give it a little room to breathe. 🫢

  • INFO β€” INFO is INTEGER. the receipts:
    • = 0: successful exit 🌈
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ’€

Author ✍️

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

Definition πŸ“

Definition at line 148 of file zupmtr.f.


Author (the meta one) πŸ™ˆ

Generated automatically by Doxygen for LAPACK from the source code. no human hands touched this prose, which honestly explains a lot.


πŸ’€ fr fr warning: that WORK array sizing and those LDC >= max(1,M) / M >= 0 / N >= 0 constraints are not decoration. violate them and INFO will come back negative and point at exactly which argument you disrespected.

okay that's the whole page, you ate that πŸ“βœ¨

πŸŽ€ ~ LAPACK, Version 3.12.0 ~ πŸŽ€

signed off from /home/abui...RC/zupmtr.f(3) β€” luv u, go call ZHPTRD first πŸ’œ

πŸ“¦ where this page comes from