def test_dup_isolate_complex_roots_sqf(): f = [1, -2, 3] assert dup_isolate_complex_roots_sqf(f, ZZ) == \ [((0, 0), (6, 6)), ((0, -6), (6, 0))] assert dup_isolate_complex_roots_sqf(f, ZZ, eps=QQ(1,10)) == \ [((QQ(15,16), QQ(45,32)), (QQ(33,32), QQ(3,2))), ((QQ(15,16), -QQ(3,2)), (QQ(33,32), -QQ(45,32)))] assert dup_isolate_complex_roots_sqf(f, ZZ, eps=QQ(1,100)) == \ [((QQ(255,256), QQ(723,512)), (QQ(513,512), QQ(363,256))), ((QQ(255,256), -QQ(363,256)), (QQ(513,512), -QQ(723,512)))] f = [7, -19, 20, 17, 20] assert dup_isolate_complex_roots_sqf(f, ZZ) == \ [((-QQ(40,7), 0), (0, QQ(40,7))), ((-QQ(40,7), -QQ(40,7)), (0, 0)), ((0, 0), (QQ(40,7), QQ(40,7))), ((0, -QQ(40,7)), (QQ(40,7), 0))]
def test_dup_isolate_complex_roots_sqf(): f = [1, -2, 3] assert dup_isolate_complex_roots_sqf(f, ZZ) == \ [((0, -6), (6, 0)), ((0, 0), (6, 6))] assert [ r.as_tuple() for r in dup_isolate_complex_roots_sqf(f, ZZ, blackbox=True) ] == \ [((0, -6), (6, 0)), ((0, 0), (6, 6))] assert dup_isolate_complex_roots_sqf(f, ZZ, eps=QQ(1,10)) == \ [((QQ(15,16), -QQ(3,2)), (QQ(33,32), -QQ(45,32))), ((QQ(15,16), QQ(45,32)), (QQ(33,32), QQ(3,2)))] assert dup_isolate_complex_roots_sqf(f, ZZ, eps=QQ(1,100)) == \ [((QQ(255,256), -QQ(363,256)), (QQ(513,512), -QQ(723,512))), ((QQ(255,256), QQ(723,512)), (QQ(513,512), QQ(363,256)))] f = [7, -19, 20, 17, 20] assert dup_isolate_complex_roots_sqf(f, ZZ) == \ [((-QQ(40,7), -QQ(40,7)), (0, 0)), ((-QQ(40,7), 0), (0, QQ(40,7))), ((0, -QQ(40,7)), (QQ(40,7), 0)), ((0, 0), (QQ(40,7), QQ(40,7)))]
def _get_complexes_sqf(cls, factor): """Compute complex root isolating intervals for a square-free polynomial. """ if factor in _complexes_cache: complex_part = _complexes_cache[factor] else: _complexes_cache[factor] = complex_part = \ dup_isolate_complex_roots_sqf( factor.rep.rep, factor.rep.dom, blackbox=True) return complex_part
def _get_complexes_sqf(cls, factor): """Get complex root isolating intervals for a square-free factor.""" if factor in _complexes_cache: complex_part = _complexes_cache[factor] else: _complexes_cache[factor] = complex_part = \ dup_isolate_complex_roots_sqf( factor.rep.rep, factor.rep.dom, blackbox=True) return complex_part
def _rootof_get_complexes_sqf(factor): """Compute complex isolating intervals for a square-free polynomial. """ if factor in _rootof_complexes_cache: complex_part = _rootof_complexes_cache[factor] else: _rootof_complexes_cache[factor] = complex_part = \ dup_isolate_complex_roots_sqf(factor.rep.rep, factor.rep.dom, blackbox=True) return complex_part
def _get_complexes_sqf(cls, currentfactor, use_cache=True): """Get complex root isolating intervals for a square-free factor.""" if use_cache and currentfactor in _complexes_cache: complex_part = _complexes_cache[currentfactor] else: _complexes_cache[currentfactor] = complex_part = \ dup_isolate_complex_roots_sqf( currentfactor.rep.rep, currentfactor.rep.dom, blackbox=True) return complex_part
def test_dup_isolate_complex_roots_sqf(): f = ZZ.map([1, -2, 3]) assert dup_isolate_complex_roots_sqf(f, ZZ) == \ [((0, -6), (6, 0)), ((0, 0), (6, 6))] assert [ r.as_tuple() for r in dup_isolate_complex_roots_sqf( f, ZZ, blackbox=True) ] == \ [((0, -6), (6, 0)), ((0, 0), (6, 6))] assert dup_isolate_complex_roots_sqf(f, ZZ, eps=QQ(1, 10)) == \ [((QQ(15, 16), -QQ(3, 2)), (QQ(33, 32), -QQ(45, 32))), ((QQ(15, 16), QQ(45, 32)), (QQ(33, 32), QQ(3, 2)))] assert dup_isolate_complex_roots_sqf(f, ZZ, eps=QQ(1, 100)) == \ [((QQ(255, 256), -QQ(363, 256)), (QQ(513, 512), -QQ(723, 512))), ((QQ(255, 256), QQ(723, 512)), (QQ(513, 512), QQ(363, 256)))] f = ZZ.map([7, -19, 20, 17, 20]) assert dup_isolate_complex_roots_sqf(f, ZZ) == \ [((-QQ(40, 7), -QQ(40, 7)), (0, 0)), ((-QQ(40, 7), 0), (0, QQ(40, 7))), ((0, -QQ(40, 7)), (QQ(40, 7), 0)), ((0, 0), (QQ(40, 7), QQ(40, 7)))]