Exemplo n.º 1
0
def test_measure():
    a = Symbol('a', extended_real=True)

    assert Interval(1, 3).measure == 2
    assert Interval(0, a).measure == a
    assert Interval(1, a).measure == a - 1

    assert Union(Interval(1, 2), Interval(3, 4)).measure == 2
    assert Union(Interval(1, 2), Interval(3, 4), FiniteSet(5, 6, 7)).measure \
        == 2

    assert FiniteSet(1, 2, oo, a, -oo, -5).measure == 0

    assert S.EmptySet.measure == 0

    square = Interval(0, 10) * Interval(0, 10)
    offsetsquare = Interval(5, 15) * Interval(5, 15)
    band = Interval(-oo, oo) * Interval(2, 4)

    assert square.measure == offsetsquare.measure == 100
    assert (square + offsetsquare).measure == 175  # there is some overlap
    assert (square - offsetsquare).measure == 75
    assert (square * FiniteSet(1, 2, 3)).measure == 0
    assert (square.intersection(band)).measure == 20
    assert (square + band).measure == oo
    assert (band * FiniteSet(1, 2, 3)).measure == nan
Exemplo n.º 2
0
def test_reduce_rational_inequalities_real_relational():
    assert reduce_rational_inequalities([], x) is false
    assert reduce_rational_inequalities(
        [[(x**2 + 3*x + 2)/(x**2 - 16) >= 0]], x, relational=False) == \
        Union(Interval.open(-oo, -4), Interval(-2, -1), Interval.open(4, oo))

    assert reduce_rational_inequalities(
        [[((-2*x - 10)*(3 - x))/((x**2 + 5)*(x - 2)**2) < 0]], x,
        relational=False) == \
        Union(Interval.open(-5, 2), Interval.open(2, 3))

    assert reduce_rational_inequalities([[(x + 1)/(x - 5) <= 0]], x,
                                        relational=False) == \
        Interval.Ropen(-1, 5)

    assert reduce_rational_inequalities([[(x**2 + 4*x + 3)/(x - 1) > 0]], x,
                                        relational=False) == \
        Union(Interval.open(-3, -1), Interval.open(1, oo))

    assert reduce_rational_inequalities([[(x**2 - 16)/(x - 1)**2 < 0]], x,
                                        relational=False) == \
        Union(Interval.open(-4, 1), Interval.open(1, 4))

    assert reduce_rational_inequalities([[(3*x + 1)/(x + 4) >= 1]], x,
                                        relational=False) == \
        Union(Interval.open(-oo, -4), Interval.Ropen(Rational(3, 2), oo))

    assert reduce_rational_inequalities([[(x - 8)/x <= 3 - x]], x,
                                        relational=False) == \
        Union(Interval.Lopen(-oo, -2), Interval.Lopen(0, 4))
Exemplo n.º 3
0
def test_complement():
    assert Interval(0, 1).complement(S.Reals) == \
        Union(Interval(-oo, 0, True, True), Interval(1, oo, True, True))
    assert Interval(0, 1, True, False).complement(S.Reals) == \
        Union(Interval(-oo, 0, True, False), Interval(1, oo, True, True))
    assert Interval(0, 1, False, True).complement(S.Reals) == \
        Union(Interval(-oo, 0, True, True), Interval(1, oo, False, True))
    assert Interval(0, 1, True, True).complement(S.Reals) == \
        Union(Interval(-oo, 0, True, False), Interval(1, oo, False, True))

    assert S.UniversalSet.complement(S.EmptySet) == S.EmptySet
    assert S.UniversalSet.complement(S.Reals) == S.EmptySet
    assert S.UniversalSet.complement(S.UniversalSet) == S.EmptySet

    assert S.EmptySet.complement(S.Reals) == S.Reals

    assert Union(Interval(0, 1), Interval(2, 3)).complement(S.Reals) == \
        Union(Interval(-oo, 0, True, True), Interval(1, 2, True, True),
              Interval(3, oo, True, True))

    assert FiniteSet(0).complement(S.Reals) ==  \
        Union(Interval(-oo, 0, True, True), Interval(0, oo, True, True))

    assert (FiniteSet(5) + Interval(-oo,
                                    0)).complement(S.Reals) == \
        Interval(0, 5, True, True) + Interval(5, oo, True, True)

    assert FiniteSet(1, 2, 3).complement(S.Reals) == \
        Interval(-oo, 1, True, True) + \
        Interval(1, 2, True, True) + Interval(2, 3, True, True) +\
        Interval(3, oo, True, True)

    assert FiniteSet(x).complement(S.Reals) == Complement(S.Reals, FiniteSet(x))

    assert FiniteSet(0, x).complement(S.Reals) == Complement(Interval(-oo, 0, True, True) +
                                                             Interval(0, oo, True, True),
                                                             FiniteSet(x), evaluate=False)

    square = Interval(0, 1) * Interval(0, 1)
    notsquare = square.complement(S.Reals*S.Reals)

    assert all(pt in square for pt in [(0, 0), (.5, .5), (1, 0), (1, 1)])
    assert not any(
        pt in notsquare for pt in [(0, 0), (.5, .5), (1, 0), (1, 1)])
    assert not any(pt in square for pt in [(-1, 0), (1.5, .5), (10, 10)])
    assert all(pt in notsquare for pt in [(-1, 0), (1.5, .5), (10, 10)])
Exemplo n.º 4
0
def test_union():
    assert Union(Interval(1, 2), Interval(2, 3)) == Interval(1, 3)
    assert Union(Interval(1, 2), Interval(2, 3, True)) == Interval(1, 3)
    assert Union(Interval(1, 3), Interval(2, 4)) == Interval(1, 4)
    assert Union(Interval(1, 2), Interval(1, 3)) == Interval(1, 3)
    assert Union(Interval(1, 3), Interval(1, 2)) == Interval(1, 3)
    assert Union(Interval(1, 3, False, True), Interval(1, 2)) == \
        Interval(1, 3, False, True)
    assert Union(Interval(1, 3), Interval(1, 2, False, True)) == Interval(1, 3)
    assert Union(Interval(1, 2, True), Interval(1, 3)) == Interval(1, 3)
    assert Union(Interval(1, 2, True), Interval(1, 3, True)) == \
        Interval(1, 3, True)
    assert Union(Interval(1, 2, True), Interval(1, 3, True, True)) == \
        Interval(1, 3, True, True)
    assert Union(Interval(1, 2, True, True), Interval(1, 3, True)) == \
        Interval(1, 3, True)
    assert Union(Interval(1, 3), Interval(2, 3)) == Interval(1, 3)
    assert Union(Interval(1, 3, False, True), Interval(2, 3)) == \
        Interval(1, 3)
    assert Union(Interval(1, 2, False, True), Interval(2, 3, True)) != \
        Interval(1, 3)
    assert Union(Interval(1, 2), S.EmptySet) == Interval(1, 2)
    assert Union(S.EmptySet) == S.EmptySet

    assert Union(Interval(0, 1), [FiniteSet(1.0/n) for n in range(1, 10)]) == \
        Interval(0, 1)

    assert Interval(1, 2).union(Interval(2, 3)) == \
        Interval(1, 2) + Interval(2, 3)

    assert Interval(1, 2).union(Interval(2, 3)) == Interval(1, 3)

    assert Union(Set()) == Set()

    assert FiniteSet(1) + FiniteSet(2) + FiniteSet(3) == FiniteSet(1, 2, 3)
    assert FiniteSet('ham') + FiniteSet('eggs') == FiniteSet('ham', 'eggs')
    assert FiniteSet(1, 2, 3) + S.EmptySet == FiniteSet(1, 2, 3)

    assert FiniteSet(1, 2, 3) & FiniteSet(2, 3, 4) == FiniteSet(2, 3)
    assert FiniteSet(1, 2, 3) | FiniteSet(2, 3, 4) == FiniteSet(1, 2, 3, 4)

    assert S.EmptySet | FiniteSet(x, FiniteSet(y, z)) == \
        FiniteSet(x, FiniteSet(y, z))

    # Test that Intervals and FiniteSets play nicely
    assert Interval(1, 3) + FiniteSet(2) == Interval(1, 3)
    assert Interval(1, 3, True, True) + FiniteSet(3) == \
        Interval(1, 3, True, False)
    X = Interval(1, 3) + FiniteSet(5)
    Y = Interval(1, 2) + FiniteSet(3)
    XandY = X.intersect(Y)
    assert 2 in X and 3 in X and 3 in XandY
    assert XandY.is_subset(X) and XandY.is_subset(Y)

    pytest.raises(TypeError, lambda: Union(1, 2, 3))

    assert X.is_iterable is False

    # issue 7843
    assert Union(S.EmptySet,
                 FiniteSet(-sqrt(-I),
                           sqrt(-I))) == FiniteSet(-sqrt(-I), sqrt(-I))
