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)β CHPR2subroutine dspr2 (uplo, n, alpha, x, incx, y, incy, ap)β DSPR2subroutine sspr2 (uplo, n, alpha, x, incx, y, incy, ap)β SSPR2subroutine 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,UPLOspecifies whether the upper or lower triangular part of the matrixAis supplied in the packed arrayAP, like this:UPLO = 'U'or'u'β the upper triangular part ofAis supplied inAP.UPLO = 'L'or'l'β the lower triangular part ofAis supplied inAP.
- N β
N is INTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero. (Zero is allowed! She can be tiny. π§) - ALPHA β
ALPHA is COMPLEX. On entry,ALPHAspecifies the scalar alpha. - X β
X is COMPLEX array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vector x. - INCX β
INCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. π« - Y β
Y is COMPLEX array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented arrayYmust contain the n element vector y. - INCY β
INCY is INTEGER. On entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero. π« - AP β
AP is COMPLEX array, dimension at least( ( n*( n + 1 ) )/2 ).- Before entry with
UPLO = 'U'or'u', the arrayAPmust contain the upper triangular part of the hermitian matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 1, 2 )anda( 2, 2 )respectively, and so on. On exit, the arrayAPis overwritten by the upper triangular part of the updated matrix. - Before entry with
UPLO = 'L'or'l', the arrayAPmust contain the lower triangular part of the hermitian matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 2, 1 )anda( 3, 1 )respectively, and so on. On exit, the arrayAPis 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. π«§
- Before entry with
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,UPLOspecifies whether the upper or lower triangular part of the matrixAis supplied in the packed arrayAP, as follows:UPLO = 'U'or'u'β the upper triangular part ofAis supplied inAP.UPLO = 'L'or'l'β the lower triangular part ofAis supplied inAP.
- N β
N is INTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero. - ALPHA β
ALPHA is DOUBLE PRECISION.On entry,ALPHAspecifies the scalar alpha. - X β
X is DOUBLE PRECISION array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vector x. - INCX β
INCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. π« - Y β
Y is DOUBLE PRECISION array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented arrayYmust contain the n element vector y. - INCY β
INCY is INTEGER. On entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero. π« - AP β
AP is DOUBLE PRECISION array, dimension at least( ( n*( n + 1 ) )/2 ).- Before entry with
UPLO = 'U'or'u', the arrayAPmust contain the upper triangular part of the symmetric matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 1, 2 )anda( 2, 2 )respectively, and so on. On exit, the arrayAPis overwritten by the upper triangular part of the updated matrix. - Before entry with
UPLO = 'L'or'l', the arrayAPmust contain the lower triangular part of the symmetric matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 2, 1 )anda( 3, 1 )respectively, and so on. On exit, the arrayAPis overwritten by the lower triangular part of the updated matrix.
- Before entry with
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,UPLOspecifies whether the upper or lower triangular part of the matrixAis supplied in the packed arrayAP, as follows:UPLO = 'U'or'u'β the upper triangular part ofAis supplied inAP.UPLO = 'L'or'l'β the lower triangular part ofAis supplied inAP.
- N β
N is INTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero. - ALPHA β
ALPHA is REAL. On entry,ALPHAspecifies the scalar alpha. - X β
X is REAL array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vector x. - INCX β
INCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. π« - Y β
Y is REAL array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented arrayYmust contain the n element vector y. - INCY β
INCY is INTEGER. On entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero. π« - AP β (...and this is exactly where part 1 runs out, bestie π β the
APdetails for SSPR2 are coming in part 2, don't leave me hanging) APβ okay bestie,APis 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 arrayAPmust contain the upper triangular part of the symmetric matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 1, 2 )anda( 2, 2 )respectively, and so on. On exit, the arrayAPis overwritten by the upper triangular part of the updated matrix. - Before entry with
UPLO = 'L' or 'l', the arrayAPmust contain the lower triangular part of the symmetric matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 2, 1 )anda( 3, 1 )respectively, and so on. On exit, the arrayAPis overwritten by the lower triangular part of the updated matrix.
- Before entry with
π«Ά 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βUPLOisCHARACTER*1. On entry,UPLOspecifies whether the upper or lower triangular part of the matrixAis supplied in the packed arrayAPas follows:UPLO = 'U' or 'u'β The upper triangular part ofAis supplied inAP.UPLO = 'L' or 'l'β The lower triangular part ofAis supplied inAP.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero. No cap.ALPHAβALPHAisCOMPLEX*16. On entry,ALPHAspecifies the scalaralpha. Iconic scalar behavior.XβXisCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vectorx.INCXβINCXisINTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. Do not try it.YβYisCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented arrayYmust contain the n element vectory.INCYβINCYisINTEGER. On entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero. Same energy: nope.APβAPisCOMPLEX*16array, dimension at least( ( n*( n + 1 ) )/2 ). The packed hermitian matrix lives here, bestie:- Before entry with
UPLO = 'U' or 'u', the arrayAPmust contain the upper triangular part of the hermitian matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 1, 2 )anda( 2, 2 )respectively, and so on. On exit, the arrayAPis overwritten by the upper triangular part of the updated matrix. - Before entry with
UPLO = 'L' or 'l', the arrayAPmust contain the lower triangular part of the hermitian matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 2, 1 )anda( 3, 1 )respectively, and so on. On exit, the arrayAPis 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!
- Before entry with
π«Ά 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
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms