/home/abui...N/claror.f(3)

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

okay bestie, welcome to the /home/abui...N/claror.f(3) page from the Library Functions Manual πŸ’… this one is giving LAPACK test-matrix generator subroutine energy, and we're gonna get into it.

✨ NAME ✨

the name/identity situation here is the full source path, and it is:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/MATGEN/claror.f

🌸 SYNOPSIS 🌸

πŸ¦‹ Functions/Subroutines πŸ¦‹

subroutine CLAROR (side, init, m, n, a, lda, iseed, x, info)
    CLAROR

🧚 Function/Subroutine Documentation 🧚

the signature is literally this, no cap:

subroutine CLAROR (character side, character init, integer m, integer n,
    complex, dimension( lda, * ) a, integer lda, integer, dimension( 4 )
    iseed, complex, dimension( * ) x, integer info)
    CLAROR

πŸ’– Purpose πŸ’–

CLAROR pre- or post-multiplies an M by N matrix A by a random unitary matrix U, overwriting A. A may optionally be initialized to the identity matrix before multiplying by U. U is generated using the method of G.W. Stewart ( SIAM J. Numer. Anal. 17, 1980, pp. 403-409 ). this is the (BLAS-2 version) 🫢

πŸŽ€ Parameters πŸŽ€

πŸ¦‹ SIDE πŸ¦‹

SIDE is CHARACTER*1, and it says whether A is multiplied on the left or right by U. not modified ✨

the SIDE values are:

  • SIDE = 'L' β€” Multiply A on the left (premultiply) by U.
  • SIDE = 'R' β€” Multiply A on the right (postmultiply) by UC>… okay the raw page has a formatting gremlin runaway here, so I'm keeping the exact cursed block below instead of pretending it's cute.
  • SIDE = 'C' β€” Multiply A on the left by U and the right by UC> (the page literally says UC> here, I'm not fixing it).
  • SIDE = 'T' β€” Multiply A on the left by U and the right by U'.

verbatim raw lines, gremlins and all:

SIDE = 'L'   Multiply A on the left (premultiply) by U
SIDE = 'R'   Multiply A on the right (postmultiply) by UC>       SIDE = 'C'   Multiply A on the left by U and the right by UC>       SIDE = 'T'   Multiply A on the left by U and the right by U'

πŸŽ€ INIT πŸŽ€

INIT is CHARACTER*1, and it says whether or not A should be initialized to the identity matrix. not modified πŸ’…

  • INIT = 'I' β€” Initialize A to (a section of) the identity matrix before applying U.
  • INIT = 'N' β€” No initialization. Apply U to the input matrix A.

INIT = 'I' may be used to generate square (i.e., unitary) or rectangular orthogonal matrices (orthogonality being in the sense of CDOTC):

  • for square matrices, M=N, and the doc says SIDE many be either 'L' or 'R'; the rows will be orthogonal to each other, as will the columns.
  • for rectangular matrices where M < N, SIDE = 'R' will produce a dense matrix whose rows will be orthogonal and whose columns will not, while SIDE = 'L' will produce a matrix whose rows will be orthogonal, and whose first M columns will be orthogonal, the remaining columns being zero.
  • for matrices where M > N, just use the previous explanation, interchanging 'L' and 'R' and and . yes, that dangling and and . is literally in the page 😭

🌸 M 🌸

M is INTEGER β€” number of rows of A. not modified.

🌸 N 🌸

N is INTEGER β€” number of columns of A. not modified.

πŸ’œ A πŸ’œ

A is COMPLEX array, dimension ( LDA, N ) β€” input and output array. overwritten on exit by:

U A ( if SIDE = 'L' )
or by A U ( if SIDE = 'R' )
or by U A U* ( if SIDE = 'C')
or by U A U' ( if SIDE = 'T') on exit.

🌈 LDA 🌈

LDA is INTEGER β€” leading dimension of A. must be at least MAX ( 1, M ). not modified.

πŸ“ ISEED πŸ“

ISEED is INTEGER array, dimension ( 4 ).

on entry, ISEED specifies the seed of the random number generator. the array elements should be between 0 and 4095; if not, they will be reduced mod 4096. also, ISEED(4) must be odd. the random number generator uses a linear congruential sequence limited to small integers, and so should produce machine independent random numbers. the values of ISEED are changed on exit, and can be used in the next call to CLAROR to continue the same random number sequence. modified πŸ”₯

🧚 X 🧚

X is COMPLEX array, dimension ( 3*MAX( M, N ) ) β€” workspace. of length:

  • 2*M + N if SIDE = 'L',
  • 2*N + M if SIDE = 'R',
  • 3*N if SIDE = 'C' or 'T'.

modified.

πŸ‘‘ INFO πŸ‘‘

INFO is INTEGER β€” an error flag. it is set to:

  • 0 if no error.
  • 1 if CLARND returned a bad random number (installation problem).
  • -1 if SIDE is not L, R, C, or T.
  • -3 if M is negative.
  • -4 if N is negative or if SIDE is C or T and N is not equal to M.
  • -6 if LDA is less than M.

🫢 Author 🫢

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

🧾 Definition at line 157 of file claror.f. 🧾

that's the exact line-and-file situation: Definition at line 157 of file claror.f.

πŸ’… Author πŸ’…

the page's own generated-author note says: Generated automatically by Doxygen for LAPACK from the source code.


xoxo bestie, the footer says source/version LAPACK β€” Version 3.12.0 β€” and the page path /home/abui...N/claror.f(3) πŸ’–βœ¨ (no date line in this footer, just so you know).

πŸ“¦ where this page comes from