Exemplo n.º 5
0
def test_piecewise():
    # In each case, test eval() the lambdarepr() to make sure there are a
    # correct number of parentheses. It will give a SyntaxError if there aren't.

    h = "lambda x: "

    p = Piecewise((x, True), evaluate=False)
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((x) if (True) else None)"

    p = Piecewise((x, x < 0))
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((x) if (x < 0) else None)"

    p = Piecewise((1, x < 1), (2, x < 2), (0, True))
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((1) if (x < 1) else (((2) if (x < 2) else " \
        "(((0) if (True) else None)))))"

    p = Piecewise(
        (1, x < 1),
        (2, x < 2),
    )
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((1) if (x < 1) else (((2) if (x < 2) else None)))"

    p = Piecewise(
        (x, x < 1),
        (x**2, Interval(3, 4, True, False).contains(x)),
        (0, True),
    )
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((x) if (x < 1) else (((x**2) if (((x <= 4) and " \
        "(x > 3))) else (((0) if (True) else None)))))"

    p = Piecewise((x**2, x < 0), (x, Interval(0, 1, False, True).contains(x)),
                  (2 - x, x >= 1), (0, True))
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((x**2) if (x < 0) else (((x) if (((x >= 0) and (x < 1))) " \
        "else (((-x + 2) if (x >= 1) else (((0) if (True) else None)))))))"

    p = Piecewise(
        (x**2, x < 0),
        (x, Interval(0, 1, False, True).contains(x)),
        (2 - x, x >= 1),
    )
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((x**2) if (x < 0) else (((x) if (((x >= 0) and " \
        "(x < 1))) else (((-x + 2) if (x >= 1) else None)))))"

    p = Piecewise((1, x >= 1), (2, x >= 2), (3, x >= 3), (4, x >= 4),
                  (5, x >= 5), (6, True))
    l = lambdarepr(p)
    eval(h + l)
    assert l == (
        "((1) if (x >= 1) else (((2) if (x >= 2) else (((3) if "
        "(x >= 3) else (((4) if (x >= 4) else (((5) if (x >= 5) else (((6) if "
        "(True) else None)))))))))))")

    p = Piecewise((1, x <= 1), (2, x <= 2), (3, x <= 3), (4, x <= 4),
                  (5, x <= 5), (6, True))
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((1) if (x <= 1) else (((2) if (x <= 2) else (((3) if " \
        "(x <= 3) else (((4) if (x <= 4) else (((5) if (x <= 5) else (((6) if " \
        "(True) else None)))))))))))"

    p = Piecewise((1, x > 1), (2, x > 2), (3, x > 3), (4, x > 4), (5, x > 5),
                  (6, True))
    l = lambdarepr(p)
    eval(h + l)
    assert l == (
        "((1) if (x > 1) else (((2) if (x > 2) else (((3) if "
        "(x > 3) else (((4) if (x > 4) else (((5) if (x > 5) else (((6) if "
        "(True) else None)))))))))))")

    p = Piecewise((1, x < 1), (2, x < 2), (3, x < 3), (4, x < 4), (5, x < 5),
                  (6, True))
    l = lambdarepr(p)
    eval(h + l)
    assert l == "((1) if (x < 1) else (((2) if (x < 2) else (((3) if " \
        "(x < 3) else (((4) if (x < 4) else (((5) if (x < 5) else (((6) if " \
        "(True) else None)))))))))))"
Exemplo n.º 6
0
def test_sympyissue_8777():
    x = symbols('x')
    assert And(x > 2, x < oo).as_set() == Interval(2, oo, True, True)
    assert And(x >= 1, x < oo).as_set() == Interval(1, oo, False, True)
    assert (x < oo).as_set() == Interval(-oo, oo, True, True)
    assert (x > -oo).as_set() == Interval(-oo, oo, True, True)
