Major Functions

There are 3 major factorization functions, (although a fourth is in the wings). They are named after the person that conceived the starting idea for each algorithm. Chronologically they were conceived in this order:

lroots - Joe Pat Lindsey's grid search in polar coordinates algorithm.
broots - C. Sidney Burrus' argument randomization algorithm.
froots - James W. Fox's FFT argument selection algorithm. This is a generalization of broots. This is not included in this release of the software because its algorithm has not been published and because it does not work well unless the polynomial has almost all roots near the unit circle. Nonetheless, it succeeded in 1 out of 2 tries at factoring a million degree random coefficient polynomial.

There are also 3 testing functions,

tlroots(degree, random_seeds)
tbroots(degree, random_seeds)
tfroots(degree, random_seeds)

which automatically generates any number of real random coefficient polynomials of a fixed degree, and factors them. Eg. tlroots(1000,1:2000) generates and factors 2,000 polynomials of degree 1,000.

There are three phase unwrappers,

unwrapz(coeff, rts, [rtsError, [N]])
unwrapph(coeff)
unwrapm(coeff)

Unwrapz computes a polynomial's unwrapped phase from its roots. Unwrapm approximates a polynomial's unwrapped phase by repeatedly padding with zeros and using a traditional phase unwrapper until two phase estimates agree at the central frequency. Unwrapm can give incorrect results, but if it does, it will likely be more accurate than traditional phase unwrappers. Unwrapph is slower than unwrapm but usually provides more accurate results.