pub fn new_perm<N>(mat: CsMatViewI<N, I>,
                       perm: PermOwnedI<I>
                      ) -> LdlSymbolic<I>
    where N: Copy + PartialEq,
          I: SpIndex,
    {
        let n = mat.cols();
        assert!(mat.rows() == n, "matrix should be square");
        let mut l_colptr = vec![I::zero(); n+1];
        let mut parents = linalg::etree::ParentsOwned::new(n);
        let mut l_nz = vec![I::zero(); n];
        let mut flag_workspace = vec![I::zero(); n];
        ldl_symbolic(mat,
                     &perm,
                     &mut l_colptr,
                     parents.view_mut(),
                     &mut l_nz,
                     &mut flag_workspace,
                     SymmetryCheck::CheckSymmetry);

        LdlSymbolic {
            colptr: l_colptr,
            parents: parents,
            nz: l_nz,
            flag_workspace: flag_workspace,
            perm: perm,
        }
    }
/// Compute the symbolic decomposition L D L^T = P A P^T
/// where P is a permutation matrix.
///
/// Using a good permutation matrix can reduce the non-zero count in L,
/// thus making the decomposition and the solves faster.
///
/// # Panics
///
/// * if mat is not symmetric
Compute the symbolic decomposition L D L^T = P A P^T
where P is a permutation matrix.

Using a good permutation matrix can reduce the non-zero count in L,
thus making the decomposition and the solves faster.
Compute the symbolic decomposition L D L^T = P A P^T where P is a permutation matrix . Using a good permutation matrix can reduce the non - zero count in L thus making the decomposition and the solves faster .
pub fn new_perm<N>(mat: CsMatViewI<N, I>,
                       perm: PermOwnedI<I>
                      ) -> LdlSymbolic<I>
    where N: Copy + PartialEq,
          I: SpIndex,
    {
        let n = mat.cols();
        assert!(mat.rows() == n, "matrix should be square");
        let mut l_colptr = vec![I::zero(); n+1];
        let mut parents = linalg::etree::ParentsOwned::new(n);
        let mut l_nz = vec![I::zero(); n];
        let mut flag_workspace = vec![I::zero(); n];
        ldl_symbolic(mat,
                     &perm,
                     &mut l_colptr,
                     parents.view_mut(),
                     &mut l_nz,
                     &mut flag_workspace,
                     SymmetryCheck::CheckSymmetry);
        LdlSymbolic {
            colptr: l_colptr,
            parents: parents,
            nz: l_nz,
            flag_workspace: flag_workspace,
            perm: perm,
        }
    }
pub fn new_perm < N > ( mat : CsMatViewI < N , I > , perm : PermOwnedI < I > ) -> LdlSymbolic < I > where N : Copy + PartialEq , I : SpIndex , { let n = mat . cols ( ) ; assert ! ( mat rows ( ) n " " ) ; let mut l_colptr = vec ! [ I zero ( ) n 1 ] ; let mut parents = linalg :: etree :: ParentsOwned :: new ( n ) ; let mut l_nz = vec ! [ I zero ( ) n ] ; let mut flag_workspace = vec ! [ I zero ( ) n ] ; ldl_symbolic ( mat , & perm , & mut l_colptr , parents . view_mut ( ) , & mut l_nz , & mut flag_workspace , SymmetryCheck :: CheckSymmetry ) ; LdlSymbolic { colptr : l_colptr , parents : parents , nz : l_nz , flag_workspace : flag_workspace , perm : perm , } }
Compute the symbolic decomposition L D L^T = P A P^T
where P is a permutation matrix.
Compute the symbolic decomposition L D L^T = P A P^T where P is a permutation matrix .
mat
CsMatViewI<N, I>
perm
PermOwnedI<I>
mat
CsMatViewI<N, I>
perm
PermOwnedI<I>
panics
if mat is not symmetric
if mat is not symmetric