Skip to content

Commit ed9186f

Browse files
committed
Move implementation details to docs, add FillArrays REQUIRE
1 parent 121e2f7 commit ed9186f

File tree

3 files changed

+55
-56
lines changed

3 files changed

+55
-56
lines changed

README.md

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ A Julia package for representing block-block-banded matrices and banded-block-ba
33

44
[![Build Status](https://travis-ci.org/JuliaMatrices/BlockBandedMatrices.jl.svg?branch=master)](https://travis-ci.org/JuliaMatrices/BlockBandedMatrices.jl)
55

6-
<!-- [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://JuliaMatrices.github.io/BlockBandedMatrices.jl/stable)
7-
[![](https://img.shields.io/badge/docs-latest-blue.svg)](https://JuliaMatrices.github.io/BlockBandedMatrices.jl/latest) -->
6+
<!-- [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://JuliaMatrices.github.io/BlockBandedMatrices.jl/stable)-->
7+
[![](https://img.shields.io/badge/docs-latest-blue.svg)](https://JuliaMatrices.github.io/BlockBandedMatrices.jl/latest)
88

99

1010

@@ -36,57 +36,3 @@ BandedBlockBandedMatrix(Zeros(sum(rows),sum(cols)), (rows,cols), (l,u), (λ,μ))
3636
BandedBlockBandedMatrix(Ones(sum(rows),sum(cols)), (rows,cols), (l,u), (λ,μ)) # creates a banded-block-banded matrix with ones in the non-zero entries
3737
BandedBlockBandedMatrix(I, (rows,cols), (l,u), (λ,μ))) # creates a banded-block-banded identity matrix
3838
```
39-
40-
41-
## Implementation
42-
43-
A `BlockBandedMatrix` stores the entries in a single vector, ordered by columns.
44-
For example, if `A` is a `BlockBandedMatrix` with block-bandwidths `(A.l,A.u) == (1,0)`
45-
and the block sizes `fill(2, N)` where `N = 3` is the number
46-
of row and column blocks, then `A` has zero structure
47-
```julia
48-
[ a_11 a_12
49-
a_21 a_22
50-
a_31 a_32 a_33 a_34
51-
a_41 a_42 a_43 a_44
52-
a_53 a_54
53-
a_63 a_64 ]
54-
```
55-
and is stored in memory via `A.data` as a single vector by columns, containing:
56-
```
57-
[a_11,a_21,a_31,a_41,a_12,a_22,a_32,a_42,a_33,a_43,a_53,a_63,a_34,a_44,a_54,a_64]
58-
```
59-
The reasoning behind this storage scheme as that each block still satisfies
60-
the strided matrix interface, but we can also use BLAS and LAPACK to, for example,
61-
upper-triangularize a block column all at once.
62-
63-
64-
A `BandedBlockBandedMatrix` stores the entries as a `PseudoBlockMatrix`,
65-
with the number of row blocks equal to `A.l + A.u + 1`, and the row
66-
block sizes are all `A.μ + A.λ + 1`. The column block sizes of the storage is
67-
the same as the the column block sizes of the `BandedBlockBandedMatrix`. This
68-
is a block-wise version of the storage of `BandedMatrix`.
69-
70-
For example, if `A` is a `BandedBlockBandedMatrix` with block-bandwidths `(A.l,A.u) == (1,0)`
71-
and subblock-bandwidths `(A.λ, A.μ) == (1,0)`, and the block sizes `fill(2, N)` where `N = 3` is the number
72-
of row and column blocks, then `A` has zero structure
73-
```julia
74-
[ a_11
75-
a_21 a_22
76-
a_31 a_33
77-
a_41 a_42 a_43 a_44
78-
a_53
79-
a_63 a_64 ]
80-
```
81-
and is stored in memory via `A.data` as a `PseudoBlockMatrix`, which has block sizes
82-
2 x 2, containing entries:
83-
```
84-
[a_11 a_22 a_33 a_44;
85-
a_21 X a_43 X ;
86-
a_31 a_42 a_53 a_64;
87-
a_41 X a_63 X ]
88-
```
89-
where `X` is an entry that is not used.
90-
91-
The reasoning behind this storage scheme as that each block still satisfies
92-
the banded matrix interface.

REQUIRE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ julia 0.6
22
BandedMatrices 0.4
33
BlockArrays 0.3.1
44
Compat 0.41
5+
FillArrays 0.0.2

docs/src/index.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,55 @@ subblockbandwidths
3030
subblockbandwidth
3131
```
3232

33+
## Implementation
34+
35+
A `BlockBandedMatrix` stores the entries in a single vector, ordered by columns.
36+
For example, if `A` is a `BlockBandedMatrix` with block-bandwidths `(A.l,A.u) == (1,0)`
37+
and the block sizes `fill(2, N)` where `N = 3` is the number
38+
of row and column blocks, then `A` has zero structure
39+
```julia
40+
[ a_11 a_12
41+
a_21 a_22
42+
a_31 a_32 a_33 a_34
43+
a_41 a_42 a_43 a_44
44+
a_53 a_54
45+
a_63 a_64 ]
46+
```
47+
and is stored in memory via `A.data` as a single vector by columns, containing:
48+
```
49+
[a_11,a_21,a_31,a_41,a_12,a_22,a_32,a_42,a_33,a_43,a_53,a_63,a_34,a_44,a_54,a_64]
50+
```
51+
The reasoning behind this storage scheme as that each block still satisfies
52+
the strided matrix interface, but we can also use BLAS and LAPACK to, for example,
53+
upper-triangularize a block column all at once.
54+
55+
56+
A `BandedBlockBandedMatrix` stores the entries as a `PseudoBlockMatrix`,
57+
with the number of row blocks equal to `A.l + A.u + 1`, and the row
58+
block sizes are all `A.μ + A.λ + 1`. The column block sizes of the storage is
59+
the same as the the column block sizes of the `BandedBlockBandedMatrix`. This
60+
is a block-wise version of the storage of `BandedMatrix`.
61+
62+
For example, if `A` is a `BandedBlockBandedMatrix` with block-bandwidths `(A.l,A.u) == (1,0)`
63+
and subblock-bandwidths `(A.λ, A.μ) == (1,0)`, and the block sizes `fill(2, N)` where `N = 3` is the number
64+
of row and column blocks, then `A` has zero structure
65+
```julia
66+
[ a_11
67+
a_21 a_22
68+
a_31 a_33
69+
a_41 a_42 a_43 a_44
70+
a_53
71+
a_63 a_64 ]
72+
```
73+
and is stored in memory via `A.data` as a `PseudoBlockMatrix`, which has block sizes
74+
2 x 2, containing entries:
75+
```
76+
[a_11 a_22 a_33 a_44;
77+
a_21 X a_43 X ;
78+
a_31 a_42 a_53 a_64;
79+
a_41 X a_63 X ]
80+
```
81+
where `X` is an entry that is not used.
82+
83+
The reasoning behind this storage scheme as that each block still satisfies
84+
the banded matrix interface.

0 commit comments

Comments
 (0)