Exemplo n.º 7
0
def test_SymmetricDifference():
    assert str(SymmetricDifference(Interval(2, 3), Interval(3, 4), evaluate=False)) == \
        'SymmetricDifference([2, 3], [3, 4])'
Exemplo n.º 8
0
def test_uniformsum():
    n = Symbol("n", integer=True)

    X = UniformSum('x', n)
    assert X.pspace.domain.set == Interval(0, n)
Exemplo n.º 9
0
def test_piecewise_integrate():
    x, y = symbols('x y', real=True)

    # XXX Use '<=' here! '>=' is not yet implemented ..
    f = Piecewise(((x - 2)**2, 0 <= x), (1, True))
    assert integrate(f, (x, -2, 2)) == Rational(14, 3)

    g = Piecewise(((x - 5)**5, 4 <= x), (f, True))
    assert integrate(g, (x, -2, 2)) == Rational(14, 3)
    assert integrate(g, (x, -2, 5)) == Rational(43, 6)

    g = Piecewise(((x - 5)**5, 4 <= x), (f, x < 4))
    assert integrate(g, (x, -2, 2)) == Rational(14, 3)
    assert integrate(g, (x, -2, 5)) == Rational(43, 6)

    g = Piecewise(((x - 5)**5, 2 <= x), (f, x < 2))
    assert integrate(g, (x, -2, 2)) == Rational(14, 3)
    assert integrate(g, (x, -2, 5)) == -Rational(701, 6)

    g = Piecewise(((x - 5)**5, 2 <= x), (f, True))
    assert integrate(g, (x, -2, 2)) == Rational(14, 3)
    assert integrate(g, (x, -2, 5)) == -Rational(701, 6)

    g = Piecewise(((x - 5)**5, 2 <= x), (2 * f, True))
    assert integrate(g, (x, -2, 2)) == 2 * Rational(14, 3)
    assert integrate(g, (x, -2, 5)) == -Rational(673, 6)

    g = Piecewise((1, x > 0), (0, Eq(x, 0)), (-1, x < 0))
    assert integrate(g, (x, -1, 1)) == 0

    g = Piecewise((1, x - y < 0), (0, True))
    assert integrate(g, (y, -oo, 0)) == -Min(0, x)
    assert integrate(g, (y, 0, oo)) == oo - Max(0, x)
    assert integrate(g, (y, -oo, oo)) == oo - x

    g = Piecewise((0, x < 0), (x, x <= 1), (1, True))
    assert integrate(g, (x, -5, 1)) == Rational(1, 2)
    assert integrate(g, (x, -5, y)).subs({y: 1}) == Rational(1, 2)
    assert integrate(g, (x, y, 1)).subs({y: -5}) == Rational(1, 2)
    assert integrate(g, (x, 1, -5)) == -Rational(1, 2)
    assert integrate(g, (x, 1, y)).subs({y: -5}) == -Rational(1, 2)
    assert integrate(g, (x, y, -5)).subs({y: 1}) == -Rational(1, 2)
    assert integrate(g, (x, -5, y)) == Piecewise(
        (0, y < 0), (y**2 / 2, y <= 1), (y - 0.5, True))
    assert integrate(g, (x, y, 1)) == Piecewise(
        (0.5, y < 0), (0.5 - y**2 / 2, y <= 1), (1 - y, True))

    g = Piecewise((1 - x, Interval(0, 1).contains(x)),
                  (1 + x, Interval(-1, 0).contains(x)), (0, True))
    assert integrate(g, (x, -5, 1)) == 1
    assert integrate(g, (x, -5, y)).subs({y: 1}) == 1
    assert integrate(g, (x, y, 1)).subs({y: -5}) == 1
    assert integrate(g, (x, 1, -5)) == -1
    assert integrate(g, (x, 1, y)).subs({y: -5}) == -1
    assert integrate(g, (x, y, -5)).subs({y: 1}) == -1
    assert integrate(g, (x, -5, y)) == Piecewise(
        (-y**2 / 2 + y + 0.5, Interval(0, 1).contains(y)),
        (y**2 / 2 + y + 0.5, Interval(-1, 0).contains(y)), (0, y <= -1),
        (1, True))
    assert integrate(g, (x, y, 1)) == Piecewise(
        (y**2 / 2 - y + 0.5, Interval(0, 1).contains(y)),
        (-y**2 / 2 - y + 0.5, Interval(-1, 0).contains(y)), (1, y <= -1),
        (0, True))

    g = Piecewise((0, Or(x <= -1, x >= 1)), (1 - x, x > 0), (1 + x, True))
    assert integrate(g, (x, -5, 1)) == 1
    assert integrate(g, (x, -5, y)).subs({y: 1}) == 1
    assert integrate(g, (x, y, 1)).subs({y: -5}) == 1
    assert integrate(g, (x, 1, -5)) == -1
    assert integrate(g, (x, 1, y)).subs({y: -5}) == -1
    assert integrate(g, (x, y, -5)).subs({y: 1}) == -1
    assert integrate(g, (x, -5, y)) == Piecewise((0, y <= -1), (1, y >= 1),
                                                 (-y**2 / 2 + y + 0.5, y > 0),
                                                 (y**2 / 2 + y + 0.5, True))
    assert integrate(g, (x, y, 1)) == Piecewise((1, y <= -1), (0, y >= 1),
                                                (y**2 / 2 - y + 0.5, y > 0),
                                                (-y**2 / 2 - y + 0.5, True))
