Example #1
0
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)))]
Example #3
0
 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
Example #4
0
 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
Example #5
0
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
Example #6
0
 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
Example #7
0
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)))]