Exemplo n.º 1
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.º 2
0
def test_is_superset():
    assert Interval(0, 1).is_superset(Interval(0, 2)) is False
    assert Interval(0, 3).is_superset(Interval(0, 2))

    assert FiniteSet(1, 2).is_superset(FiniteSet(1, 2, 3, 4)) is False
    assert FiniteSet(4, 5).is_superset(FiniteSet(1, 2, 3, 4)) is False
    assert FiniteSet(1).is_superset(Interval(0, 2)) is False
    assert FiniteSet(1, 2).is_superset(Interval(0, 2, True, True)) is False
    assert (Interval(1, 2) + FiniteSet(3)).is_superset(
        (Interval(0, 2, False, True) + FiniteSet(2, 3))) is False

    assert Interval(3, 4).is_superset(Union(Interval(0, 1), Interval(
        2, 5))) is False

    assert FiniteSet(1, 2, 3, 4).is_superset(Interval(0, 5)) is False
    assert S.EmptySet.is_superset(FiniteSet(1, 2, 3)) is False

    assert Interval(0, 1).is_superset(S.EmptySet) is True
    assert S.EmptySet.is_superset(S.EmptySet) is True

    pytest.raises(ValueError, lambda: S.EmptySet.is_superset(1))

    # tests for the issuperset alias
    assert Interval(0, 1).issuperset(S.EmptySet) is True
    assert S.EmptySet.issuperset(S.EmptySet) is True
Exemplo n.º 3
0
def test_functions():
    g = WildFunction('g')
    p = Wild('p')
    q = Wild('q')

    f = cos(5 * x)
    notf = x
    assert f.match(p * cos(q * x)) == {p: 1, q: 5}
    assert f.match(p * g) == {p: 1, g: cos(5 * x)}
    assert notf.match(g) is None

    F = WildFunction('F', nargs=2)
    assert F.nargs == FiniteSet(2)
    f = Function('f')
    assert f(x).match(F) is None

    F = WildFunction('F', nargs=(1, 2))
    assert F.nargs == FiniteSet(1, 2)

    # issue sympy/sympy#2711
    f = meijerg(((), ()), ((0, ), ()), x)
    a = Wild('a')
    b = Wild('b')

    assert f.find(a) == {
        0: 1,
        x: 1,
        meijerg(((), ()), ((0, ), ()), x): 1,
        (): 3,
        (0, ): 1,
        ((), ()): 1,
        ((0, ), ()): 1
    }
    assert f.find(a + b) == {0: 1, x: 1, meijerg(((), ()), ((0, ), ()), x): 1}
    assert f.find(a**2) == {x: 1, meijerg(((), ()), ((0, ), ()), x): 1}
Exemplo n.º 4
0
def test_domains():
    X, Y = Die('x', 6), Die('y', 6)
    x, y = X.symbol, Y.symbol
    # Domains
    d = where(X > Y)
    assert d.condition == (x > y)
    d = where(And(X > Y, Y > 3))
    assert d.as_boolean() == Or(And(Eq(x, 5), Eq(y,
                                                 4)), And(Eq(x, 6), Eq(y, 5)),
                                And(Eq(x, 6), Eq(y, 4)))
    assert len(d.elements) == 3

    assert len(pspace(X + Y).domain.elements) == 36

    Z = Die('x', 4)

    pytest.raises(ValueError,
                  lambda: P(X > Z))  # Two domains with same internal symbol

    assert pspace(X + Y).domain.set == FiniteSet(1, 2, 3, 4, 5, 6)**2

    assert where(X > 3).set == FiniteSet(4, 5, 6)
    assert X.pspace.domain.dict == FiniteSet(
        *[Dict({X.symbol: i}) for i in range(1, 7)])

    assert where(X > Y).dict == FiniteSet(*[
        Dict({
            X.symbol: i,
            Y.symbol: j
        }) for i in range(1, 7) for j in range(1, 7) if i > j
    ])
Exemplo n.º 5
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.º 6
0
def test_sympyissue_9637():
    n = Symbol('n')
    a = FiniteSet(n)
    b = FiniteSet(2, n)
    assert Complement(S.Reals, a) == Complement(S.Reals, a, evaluate=False)
    assert Complement(Interval(1, 3), a) == Complement(Interval(1, 3), a, evaluate=False)
    assert (Complement(Interval(1, 3), b) ==
            Complement(Union(Interval(1, 2, right_open=True),
                             Interval(2, 3, left_open=True)), a, evaluate=False))
    assert Complement(a, S.Reals) == Complement(a, S.Reals, evaluate=False)
    assert Complement(a, Interval(1, 3)) == Complement(a, Interval(1, 3), evaluate=False)
Exemplo n.º 7
0
def test_Eq():
    assert Eq(Interval(0, 1), Interval(0, 1))
    assert Eq(Interval(0, 1), Interval(0, 2)) is S.false

    s1 = FiniteSet(0, 1)
    s2 = FiniteSet(1, 2)

    assert Eq(s1, s1)
    assert Eq(s1, s2) is S.false

    assert Eq(s1 * s2, s1 * s2)
    assert Eq(s1 * s2, s2 * s1) is S.false
Exemplo n.º 8
0
def test_contains():
    assert Interval(0, 2).contains(1) is true
    assert Interval(0, 2).contains(3) is false
    assert Interval(0, 2, True, False).contains(0) is false
    assert Interval(0, 2, True, False).contains(2) is true
    assert Interval(0, 2, False, True).contains(0) is true
    assert Interval(0, 2, False, True).contains(2) is false
    assert Interval(0, 2, True, True).contains(0) is false
    assert Interval(0, 2, True, True).contains(2) is false

    assert Interval(0, 2) not in Interval(0, 2)

    # issue sympy/sympy#10326
    assert S.Reals.contains(oo) is false
    assert S.Reals.contains(-oo) is false
    assert Interval(-oo, oo, True).contains(oo) is true
    assert Interval(-oo, oo).contains(-oo) is true
    bad = [EmptySet(), FiniteSet(1), Interval(1, 2), zoo,
           I, oo, nan, -oo]
    assert all(i not in Interval(0, 5) for i in bad)

    assert FiniteSet(1, 2, 3).contains(2) is true
    assert FiniteSet(1, 2, x).contains(x) is true

    # issue sympy/sympy#8197
    assert isinstance(FiniteSet(b).contains(-a), Contains)
    assert isinstance(FiniteSet(b).contains(a), Contains)
    assert isinstance(FiniteSet(a).contains(1), Contains)
    pytest.raises(TypeError, lambda: 1 in FiniteSet(a))

    # issue sympy/sympy#8209
    rad1 = Integer(4)
    rad2 = Pow(2, 2, evaluate=False)
    s1 = FiniteSet(rad1)
    s2 = FiniteSet(rad2)
    assert s1 - s2 == S.EmptySet

    items = [1, 2, oo, Symbol('ham'), -1.1]
    fset = FiniteSet(*items)
    assert all(item in fset for item in items)
    assert all(fset.contains(item) is true for item in items)

    assert Union(Interval(0, 1), Interval(2, 5)).contains(3) is true
    assert Union(Interval(0, 1), Interval(2, 5)).contains(6) is false
    assert Union(Interval(0, 1), FiniteSet(2, 5)).contains(3) is false

    assert S.EmptySet.contains(1) is false
    assert FiniteSet(RootOf(x**3 + x - 1, 0)).contains(oo) is false

    assert RootOf(x**5 + x**3 + 1, 0) in S.Reals
    assert not RootOf(x**5 + x**3 + 1, 1) in S.Reals
Exemplo n.º 9
0
def test_booleans():
    """Test basic unions and intersections."""
    assert Union(l1, l2).equal(l1)
    assert Intersection(l1, l2).equal(l1)
    assert Intersection(l1, l4) == FiniteSet(Point(1, 1))
    assert Intersection(Union(l1, l4),
                        l3) == FiniteSet(Point(-1 / 3, -1 / 3), Point(5, 1))
    assert Intersection(l1, FiniteSet(Point(7, -7))) == EmptySet()
    assert Intersection(Circle(Point(0, 0), 3),
                        Line(p1, p2)) == FiniteSet(Point(-3, 0), Point(3, 0))

    fs = FiniteSet(Point(1 / 3, 1), Point(2 / 3, 0), Point(9 / 5, 1 / 5),
                   Point(7 / 3, 1))
    # test the intersection of polygons
    assert Intersection(poly1, poly2) == fs
    # make sure if we union polygons with subsets, the subsets go away
    assert Union(poly1, poly2, fs) == Union(poly1, poly2)
    # make sure that if we union with a FiniteSet that isn't a subset,
    # that the points in the intersection stop being listed
    assert Union(poly1, FiniteSet(Point(0, 0),
                                  Point(3,
                                        5))) == Union(poly1,
                                                      FiniteSet(Point(3, 5)))
    # intersect two polygons that share an edge
    assert Intersection(poly1, poly3) == Union(
        FiniteSet(Point(3 / 2, 1), Point(2, 1)),
        Segment(Point(0, 0), Point(1, 0)))
Exemplo n.º 10
0
def test_Lambda():
    e = Lambda(x, x**2)
    assert e(4) == 16
    assert e(x) == x**2
    assert e(y) == y**2

    assert Lambda(x, x**2) == Lambda(x, x**2)
    assert Lambda(x, x**2) == Lambda(y, y**2)
    assert Lambda(x, x**2) != Lambda(y, y**2 + 1)
    assert Lambda((x, y), x**y) == Lambda((y, x), y**x)
    assert Lambda((x, y), x**y) != Lambda((x, y), y**x)

    assert Lambda((x, y), x**y)(x, y) == x**y
    assert Lambda((x, y), x**y)(3, 3) == 3**3
    assert Lambda((x, y), x**y)(x, 3) == x**3
    assert Lambda((x, y), x**y)(3, y) == 3**y
    assert Lambda(x, f(x))(x) == f(x)
    assert Lambda(x, x**2)(e(x)) == x**4
    assert e(e(x)) == x**4

    assert Lambda((x, y), x + y).nargs == FiniteSet(2)

    p = x, y, z, t
    assert Lambda(p, t*(x + y + z))(*p) == t * (x + y + z)

    assert Lambda(x, 2*x) + Lambda(y, 2*y) == 2*Lambda(x, 2*x)
    assert Lambda(x, 2*x) not in [ Lambda(x, x) ]
    pytest.raises(TypeError, lambda: Lambda(1, x))
    assert Lambda(x, 1)(1) is Integer(1)

    assert (2*x).canonical_variables == {}
    assert Lambda(x, 2*x).canonical_variables == {x: Symbol('0_')}
    x_ = Symbol('x_')
    assert Lambda(x_, 2*x_).canonical_variables == {x_: Symbol('0__')}
Exemplo n.º 11
0
def test_atan():
    assert atan(nan) == nan

    assert atan.nargs == FiniteSet(1)
    assert atan(oo) == pi/2
    assert atan(-oo) == -pi/2

    assert atan(0) == 0
    assert atan(1) == pi/4
    assert atan(sqrt(3)) == pi/3
    assert atan(oo) == pi/2
    assert atan(x).diff(x) == 1/(1 + x**2)

    assert atan(r).is_extended_real is True

    assert atan(-2*I) == -I*atanh(2)
    assert atan(p).is_positive is True
    assert atan(n).is_positive is False
    assert atan(x).is_positive is None

    assert atan(0, evaluate=False).is_rational
    assert atan(1, evaluate=False).is_rational is False

    z = Symbol('z', zero=True)
    rn = Symbol('rn', rational=True, nonzero=True)
    assert atan(z).is_rational
    assert atan(rn).is_rational is False
    assert atan(x).is_rational is None

    pytest.raises(ArgumentIndexError, lambda: atan(x).fdiff(2))
Exemplo n.º 12
0
def test_powerset():
    # EmptySet
    A = FiniteSet()
    pset = A.powerset()
    assert len(pset) == 1
    assert pset == FiniteSet(S.EmptySet)

    # FiniteSets
    A = FiniteSet(1, 2)
    pset = A.powerset()
    assert len(pset) == 2**len(A)
    assert pset == FiniteSet(FiniteSet(), FiniteSet(1),
                             FiniteSet(2), A)
    # Not finite sets
    I = Interval(0, 1)
    pytest.raises(NotImplementedError, I.powerset)
Exemplo n.º 13
0
def test_real():
    x = Symbol('x', real=True)

    I = Interval(0, 5)
    J = Interval(10, 20)
    A = FiniteSet(1, 2, 30, x, pi)
    B = FiniteSet(-4, 0)
    C = FiniteSet(100)
    D = FiniteSet('Ham', 'Eggs')

    assert all(s.is_subset(S.Reals) for s in [I, J, A, B, C])
    assert not D.is_subset(S.Reals)
    assert all((a + b).is_subset(S.Reals) for a in [I, J, A, B, C] for b in [I, J, A, B, C])
    assert not any((a + D).is_subset(S.Reals) for a in [I, J, A, B, C, D])

    assert not (I + A + D).is_subset(S.Reals)
Exemplo n.º 14
0
def test_intersection():
    # iterable
    i = Intersection(FiniteSet(1, 2, 3), Interval(2, 5), evaluate=False)
    assert i.is_iterable
    assert set(i) == {Integer(2), Integer(3)}

    # challenging intervals
    x = Symbol('x', extended_real=True)
    i = Intersection(Interval(0, 3), Interval(x, 6))
    assert (5 in i) is False
    pytest.raises(TypeError, lambda: 2 in i)

    # Singleton special cases
    assert Intersection(Interval(0, 1), S.EmptySet) == S.EmptySet
    assert Intersection(S.Reals, Interval(-oo, x,
                                          True)) == Interval(-oo, x, True)

    # Products
    line = Interval(0, 5)
    i = Intersection(line**2, line**3, evaluate=False)
    assert (2, 2) not in i
    assert (2, 2, 2) not in i
    pytest.raises(ValueError, lambda: list(i))

    assert (Intersection(Intersection(S.Integers, S.Naturals, evaluate=False),
                         S.Reals,
                         evaluate=False) == Intersection(S.Integers,
                                                         S.Naturals,
                                                         S.Reals,
                                                         evaluate=False))
Exemplo n.º 15
0
def test_acot():
    assert acot(nan) == nan

    assert acot.nargs == FiniteSet(1)
    assert acot(-oo) == 0
    assert acot(oo) == 0
    assert acot(1) == pi/4
    assert acot(0) == pi/2
    assert acot(sqrt(3)/3) == pi/3
    assert acot(1/sqrt(3)) == pi/3
    assert acot(-1/sqrt(3)) == -pi/3
    assert acot(x).diff(x) == -1/(1 + x**2)

    assert acot(r).is_extended_real is True

    assert acot(I*pi) == -I*acoth(pi)
    assert acot(-2*I) == I*acoth(2)
    assert acot(x).is_positive is None
    assert acot(p).is_positive is True
    assert acot(I).is_positive is False

    assert acot(0, evaluate=False).is_rational is False

    q = Symbol('q', rational=True)
    assert acot(q).is_rational is False
    assert acot(x).is_rational is None

    pytest.raises(ArgumentIndexError, lambda: acot(x).fdiff(2))
Exemplo n.º 16
0
def test_sympyissue_9808():
    assert (Complement(FiniteSet(y),
                       FiniteSet(1)) == Complement(FiniteSet(y),
                                                   FiniteSet(1),
                                                   evaluate=False))
    assert (Complement(FiniteSet(1, 2, x),
                       FiniteSet(x, y, 2, 3)) == Complement(FiniteSet(1),
                                                            FiniteSet(y),
                                                            evaluate=False))
Exemplo n.º 17
0
def test_Function():
    class MyFunc(Function):
        @classmethod
        def eval(cls, x):  # one arg
            return

    assert MyFunc.nargs == FiniteSet(1)
    assert MyFunc(x).nargs == FiniteSet(1)
    pytest.raises(TypeError, lambda: MyFunc(x, y).nargs)

    class MyFunc(Function):
        @classmethod
        def eval(cls, *x):  # star args
            return

    assert MyFunc.nargs == S.Naturals0
    assert MyFunc(x).nargs == S.Naturals0