Exemplo n.º 10
0
def test_interior():
    assert Interval(0, 1, False, True).interior == Interval(0, 1, True, True)
Exemplo n.º 11
0
def test_image_interval():
    x = Symbol('x', extended_real=True)
    a = Symbol('a', extended_real=True)
    assert imageset(x, 2 * x, Interval(-2, 1)) == Interval(-4, 2)
    assert imageset(x, 2*x, Interval(-2, 1, True, False)) == \
        Interval(-4, 2, True, False)
    assert imageset(x, x**2, Interval(-2, 1, True, False)) == \
        Interval(0, 4, False, True)
    assert imageset(x, x**2, Interval(-2, 1)) == Interval(0, 4)
    assert imageset(x, x**2, Interval(-2, 1, True, False)) == \
        Interval(0, 4, False, True)
    assert imageset(x, x**2, Interval(-2, 1, True, True)) == \
        Interval(0, 4, False, True)
    assert imageset(x, (x - 2)**2, Interval(1, 3)) == Interval(0, 1)
    assert imageset(x, 3*x**4 - 26*x**3 + 78*x**2 - 90*x, Interval(0, 4)) == \
        Interval(-35, 0)  # Multiple Maxima
    assert imageset(x, x + 1/x, Interval(-oo, oo)) == Interval(-oo, -2) \
        + Interval(2, oo)  # Single Infinite discontinuity
    assert imageset(x, 1/x + 1/(x - 1)**2, Interval(0, 2, True, False)) == \
        Interval(Rational(3, 2), oo, False, True)  # Multiple Infinite discontinuities

    # Test for Python lambda
    assert imageset(lambda x: 2 * x, Interval(-2, 1)) == Interval(-4, 2)

    assert (imageset(Lambda(x, a * x),
                     Interval(0, 1)) == ImageSet(Lambda(x, a * x),
                                                 Interval(0, 1)))

    assert (imageset(Lambda(x, sin(cos(x))),
                     Interval(0, 1)) == ImageSet(Lambda(x, sin(cos(x))),
                                                 Interval(0, 1)))
Exemplo n.º 12
0
def test_Interval_free_symbols():
    # issue 6211
    assert Interval(0, 1).free_symbols == set()
    x = Symbol('x', extended_real=True)
    assert Interval(0, x).free_symbols == {x}
Exemplo n.º 13
0
def test_Union_of_ProductSets_shares():
    line = Interval(0, 2)
    points = FiniteSet(0, 1, 2)
    assert Union(line * line, line * points) == line * line
