# symbfact

Symbolic factorization analysis

## Syntax

```count = symbfact(A) count = symbfact(A,'sym') count = symbfact(A,'col') count = symbfact(A,'row') count = symbfact(A,'lo') [count,h,parent,post,R] = symbfact(...) [count,h,parent,post,L] = symbfact(A,type,'lower') ```

## Description

`count = symbfact(A)` returns the vector of row counts of `R=chol(A)`. `symbfact` should be much faster than `chol`(`A`).

`count = symbfact(A,'sym')` is the same as `count = symbfact(A)`.

`count = symbfact(A,'col')` returns row counts of `R=chol(A'*A)` (without forming it explicitly).

`count = symbfact(A,'row')` returns row counts of `R=chol(A*A')`.

`count = symbfact(A,'lo')` is the same as `count = symbfact(A)` and uses `tril(A)`.

`[count,h,parent,post,R] = symbfact(...)` has several optional return values.

The flop count for a subsequent Cholesky factorization is `sum(count.^2)`

Return ValueDescription
`h`

Height of the elimination tree

`parent`

The elimination tree itself

`post`

Postordering of the elimination tree

`R`

0-1 matrix having the structure of `chol(A)` for the symmetric case, `chol(A'*A)` for the `'col'` case, or `chol(A*A')` for the `'row'` case.

`symbfact(A)` and `symbfact(A,'sym')` use the upper triangular part of `A (triu(A))` and assume the lower triangular part is the transpose of the upper triangular part. `symbfact(A,'lo')` uses `tril(A)` instead.

`[count,h,parent,post,L] = symbfact(A,type,'lower')` where `type` is one of `'sym'`,`'col'`, `'row'`, or`'lo'` returns a lower triangular symbolic factor `L=R'`. This form is quicker and requires less memory.