Exemplo n.º 18
0
def test_image_piecewise():
    f = Piecewise((x, x <= -1), (1 / x**2, x <= 5), (x**3, True))
    f1 = Piecewise((0, x <= 1), (1, x <= 2), (2, True))
    f2 = Piecewise((x, x <= -1), (x**3, True))
    assert imageset(x, f, Interval(-5, 5)) == Union(
        Interval(-5, -1), Interval(Rational(1, 25), oo, false, true))
    assert imageset(x, f1, Interval(1, 2)) == FiniteSet(0, 1)
    assert imageset(x, f2, Interval(-2, 2)) == Interval(-2, 8)
Exemplo n.º 19
0
def test_dice():
    # TODO: Make iid method!
    X, Y, Z = Die('X', 6), Die('Y', 6), Die('Z', 6)
    a, b = symbols('a b')

    assert E(X) == 3 + Rational(1, 2)
    assert variance(X) == Rational(35, 12)
    assert E(X + Y) == 7
    assert E(X + X) == 7
    assert E(a * X + b) == a * E(X) + b
    assert variance(X + Y) == variance(X) + variance(Y) == cmoment(X + Y, 2)
    assert variance(X + X) == 4 * variance(X) == cmoment(X + X, 2)
    assert cmoment(X, 0) == 1
    assert cmoment(4 * X, 3) == 64 * cmoment(X, 3)
    assert covariance(X, Y) == 0
    assert covariance(X, X + Y) == variance(X)
    assert density(Eq(cos(X * pi), 1))[True] == Rational(1, 2)
    assert correlation(X, Y) == 0
    assert correlation(X, Y) == correlation(Y, X)
    assert smoment(X + Y, 3) == skewness(X + Y)
    assert smoment(X, 0) == 1
    assert P(X > 3) == Rational(1, 2)
    assert P(2 * X > 6) == Rational(1, 2)
    assert P(X > Y) == Rational(5, 12)
    assert P(Eq(X, Y)) == P(Eq(X, 1))

    assert E(X, X > 3) == 5 == moment(X, 1, 0, X > 3)
    assert E(X, Y > 3) == E(X) == moment(X, 1, 0, Y > 3)
    assert E(X + Y, Eq(X, Y)) == E(2 * X)
    assert moment(X, 0) == 1
    assert moment(5 * X, 2) == 25 * moment(X, 2)

    assert P(X > 3, X > 3) == 1
    assert P(X > Y, Eq(Y, 6)) == 0
    assert P(Eq(X + Y, 12)) == Rational(1, 36)
    assert P(Eq(X + Y, 12), Eq(X, 6)) == Rational(1, 6)

    assert density(X + Y) == density(Y + Z) != density(X + X)
    d = density(2 * X + Y**Z)
    assert d[22] == Rational(1, 108) and d[4100] == Rational(
        1, 216) and 3130 not in d

    assert pspace(X).domain.as_boolean() == Or(
        *[Eq(X.symbol, i) for i in [1, 2, 3, 4, 5, 6]])

    assert where(X > 3).set == FiniteSet(4, 5, 6)

    X = Die('X', 2)
    x = X.symbol

    assert X.pspace.compute_cdf(X) == {1: Rational(1, 2), 2: 1}
    assert X.pspace.sorted_cdf(X) == [(1, Rational(1, 2)), (2, 1)]

    assert X.pspace.compute_density(X)(1) == Rational(1, 2)
    assert X.pspace.compute_density(X)(0) == 0
    assert X.pspace.compute_density(X)(8) == 0

    assert X.pspace.density == x
Exemplo n.º 20
0
def test_SymmetricDifference():
    assert (SymmetricDifference(FiniteSet(0, 1, 2, 3, 4, 5),
                                FiniteSet(2, 4, 6, 8, 10)) == FiniteSet(
                                    0, 1, 3, 5, 6, 8, 10))
    assert (SymmetricDifference(FiniteSet(2, 3, 4),
                                FiniteSet(2, 3, 4, 5)) == FiniteSet(5))
    assert (FiniteSet(1, 2, 3, 4, 5) ^ FiniteSet(1, 2, 5, 6) == FiniteSet(
        3, 4, 6))
    assert (Set(1, 2, 3) ^ Set(2, 3, 4) == Union(
        Set(1, 2, 3) - Set(2, 3, 4),
        Set(2, 3, 4) - Set(1, 2, 3)))
    assert (Interval(0, 4) ^ Interval(2, 5) == Union(
        Interval(0, 4) - Interval(2, 5),
        Interval(2, 5) - Interval(0, 4)))