Exemplo n.º 14
0
def test_product_basic():
    H, T = 'H', 'T'
    unit_line = Interval(0, 1)
    d6 = FiniteSet(1, 2, 3, 4, 5, 6)
    d4 = FiniteSet(1, 2, 3, 4)
    coin = FiniteSet(H, T)

    square = unit_line * unit_line

    assert (0, 0) in square
    assert 0 not in square
    assert (H, T) in coin**2
    assert (.5, .5, .5) in square * unit_line
    assert (H, 3, 3) in coin * d6 * d6
    HH, TT = sympify(H), sympify(T)
    assert set(coin**2) == {(HH, HH), (HH, TT), (TT, HH), (TT, TT)}

    assert (d4 * d4).is_subset(d6 * d6)

    assert (square.complement(Interval(-oo, oo) * Interval(-oo, oo)) == Union(
        (Interval(-oo, 0, True, True) + Interval(1, oo, True, True)) *
        Interval(-oo, oo),
        Interval(-oo, oo) *
        (Interval(-oo, 0, True, True) + Interval(1, oo, True, True))))

    assert (Interval(-5, 5)**3).is_subset(Interval(-10, 10)**3)
    assert not (Interval(-10, 10)**3).is_subset(Interval(-5, 5)**3)
    assert not (Interval(-5, 5)**2).is_subset(Interval(-10, 10)**3)

    assert (Interval(.2, .5) * FiniteSet(.5)).is_subset(
        square)  # segment in square

    assert len(coin * coin * coin) == 8
    assert len(S.EmptySet * S.EmptySet) == 0
    assert len(S.EmptySet * coin) == 0
    pytest.raises(TypeError, lambda: len(coin * Interval(0, 2)))
Exemplo n.º 15
0
def test_Intersection_as_relational():
    assert (Intersection(Interval(0, 1), FiniteSet(2),
                         evaluate=False).as_relational(x) == And(
                             And(Le(0, x), Le(x, 1)), Eq(x, 2)))
Exemplo n.º 16
0
def test_Union_as_relational():
    assert (Interval(0, 1) + FiniteSet(2)).as_relational(x) == \
        Or(And(Le(0, x), Le(x, 1)), Eq(x, 2))
    assert (Interval(0, 1, True, True) + FiniteSet(1)).as_relational(x) == \
        And(Lt(0, x), Le(x, 1))
Exemplo n.º 17
0
def test_Interval_is_right_unbounded():
    assert Interval(3, 4).is_right_unbounded is False
    assert Interval(3, oo).is_right_unbounded is True
    assert Interval(3, Float("+inf")).is_right_unbounded is True
Exemplo n.º 18
0
def test_closure():
    assert Interval(0, 1, False, True).closure == Interval(0, 1, False, False)
Exemplo n.º 19
0
def test_image_Union():
    x = Symbol('x', extended_real=True)
    assert (imageset(x, x**2,
                     Interval(-2, 0) + FiniteSet(1, 2, 3)) == Interval(0, 4) +
            FiniteSet(9))
Exemplo n.º 20
0
def test_issue_9956():
    assert Union(Interval(-oo, oo), FiniteSet(1)) == Interval(-oo, oo)
    assert Interval(-oo, oo).contains(1) is S.true
Exemplo n.º 21
0
def test_issue_5724_7680():
    assert I not in S.Reals  # issue 7680
    assert Interval(-oo, oo).contains(I) is S.false
Exemplo n.º 22
0
def test_sample():
    z = Symbol('z')
    Z = ContinuousRV(z, exp(-z), set=Interval(0, oo))
    assert sample(Z) in Z.pspace.domain.set
    sym, val = list(Z.pspace.sample().items())[0]
    assert sym == Z and val in Interval(0, oo)
Exemplo n.º 23
0
def test_boundary():
    assert FiniteSet(1).boundary == FiniteSet(1)
    assert all(
        Interval(0, 1, left_open, right_open).boundary == FiniteSet(0, 1)
        for left_open in (true, false) for right_open in (true, false))
Exemplo n.º 24
0
def test_sympyissue_6194():
    assert Contains(x, Interval(0, 1)) == (x >= 0) & (x <= 1)
    assert Contains(x, FiniteSet(0)) != false
    assert Contains(x, Interval(1, 1)) != false
    assert Contains(x, S.Integers) != false
Exemplo n.º 25
0
def test_boundary_Union():
    assert (Interval(0, 1) + Interval(2, 3)).boundary == FiniteSet(0, 1, 2, 3)
    assert ((Interval(0, 1, False, True) +
             Interval(1, 2, True, False)).boundary == FiniteSet(0, 1, 2))

    assert (Interval(0, 1) + FiniteSet(2)).boundary == FiniteSet(0, 1, 2)
    assert (Union(Interval(0, 10), Interval(5, 15),
                  evaluate=False).boundary == FiniteSet(0, 15))

    assert (Union(Interval(0, 10), Interval(0, 1),
                  evaluate=False).boundary == FiniteSet(0, 10))
    assert (Union(Interval(0, 10, True, True),
                  Interval(10, 15, True, True),
                  evaluate=False).boundary == FiniteSet(0, 10, 15))
