Shape Type Selectors
A banded shape matrix is one in which nonzero matrix elements only
appear within a ``band'' of a matrix. The bandwidth of a matrix is
described by the number of diagonals in the band that are below the
main diagonal, refered to as the sub diagonals, and the number
of diagonals in the band above the main diagonal, refered to as the
super diagonals. The following is an example of a matrix with a
bandwidth of (1,2).
[ 1 2 3 0 0 ]
[ 4 5 6 7 0 ]
[ 0 8 9 10 11 ]
[ 0 0 12 13 14 ]
[ 0 0 0 15 16 ]
There are many storage types that can be used to efficiently
represent banded matrices. The MTL storage types that can be
used are banded, packed, banded_view,
and array. Here are some examples of creating
banded matrix types:
typedef matrix < double,
banded<>,
packed<>,
column_major >::type BLAS_Packed;
typedef matrix < double,
banded<>,
banded<>,
column_major >::type BLAS_Banded;
Storage Type Selectors
banded is also the type selectors for the banded storage format.
This storage format is equivalent to the banded storage used in the
BLAS and LAPACK. Similar to the dense storage format, a
single contiguous chunk of memory is allocated. The banded storage
format maps the bands of the matrix to a twodarray of dimension (sub
+ super + 1) by min(M, N + sub). In MTL the 2D array can be row or
column major (for the BLAS it is always column major). The twodarray
is then in turn mapped the the linear memory space of the single chunk
of memory. The following is an example banded matrix with the mapping
to the rowmajor and columnmajor 2D arrays. The x's represent
memory locations that are not used.
[ 1 2 3 0 0 0 ]
[ 4 5 6 7 0 0 ]
[ 0 8 9 10 11 0 ]
[ 0 0 12 13 14 15 ]
[ 0 0 0 16 17 18 ]
[ 0 0 0 0 19 20 ]
rowmajor
[ 1 2 3 x ]
[ 4 5 6 7 ]
[ 8 9 10 11 ]
[ 12 13 14 15 ]
[ x 16 17 18 ]
[ x x 19 20 ]
columnmajor
[ x x 3 7 11 15 ]
[ x 2 6 10 14 18 ]
[ 1 5 9 13 17 20 ]
[ 4 8 12 16 19 x ]

Member

Where defined

Description

size_type



enum
{ id = BAND, oned_id, uplo, ext=MemLoc, M=0, N=0, issparse=0, index }