Exemplo n.º 21
0
def test_imageset_intersection_real():
    assert (imageset(Lambda(n, n + (n - 1) * (n + 1) * I),
                     S.Integers).intersection(S.Reals) == FiniteSet(-1, 1))

    s = ImageSet(
        Lambda(n, -I * (I * (2 * pi * n - pi / 4) + log(abs(sqrt(-I))))),
        S.Integers)
    assert s.intersection(S.Reals) == imageset(Lambda(n, 2 * n * pi - pi / 4),
                                               S.Integers)
Exemplo n.º 22
0
def test_functions():
    g = WildFunction('g')
    p = Wild('p')
    q = Wild('q')

    f = cos(5 * x)
    notf = x
    assert f.match(p * cos(q * x)) == {p: 1, q: 5}
    assert f.match(p * g) == {p: 1, g: cos(5 * x)}
    assert notf.match(g) is None

    F = WildFunction('F', nargs=2)
    assert F.nargs == FiniteSet(2)
    f = Function('f')
    assert f(x).match(F) is None

    F = WildFunction('F', nargs=(1, 2))
    assert F.nargs == FiniteSet(1, 2)
Exemplo n.º 23
0
def test_univariate_relational_as_set():
    assert (x > 0).as_set() == Interval(0, oo, True)
    assert (x >= 0).as_set() == Interval(0, oo)
    assert (x < 0).as_set() == Interval(-oo, 0, False, True)
    assert (x <= 0).as_set() == Interval(-oo, 0)
    assert Eq(x, 0).as_set() == FiniteSet(0)
    assert Ne(x, 0).as_set() == Interval(-oo, 0, False, True) + Interval(0, oo, True)

    assert (x**2 >= 4).as_set() == Interval(-oo, -2) + Interval(2, oo)
Exemplo n.º 24
0
def test_ImageSet():
    squares = ImageSet(Lambda(x, x**2), S.Naturals)
    assert 4 in squares
    assert 5 not in squares
    assert FiniteSet(*range(10)).intersection(squares) == FiniteSet(1, 4, 9)

    assert 16 not in squares.intersection(Interval(0, 10))

    si = iter(squares)
    a, b, c, d = next(si), next(si), next(si), next(si)
    assert (a, b, c, d) == (1, 4, 9, 16)

    harmonics = ImageSet(Lambda(x, 1 / x), S.Naturals)
    assert Rational(1, 5) in harmonics
    assert Rational(.25) in harmonics
    assert 0.25 not in harmonics
    assert Rational(.3) not in harmonics

    assert harmonics.is_iterable
Exemplo n.º 25
0
def test_sympyissue_11732():
    interval12 = Interval(1, 2)
    finiteset1234 = FiniteSet(1, 2, 3, 4)

    assert (interval12 in S.Naturals) is False
    assert (interval12 in S.Naturals0) is False
    assert (interval12 in S.Integers) is False

    assert (finiteset1234 in S.Naturals) is False
    assert (finiteset1234 in S.Naturals0) is False
    assert (finiteset1234 in S.Integers) is False
Exemplo n.º 26
0
def test_range_interval_intersection():
    # Intersection with intervals
    assert FiniteSet(*Range(0, 10, 1).intersection(Interval(2, 6))) == \
        FiniteSet(2, 3, 4, 5, 6)

    # Open Intervals are removed
    assert (FiniteSet(*Range(0, 10, 1).intersection(Interval(
        2, 6, True, True))) == FiniteSet(3, 4, 5))

    # Try this with large steps
    assert (FiniteSet(
        *Range(0, 100, 10).intersection(Interval(15, 55))) == FiniteSet(
            20, 30, 40, 50))

    # Going backwards
    assert (FiniteSet(
        *Range(10, -9, -3).intersection(Interval(-5, 6))) == FiniteSet(
            -5, -2, 1, 4))
    assert (FiniteSet(
        *Range(10, -9, -3).intersection(Interval(-5, 6, True))) == FiniteSet(
            -2, 1, 4))
