Packed storage matrix

A packed storage matrix, also known as packed matrix, is a term used in programming for representing an matrix. It is a more compact way than an m-by-n rectangular array by exploiting a special structure of the matrix.

Typical examples of matrices that can take advantage of packed storage include:

Code examples (Fortran)

Both of the following storage schemes are used extensively in BLAS and LAPACK.

An example of packed storage for hermitian matrix:

complex:: A(n,n) ! a hermitian matrix
complex:: AP(n*(n+1)/2) ! packed storage for A
! the lower triangle of A is stored column-by-column in AP.
! unpacking the matrix AP to A
do j=1,n
  k = j*(j-1)/2
  A(1:j,j) = AP(1+k:j+k)
  A(j,1:j-1) = conjg(AP(1+k:j-1+k))
end do

An example of packed storage for banded matrix:

real:: A(m,n) ! a banded matrix with kl subdiagonals and ku superdiagonals
real:: AP(-kl:ku,n) ! packed storage for A
! the band of A is stored column-by-column in AP. Some elements of AP are unused.
! unpacking the matrix AP to A
do j=1,n
  forall(i=max(1,j-kl):min(m,j+ku)) A(i,j) = AP(i-j,j)
end do
print *,AP(0,:) ! the diagonal
gollark: ++delete NZ$4
gollark: They utilize something something apiotreeß.
gollark: Apparently `Rope`s are a good way to represent text which needs to be edited lots.
gollark: ++delete `Text`
gollark: OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES OH BEES
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.