SymmetricMullerNewtonSolver implements IRootsSolver { @Override public Complex[] roots() { Complex[] r = new Complex[m_roots.length * 2]; for (int i = 0; i < m_roots.length; ++i) { r[2 * i] = m_roots[i]; r[2 * i + 1] = m_roots[i].inv(); } return r; } SymmetricMullerNewtonSolver(); @Override void clear(); @Override SymmetricMullerNewtonSolver exemplar(); @Override boolean factorize(final Polynomial p); @Override Polynomial remainder(); @Override Complex[] roots(); Complex[] getStableRoots(); boolean isLeastSquaresDivision(); void setLeastSquaresDivision(boolean lq);  }
@Test public void test1() { BackFilter f=BackFilter.of(new double[]{1, -.2}); SymmetricFilter sf=SymmetricFilter.createFromFilter(f); SymmetricMullerNewtonSolver solver=new SymmetricMullerNewtonSolver(); Polynomial P = Polynomial.copyOf(sf.getWeights()); Complex[] roots = P.roots(solver); }
@Test public void test2() { BackFilter f1=BackFilter.of(new double[]{1, -.7, .1}); BackFilter f2=BackFilter.of(new double[]{1, .6, .5}); BackFilter f=f1.times(f2); SymmetricFilter sf=SymmetricFilter.createFromFilter(f); SymmetricMullerNewtonSolver solver=new SymmetricMullerNewtonSolver(); Polynomial P = Polynomial.copyOf(sf.getWeights()); Complex[] roots = P.roots(solver); }