Exemplo n.º 27
0
def test_asin():
    assert asin(nan) == nan

    assert asin.nargs == FiniteSet(1)
    assert asin(oo) == -I*oo
    assert asin(-oo) == I*oo

    # Note: asin(-x) = - asin(x)
    assert asin(0) == 0
    assert asin(1) == pi/2
    assert asin(-1) == -pi/2
    assert asin(sqrt(3)/2) == pi/3
    assert asin(-sqrt(3)/2) == -pi/3
    assert asin(sqrt(2)/2) == pi/4
    assert asin(-sqrt(2)/2) == -pi/4
    assert asin(sqrt((5 - sqrt(5))/8)) == pi/5
    assert asin(-sqrt((5 - sqrt(5))/8)) == -pi/5
    assert asin(Rational(1, 2)) == pi/6
    assert asin(-Rational(1, 2)) == -pi/6
    assert asin((sqrt(2 - sqrt(2)))/2) == pi/8
    assert asin(-(sqrt(2 - sqrt(2)))/2) == -pi/8
    assert asin((sqrt(5) - 1)/4) == pi/10
    assert asin(-(sqrt(5) - 1)/4) == -pi/10
    assert asin((sqrt(3) - 1)/sqrt(2**3)) == pi/12
    assert asin(-(sqrt(3) - 1)/sqrt(2**3)) == -pi/12

    assert asin(x).diff(x) == 1/sqrt(1 - x**2)

    assert asin(c).is_complex
    assert asin(x).is_complex is None

    assert asin(0.2).is_extended_real is True
    assert asin(-2).is_extended_real is False
    assert asin(r).is_extended_real is None

    assert asin(0, evaluate=False).is_rational
    assert asin(1, evaluate=False).is_rational is False

    z = Symbol('z', zero=True)
    rn = Symbol('rn', rational=True, nonzero=True)
    assert asin(z).is_rational
    assert asin(rn).is_rational is False
    assert asin(x).is_rational is None

    assert asin(-2*I) == -I*asinh(2)

    assert asin(Rational(1, 7), evaluate=False).is_positive is True
    assert asin(Rational(-1, 7), evaluate=False).is_positive is False
    assert asin(p).is_positive is None

    pytest.raises(ArgumentIndexError, lambda: asin(x).fdiff(2))
Exemplo n.º 28
0
def test_sympyissue_10337():
    assert (FiniteSet(2) == 3) is False
    assert (FiniteSet(2) != 3) is True

    pytest.raises(TypeError, lambda: FiniteSet(2) < 3)
    pytest.raises(TypeError, lambda: FiniteSet(2) <= 3)
    pytest.raises(TypeError, lambda: FiniteSet(2) > 3)
    pytest.raises(TypeError, lambda: FiniteSet(2) >= 3)
Exemplo n.º 29
0
def test_nargs():
    f = Function('f')
    assert f.nargs == S.Naturals0
    assert f(1).nargs == S.Naturals0
    assert Function('f', nargs=2)(1, 2).nargs == FiniteSet(2)
    assert sin.nargs == FiniteSet(1)
    assert sin(2).nargs == FiniteSet(1)
    assert log.nargs == FiniteSet(1, 2)
    assert log(2).nargs == FiniteSet(1, 2)
    assert Function('f', nargs=2).nargs == FiniteSet(2)
    assert Function('f', nargs=0).nargs == FiniteSet(0)
    assert Function('f', nargs=(0, 1)).nargs == FiniteSet(0, 1)
    assert Function('f', nargs=None).nargs == S.Naturals0
    pytest.raises(ValueError, lambda: Function('f', nargs=()))

    p = Function('g', nargs=(1, 2))(1)
    assert p.args == (1,) and p.nargs == FiniteSet(1, 2)

    pytest.raises(ValueError, lambda: sin(x, no_such_option=1))
