pub struct MatBuild<L: LinAlgEx> { /* private fields */ }
Expand description
Matrix builder
Matrix struct which owns a Vec
of data array and is able to be converted as totsu_core::MatOp
.
This struct relies on dynamic heap allocation.
Implementations§
source§impl<L: LinAlgEx> MatBuild<L>
impl<L: LinAlgEx> MatBuild<L>
sourcepub fn size(&self) -> (usize, usize)
pub fn size(&self) -> (usize, usize)
Size of the matrix.
Returns a tuple of a number of rows and columns.
sourcepub fn as_op(&self) -> MatOp<'_, L>
pub fn as_op(&self) -> MatOp<'_, L>
Converted as totsu_core::MatOp
.
Returns the totsu_core::MatOp
borrowing the internal data array.
sourcepub fn is_sympack(&self) -> bool
pub fn is_sympack(&self) -> bool
Checks if symmetric packed.
Returns true
if MatType::SymPack
, false
otherwise.
sourcepub fn set_by_fn<M>(&mut self, func: M)where
M: FnMut(usize, usize) -> L::F,
pub fn set_by_fn<M>(&mut self, func: M)where
M: FnMut(usize, usize) -> L::F,
Data by a function.
func
takes a row and a column of the matrix and returns data of each element.
sourcepub fn by_fn<M>(self, func: M) -> Selfwhere
M: FnMut(usize, usize) -> L::F,
pub fn by_fn<M>(self, func: M) -> Selfwhere
M: FnMut(usize, usize) -> L::F,
Builder pattern of MatBuild::set_by_fn
.
sourcepub fn set_iter_colmaj<T, I>(&mut self, iter: T)where
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
pub fn set_iter_colmaj<T, I>(&mut self, iter: T)where
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
Data by an iterator in column-major.
iter
iterates matrix data in column-major.
sourcepub fn iter_colmaj<T, I>(self, iter: T) -> Selfwhere
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
pub fn iter_colmaj<T, I>(self, iter: T) -> Selfwhere
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
Builder pattern of MatBuild::set_iter_colmaj
.
sourcepub fn set_iter_rowmaj<T, I>(&mut self, iter: T)where
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
pub fn set_iter_rowmaj<T, I>(&mut self, iter: T)where
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
Data by an iterator in row-major.
iter
iterates matrix data in row-major.
sourcepub fn iter_rowmaj<T, I>(self, iter: T) -> Selfwhere
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
pub fn iter_rowmaj<T, I>(self, iter: T) -> Selfwhere
T: IntoIterator<Item = I>,
I: Deref<Target = L::F>,
Builder pattern of MatBuild::set_iter_rowmaj
.
sourcepub fn scale(self, alpha: L::F) -> Self
pub fn scale(self, alpha: L::F) -> Self
Builder pattern of MatBuild::set_scale
.
sourcepub fn set_scale_nondiag(&mut self, alpha: L::F)
pub fn set_scale_nondiag(&mut self, alpha: L::F)
Scales by \(\alpha\) except diagonal elements.
alpha
is a scalar \(\alpha\).
sourcepub fn scale_nondiag(self, alpha: L::F) -> Self
pub fn scale_nondiag(self, alpha: L::F) -> Self
Builder pattern of MatBuild::set_scale_nondiag
.
sourcepub fn set_reshape_colvec(&mut self)
pub fn set_reshape_colvec(&mut self)
Reshapes the internal data array as it is into a one-column matrix.
sourcepub fn reshape_colvec(self) -> Self
pub fn reshape_colvec(self) -> Self
Builder pattern of MatBuild::set_reshape_colvec
.
sourcepub fn set_sqrt(&mut self, eps_zero: L::F)
pub fn set_sqrt(&mut self, eps_zero: L::F)
Calculates and converts the matrix \(A\) to \(A^{\frac12}\).
The matrix shall belong to MatType::SymPack
.
eps_zero
should be the same value astotsu_core::solver::SolverParam::eps_zero
.
sourcepub fn sqrt(self, eps_zero: L::F) -> Self
pub fn sqrt(self, eps_zero: L::F) -> Self
Builder pattern of MatBuild::set_sqrt
.