pub struct BlockPartition {
pub row_blocks: Vec<usize>,
pub col_blocks: Vec<usize>,
}Expand description
Block boundaries of a partitioned matrix: row_blocks and col_blocks
are boundary lists starting at 0 and ending at m, n (invariants
(B1)–(B3)).
use xingo_sparse::BlockPartition;
// [A | I] with A 3 × 5: one row block, structural then logical columns.
let p = BlockPartition::from_sizes(&[3], &[5, 3]).unwrap();
assert_eq!((p.n_rows(), p.n_cols()), (3, 8));
assert_eq!(p.col_block(1), 5..8);
assert_eq!(p.col_block_of(6), 1); // a logical column
// The augmented system [−D Aᵀ; A δI] of the same A: order 5 + 3.
let k = BlockPartition::new(vec![0, 5, 8], vec![0, 5, 8]).unwrap();
assert_eq!(k.row_block(1).start, 5); // the dual of constraint i is row 5 + iFields§
§row_blocks: Vec<usize>Row boundaries [0 = r_0 < r_1 < … < r_p = m].
col_blocks: Vec<usize>Column boundaries [0 = c_0 < c_1 < … < c_q = n].
Implementations§
Source§impl BlockPartition
impl BlockPartition
Sourcepub fn new(
row_blocks: Vec<usize>,
col_blocks: Vec<usize>,
) -> Result<Self, SparseError>
pub fn new( row_blocks: Vec<usize>, col_blocks: Vec<usize>, ) -> Result<Self, SparseError>
A partition from its boundary lists, validated ((B1)–(B3)).
Sourcepub fn from_sizes(
row_sizes: &[usize],
col_sizes: &[usize],
) -> Result<Self, SparseError>
pub fn from_sizes( row_sizes: &[usize], col_sizes: &[usize], ) -> Result<Self, SparseError>
A partition from the sizes of its blocks (prefix sums): [A | I]
with A of m × n is from_sizes(&[m], &[n, m]). An error if a
size is 0 (blocks are never empty) or a dimension exceeds
u32::MAX.
Sourcepub fn check_invariants(&self) -> Result<(), SparseError>
pub fn check_invariants(&self) -> Result<(), SparseError>
Checks (B1)–(B3).
Sourcepub fn n_row_blocks(&self) -> usize
pub fn n_row_blocks(&self) -> usize
Number of row blocks p.
Sourcepub fn n_col_blocks(&self) -> usize
pub fn n_col_blocks(&self) -> usize
Number of column blocks q.
Sourcepub fn row_block_of(&self, i: usize) -> usize
pub fn row_block_of(&self, i: usize) -> usize
Sourcepub fn col_block_of(&self, j: usize) -> usize
pub fn col_block_of(&self, j: usize) -> usize
Trait Implementations§
Source§impl Clone for BlockPartition
impl Clone for BlockPartition
Source§impl Debug for BlockPartition
impl Debug for BlockPartition
impl Eq for BlockPartition
Source§impl PartialEq for BlockPartition
impl PartialEq for BlockPartition
impl StructuralPartialEq for BlockPartition
Auto Trait Implementations§
impl Forget for BlockPartition
impl Freeze for BlockPartition
impl RefUnwindSafe for BlockPartition
impl Send for BlockPartition
impl Sync for BlockPartition
impl Unpin for BlockPartition
impl UnsafeUnpin for BlockPartition
impl UnwindSafe for BlockPartition
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more