Exemplo n.º 26
0
def test_multivariate_bool_as_set():
    x, y = symbols('x,y')

    assert And(x >= 0, y >= 0).as_set() == Interval(0, oo)*Interval(0, oo)
    assert Or(x >= 0, y >= 0).as_set() == S.Reals*S.Reals - \
        Interval(-oo, 0, True, True)*Interval(-oo, 0, True, True)
Exemplo n.º 27
0
def test_union_boundary_of_joining_sets():
    """ Testing the boundary of unions is a hard problem """
    assert (Union(Interval(0, 10), Interval(10, 15),
                  evaluate=False).boundary == FiniteSet(0, 15))
Exemplo n.º 28
0
def test_sympyissue_8975():
    x = symbols('x')
    assert Or(And(-oo < x, x <= -2), And(2 <= x, x < oo)).as_set() == \
        Interval(-oo, -2, True) + Interval(2, oo, False, True)
Exemplo n.º 29
0
def test_interval_symbolic():
    e = Interval(0, 1)
    assert e.contains(x) == And(0 <= x, x <= 1)
    pytest.raises(TypeError, lambda: x in e)
    e = Interval(0, 1, True, True)
    assert e.contains(x) == And(0 < x, x < 1)
Exemplo n.º 30
0
def test_boundary_ProductSet_line():
    line_in_r2 = Interval(0, 1) * FiniteSet(0)
    assert line_in_r2.boundary == line_in_r2
Exemplo n.º 31
0
def test_Interval_as_relational():
    x = Symbol('x')
    assert Interval(-1, 2, False, False).as_relational(x) == \
        And(Le(-1, x), Le(x, 2))
    assert Interval(-1, 2, True, False).as_relational(x) == \
        And(Lt(-1, x), Le(x, 2))
    assert Interval(-1, 2, False, True).as_relational(x) == \
        And(Le(-1, x), Lt(x, 2))
    assert Interval(-1, 2, True, True).as_relational(x) == \
        And(Lt(-1, x), Lt(x, 2))

    assert Interval(-oo, 2, right_open=False).as_relational(x) == And(
        Le(-oo, x), Le(x, 2))
    assert Interval(-oo, 2, right_open=True).as_relational(x) == And(
        Le(-oo, x), Lt(x, 2))

    assert Interval(-2, oo, left_open=False).as_relational(x) == And(
        Le(-2, x), Le(x, oo))
    assert Interval(-2, oo, left_open=True).as_relational(x) == And(
        Lt(-2, x), Le(x, oo))

    assert Interval(-oo, oo).as_relational(x) == And(Le(-oo, x), Le(x, oo))

    x = Symbol('x', extended_real=True)
    y = Symbol('y', extended_real=True)
    assert Interval(x, y).as_relational(x) == (x <= y)
    assert Interval(y, x).as_relational(x) == (y <= x)
Exemplo n.º 32
0
def test_is_open():
    assert not Interval(0, 1, False, False).is_open
    assert not Interval(0, 1, True, False).is_open
    assert Interval(0, 1, True, True).is_open
    assert not FiniteSet(1, 2, 3).is_open
Exemplo n.º 33
0
def test_is_closed():
    assert Interval(0, 1, False, False).is_closed
    assert not Interval(0, 1, True, False).is_closed
    assert FiniteSet(1, 2, 3).is_closed
