hpr2(3)

πŸ’… hpr2(3) β€” okay so this is the hpr2(3) page, bestie

It's from the Library Functions Manual, and it's about {hp,sp}r2 β€” the Hermitian/symmetric rank-2 update. Yes, that's a mouthful. No, it's not scary. Sit down, grab a strawberry πŸ“, we're doing linear algebra.

Heads up: this page is long, so it comes in 2 parts and this is part 1. Don't panic when it ends mid-thought β€” more is coming. 🫢

✨ NAME ✨

hpr2 β€” {hp,sp}r2: Hermitian/symmetric rank-2 update


🌸 SYNOPSIS 🌸

Functions

  • subroutine chpr2 (uplo, n, alpha, x, incx, y, incy, ap) β€” CHPR2
  • subroutine dspr2 (uplo, n, alpha, x, incx, y, incy, ap) β€” DSPR2
  • subroutine sspr2 (uplo, n, alpha, x, incx, y, incy, ap) β€” SSPR2
  • subroutine zhpr2 (uplo, n, alpha, x, incx, y, incy, ap) β€” ZHPR2

πŸ¦‹ Detailed Description πŸ¦‹

Bestie, this is where it all goes down. Below you get every single one of these four routines, broken down function by function, with their purposes, parameters, authors and the lore. πŸ’€


πŸ‘‘ Function Documentation πŸ‘‘

🌈 subroutine chpr2

subroutine chpr2 (character uplo, integer n, complex alpha, complex,
    dimension(*) x, integer incx, complex, dimension(*) y, integer incy,
    complex, dimension(*) ap)

CHPR2

Purpose:

!>
!> CHPR2  performs the hermitian rank 2 operation
!>
!>    A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
!>
!> where alpha is a scalar, x and y are n element vectors and A is an
!> n by n hermitian matrix, supplied in packed form.
!>

So iconic. The **H is the conjugate transpose, and conjg( alpha ) is doing its little conju-girlie thing β€” she's that girl. πŸ’…

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, like this:
    • UPLO = 'U' or 'u' β†’ the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β†’ the lower triangular part of A is supplied in AP.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. (Zero is allowed! She can be tiny. 🧚)
  • ALPHA β€” ALPHA is COMPLEX. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • Y β€” Y is COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫
  • AP β€” AP is COMPLEX array, dimension at least ( ( n*( n + 1 ) )/2 ).
    • Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the hermitian 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. On exit, the array AP is overwritten by the upper triangular part of the updated matrix.
    • Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the hermitian 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. On exit, the array AP is overwritten by the lower triangular part of the updated matrix.
    • Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero, and on exit they are set to zero. 🫧

Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

All of them. A whole committee. The group chat of Fortran. πŸ‘‘

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.
!>

1986!! They were doing this before most of us existed. Respect the elders. πŸ™

Definition at line 144 of file chpr2.f.


πŸ’œ subroutine dspr2

subroutine dspr2 (character uplo, integer n, double precision alpha, double
    precision, dimension(*) x, integer incx, double precision, dimension(*)
    y, integer incy, double precision, dimension(*) ap)

DSPR2

Purpose:

!>
!> DSPR2  performs the symmetric rank 2 operation
!>
!>    A := alpha*x*y**T + alpha*y*x**T + A,
!>
!> where alpha is a scalar, x and y are n element vectors and A is an
!> n by n symmetric matrix, supplied in packed form.
!>

Note the vibe shift: this one's symmetric, so it's **T (plain transpose) and alpha doesn't need a conjugate. Same energy, real-er numbers. ✨

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, as follows:
    • UPLO = 'U' or 'u' β†’ the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β†’ the lower triangular part of A is supplied in AP.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is DOUBLE PRECISION array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • Y β€” Y is DOUBLE PRECISION array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫
  • AP β€” AP is DOUBLE PRECISION array, dimension at least ( ( n*( n + 1 ) )/2 ).
    • Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric 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. On exit, the array AP is overwritten by the upper triangular part of the updated matrix.
    • Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the symmetric 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. On exit, the array AP is overwritten by the lower triangular part of the updated matrix.

Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

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.
!>

Definition at line 141 of file dspr2.f.


🌟 subroutine sspr2

subroutine sspr2 (character uplo, integer n, real alpha, real, dimension(*)
    x, integer incx, real, dimension(*) y, integer incy, real, dimension(*)
    ap)

SSPR2

Purpose:

!>
!> SSPR2  performs the symmetric rank 2 operation
!>
!>    A := alpha*x*y**T + alpha*y*x**T + A,
!>
!> where alpha is a scalar, x and y are n element vectors and A is an
!> n by n symmetric matrix, supplied in packed form.
!>

Same formula as DSPR2, just single precision this time β€” the lowkey version, but she still eats. πŸ”₯

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, as follows:
    • UPLO = 'U' or 'u' β†’ the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β†’ the lower triangular part of A is supplied in AP.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫
  • AP β€” (...and this is exactly where part 1 runs out, bestie 😭 β€” the AP details for SSPR2 are coming in part 2, don't leave me hanging)
  • AP β€” okay bestie, AP is a REAL array, dimension at least ( ( n*( n + 1 ) )/2 ). This is the packed-matrix moment, and the packing rules are very specific, so:
    • Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric 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. On exit, the array AP is overwritten by the upper triangular part of the updated matrix.
    • Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the symmetric 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. On exit, the array AP is overwritten by the lower triangular part of the updated matrix.

🫢 Author 🫢

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

✨ 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.

Definition at line 141 of file sspr2.f.

   subroutine zhpr2 (character uplo, integer n, complex*16 alpha, complex*16,
       dimension(*) x, integer incx, complex*16, dimension(*) y, integer incy,
       complex*16, dimension(*) ap)

πŸ’œ ZHPR2 πŸ’œ

πŸŽ€ Purpose: πŸŽ€

Okay so ZHPR2 performs the hermitian rank 2 operation

A := alpha*x*y**H + conjg( alpha )*y*x**H + A,

where alpha is a scalar, x and y are n element vectors and A is an n by n hermitian matrix, supplied in packed form. Periodt. πŸ’…

🌸 Parameters 🌸

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β€” The upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β€” The lower triangular part of A is supplied in AP.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. No cap.
  • ALPHA β€” ALPHA is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. Iconic scalar behavior.
  • X β€” X is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Do not try it.
  • Y β€” Y is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Same energy: nope.
  • AP β€” AP is COMPLEX*16 array, dimension at least ( ( n*( n + 1 ) )/2 ). The packed hermitian matrix lives here, bestie:
    • Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the hermitian 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. On exit, the array AP is overwritten by the upper triangular part of the updated matrix.
    • Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the hermitian 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. On exit, the array AP is overwritten by the lower triangular part of the updated matrix.
    • Heads up: Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero, and on exit they are set to zero. Important vibe check!

🫢 Author 🫢

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

✨ 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.

Definition at line 144 of file zhpr2.f.

🫢 Author 🫢

Generated automatically by Doxygen for LAPACK from the source code.


Footer vibe check, bestie: source/version is LAPACK, Version 3.12.0, and the page is hpr2(3). The footer doesn't include a separate date line, so we're not inventing one β€” honest and iconic. πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from