Exemplo n.º 30
0
def test_finite_basic():
    assert isinstance(FiniteSet(evaluate=False), FiniteSet)

    A = FiniteSet(1, 2, 3)
    B = FiniteSet(3, 4, 5)
    AorB = Union(A, B)
    AandB = A.intersection(B)
    assert A.is_subset(AorB) and B.is_subset(AorB)
    assert AandB.is_subset(A)
    assert AandB == FiniteSet(3)

    assert A.inf == 1 and A.sup == 3
    assert AorB.inf == 1 and AorB.sup == 5
    assert FiniteSet(x, 1, 5).sup == Max(x, 5)
    assert FiniteSet(x, 1, 5).inf == Min(x, 1)

    # issue sympy/sympy#7335
    assert FiniteSet(S.EmptySet) != S.EmptySet
    assert FiniteSet(FiniteSet(1, 2, 3)) != FiniteSet(1, 2, 3)
    assert FiniteSet((1, 2, 3)) != FiniteSet(1, 2, 3)

    # Ensure a variety of types can exist in a FiniteSet
    assert FiniteSet((1, 2), Float, A, -5, x, 'eggs', x**2, Interval)

    assert (A > B) is False
    assert (A >= B) is False
    assert (A < B) is False
    assert (A <= B) is False
    assert AorB > A and AorB > B
    assert AorB >= A and AorB >= B
    assert A >= A and A <= A
    assert A >= AandB and B >= AandB
    assert A > AandB and B > AandB

    assert (FiniteSet(pi, E).evalf() ==
            FiniteSet(Float('2.7182818284590451', dps=15),
                      Float('3.1415926535897931', dps=15)))
Exemplo n.º 31
0
def test_boundary_ProductSet():
    open_square = Interval(0, 1, True, True) ** 2
    assert open_square.boundary == (FiniteSet(0, 1) * Interval(0, 1) +
                                    Interval(0, 1) * FiniteSet(0, 1))

    second_square = Interval(1, 2, True, True) * Interval(0, 1, True, True)
    assert ((open_square + second_square).boundary ==
            (FiniteSet(0, 1)*Interval(0, 1) + FiniteSet(1, 2)*Interval(0, 1) +
             Interval(0, 1)*FiniteSet(0, 1) + Interval(1, 2)*FiniteSet(0, 1)))
Exemplo n.º 32
0
def test_Eq():
    assert Eq(Interval(0, 1), Interval(0, 1))
    assert Eq(Interval(0, 1), Union(Interval(2, 3),
                                    Interval(4, 5))).is_Equality
    assert Eq(Interval(0, 1), Interval(0, 2)) is S.false

    s1 = FiniteSet(0, 1)
    s2 = FiniteSet(1, 2)

    assert Eq(s1, s1)
    assert Eq(s1, s2) is S.false
    assert Eq(FiniteSet(1, 2), FiniteSet(3, 4, 5)) is S.false

    assert Eq(s1*s2, s1*s2)
    assert Eq(s1*s2, s2*s1) is S.false

    p1 = ProductSet(FiniteSet(1), FiniteSet(2))
    assert Eq(p1, s1).is_Equality
    p2 = ProductSet(FiniteSet(1), FiniteSet(2), FiniteSet(3))
    assert Eq(p1, p2) is S.false
Exemplo n.º 33
0
def test_union_contains():
    i1 = Interval(0, 1)
    i2 = Interval(2, 3)
    i3 = Union(i1, i2)
    pytest.raises(TypeError, lambda: x in i3)
    e = i3.contains(x)
    assert e == Or(And(0 <= x, x <= 1), And(2 <= x, x <= 3))
    assert e.subs(x, -0.5) is false
    assert e.subs(x, 0.5) is true
    assert e.subs(x, 1.5) is false
    assert e.subs(x, 2.5) is true
    assert e.subs(x, 3.5) is false

    U = Interval(0, 2, True, True) + Interval(10, oo) + FiniteSet(-1, 2, 5, 6)
    assert all(el not in U for el in [0, 4, -oo])
    assert all(el in U for el in [2, 5, 10])
Exemplo n.º 34
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))