Exemplo n.º 34
0
def test_union():
    assert Union(Interval(1, 2), Interval(2, 3)) == Interval(1, 3)
    assert Union(Interval(1, 2), Interval(2, 3, True)) == Interval(1, 3)
    assert Union(Interval(1, 3), Interval(2, 4)) == Interval(1, 4)
    assert Union(Interval(1, 2), Interval(1, 3)) == Interval(1, 3)
    assert Union(Interval(1, 3), Interval(1, 2)) == Interval(1, 3)
    assert Union(Interval(1, 3, False, True), Interval(1, 2)) == \
        Interval(1, 3, False, True)
    assert Union(Interval(1, 3), Interval(1, 2, False, True)) == Interval(1, 3)
    assert Union(Interval(1, 2, True), Interval(1, 3)) == Interval(1, 3)
    assert Union(Interval(1, 2, True), Interval(1, 3, True)) == \
        Interval(1, 3, True)
    assert Union(Interval(1, 2, True), Interval(1, 3, True, True)) == \
        Interval(1, 3, True, True)
    assert Union(Interval(1, 2, True, True), Interval(1, 3, True)) == \
        Interval(1, 3, True)
    assert Union(Interval(1, 3), Interval(2, 3)) == Interval(1, 3)
    assert Union(Interval(1, 3, False, True), Interval(2, 3)) == \
        Interval(1, 3)
    assert Union(Interval(1, 2, False, True), Interval(2, 3, True)) != \
        Interval(1, 3)
    assert Union(Interval(1, 2), S.EmptySet) == Interval(1, 2)
    assert Union(S.EmptySet) == S.EmptySet

    assert Union(Interval(0, 1), [FiniteSet(1.0/n) for n in range(1, 10)]) == \
        Interval(0, 1)

    assert Interval(1, 2).union(Interval(2, 3)) == \
        Interval(1, 2) + Interval(2, 3)

    assert Interval(1, 2).union(Interval(2, 3)) == Interval(1, 3)

    assert Union(Set()) == Set()

    assert FiniteSet(1) + FiniteSet(2) + FiniteSet(3) == FiniteSet(1, 2, 3)
    assert FiniteSet('ham') + FiniteSet('eggs') == FiniteSet('ham', 'eggs')
    assert FiniteSet(1, 2, 3) + S.EmptySet == FiniteSet(1, 2, 3)

    assert FiniteSet(1, 2, 3) & FiniteSet(2, 3, 4) == FiniteSet(2, 3)
    assert FiniteSet(1, 2, 3) | FiniteSet(2, 3, 4) == FiniteSet(1, 2, 3, 4)

    assert S.EmptySet | FiniteSet(x, FiniteSet(y, z)) == \
        FiniteSet(x, FiniteSet(y, z))

    # Test that Intervals and FiniteSets play nicely
    assert Interval(1, 3) + FiniteSet(2) == Interval(1, 3)
    assert Interval(1, 3, True, True) + FiniteSet(3) == \
        Interval(1, 3, True, False)
    X = Interval(1, 3) + FiniteSet(5)
    Y = Interval(1, 2) + FiniteSet(3)
    XandY = X.intersection(Y)
    assert 2 in X and 3 in X and 3 in XandY
    assert XandY.is_subset(X) and XandY.is_subset(Y)

    pytest.raises(TypeError, lambda: Union(1, 2, 3))

    assert X.is_iterable is False
    Z = Union(FiniteSet(1, 2)*FiniteSet(3, 4), FiniteSet(1, 2, 3, 4))
    assert Z.is_iterable

    # issue sympy/sympy#7843
    assert Union(S.EmptySet, FiniteSet(-sqrt(-I), sqrt(-I))) == FiniteSet(-sqrt(-I), sqrt(-I))

    assert Union(ProductSet(FiniteSet(1), FiniteSet(2)), Interval(0, 1)).is_Union
    assert Union(ProductSet(FiniteSet(1), FiniteSet(2)),
                 ProductSet(FiniteSet(1), FiniteSet(2), FiniteSet(3))).is_Union

    assert list(Union(FiniteSet(1, 2), FiniteSet(3, 4), evaluate=False)) == [1, 3, 2, 4]
    pytest.raises(TypeError, lambda: iter(Union(FiniteSet(1, 2), Interval(0, 1))))

    assert (Union(FiniteSet(E), FiniteSet(pi), evaluate=False).evalf() ==
            FiniteSet(Float('2.7182818284590451', dps=15),
                      Float('3.1415926535897931', dps=15)))
Exemplo n.º 35
0
def test_Interval_is_left_unbounded():
    assert Interval(3, 4).is_left_unbounded is False
    assert Interval(-oo, 3).is_left_unbounded is True
    assert Interval(Float("-inf"), 3).is_left_unbounded is True