class MullerNewtonSolver implements IRootsSolver {

    @VisibleForTesting
    static Complex computeDiscr(Complex B2, Complex A2, Complex C2) {
        double re0, re1;
        double im0, im1;
        /* { B2 B2 * } */
        re0 = B2.getRe() * B2.getRe() - B2.getIm() * B2.getIm();
        im0 = B2.getRe() * B2.getIm() + B2.getIm() * B2.getRe();
        /* { A2 C2 * } */
        re1 = A2.getRe() * C2.getRe() - A2.getIm() * C2.getIm();
        im1 = A2.getRe() * C2.getIm() + A2.getIm() * C2.getRe();
        /* { 4 * } */
        re1 *= 4;
        im1 *= 4;
        /* { - } */
        re0 -= re1;
        im0 -= im1;
        /* .build() */
        return Complex.cart(re0, im0);
    }

    public  MullerNewtonSolver();

}