def test_sympyissue_10113(): f = x**2 / (x**2 - 4) assert imageset(x, f, S.Reals) == Union(Interval(-oo, 0, True), Interval(1, oo, True, True)) assert imageset(x, f, Interval(-2, 2)) == Interval(-oo, 0, True) assert imageset(x, f, Interval(-2, 3)) == Union( Interval(-oo, 0, True), Interval(Rational(9, 5), oo, False, True))
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)
def test_sympyissue_10113(): f = x**2/(x**2 - 4) assert imageset(x, f, S.Reals) == Union(Interval(-oo, 0, True), Interval(1, oo, True, True)) assert imageset(x, f, Interval(-2, 2)) == Interval(-oo, 0, True) assert imageset(x, f, Interval(-2, 3)) == Union(Interval(-oo, 0, True), Interval(Rational(9, 5), oo, False, True))
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)
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)
def test_image_Intersection(): x = Symbol('x', extended_real=True) y = Symbol('y', extended_real=True) assert (imageset(x, x**2, Interval(-2, 0).intersection(Interval(x, y))) == Interval( 0, 4).intersection( Interval(Min(x**2, y**2), Max(x**2, y**2))))
def test_infinitely_indexed_set_2(): a = Symbol('a', integer=True) assert imageset(Lambda(n, n), S.Integers) == imageset(Lambda(n, n + a), S.Integers) assert imageset(Lambda(n, n), S.Integers) == imageset(Lambda(n, -n + a), S.Integers) assert imageset(Lambda(n, -6 * n), S.Integers) == ImageSet(Lambda(n, 6 * n), S.Integers) assert imageset(Lambda(n, 2 * n + pi), S.Integers) == ImageSet(Lambda(n, 2 * n + pi), S.Integers) assert imageset(Lambda(n, pi * n + pi), S.Integers) == ImageSet(Lambda(n, pi * n + pi), S.Integers) assert imageset(Lambda(n, exp(n)), S.Integers) != imageset( Lambda(n, n), S.Integers)
def test_infinitely_indexed_set_1(): assert imageset(Lambda(n, n), S.Integers) == imageset(Lambda(m, m), S.Integers) assert (imageset(Lambda(n, 2 * n), S.Integers).intersection( imageset(Lambda(m, 2 * m + 1), S.Integers)) == EmptySet()) assert (imageset(Lambda(n, 2 * n), S.Integers).intersection( imageset(Lambda(n, 2 * n + 1), S.Integers)) == EmptySet()) assert (imageset(Lambda(m, 2 * m), S.Integers).intersection( imageset(Lambda(n, 3 * n), S.Integers)) == ImageSet(Lambda(t, 6 * t), S.Integers))
def test_integers(): Z = S.Integers assert 5 in Z assert -5 in Z assert 5.5 not in Z zi = iter(Z) a, b, c, d = next(zi), next(zi), next(zi), next(zi) assert (a, b, c, d) == (0, 1, -1, 2) assert isinstance(a, Basic) assert Z.intersection(Interval(-5, 5)) == Range(-5, 6) assert Z.intersection(Interval(-5, 5, True, True)) == Range(-4, 5) assert Z.intersection(Set(x)) == Intersection(Z, Set(x), evaluate=False) assert Z.inf == -oo assert Z.sup == oo assert Z.boundary == Z assert imageset(Lambda((x, y), x * y), Z) == ImageSet(Lambda((x, y), x * y), Z)
def test_intersection(): pytest.raises(TypeError, lambda: Intersection(1)) pytest.raises(TypeError, lambda: Intersection()) assert Interval(0, 2).intersection(Interval(1, 2)) == Interval(1, 2) assert Interval(0, 2).intersection(Interval(1, 2, True)) == \ Interval(1, 2, True) assert Interval(0, 2, True).intersection(Interval(1, 2)) == \ Interval(1, 2, False, False) assert Interval(0, 2, True, True).intersection(Interval(1, 2)) == \ Interval(1, 2, False, True) assert Interval(0, 2).intersection(Union(Interval(0, 1), Interval(2, 3))) == \ Union(Interval(0, 1), Interval(2, 2)) x = Symbol('x') assert Intersection(Interval(0, 1), FiniteSet(x)).is_iterable assert not Intersection(Interval(0, 1), Interval(0, x)).is_iterable assert FiniteSet(1, 2, x).intersection(FiniteSet(x)) == FiniteSet(x) assert FiniteSet('ham', 'eggs').intersection(FiniteSet('ham')) == \ FiniteSet('ham') assert FiniteSet(1, 2, 3, 4, 5).intersection(S.EmptySet) == S.EmptySet assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3) assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \ Union(Interval(1, 1), Interval(2, 2)) assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(0, 2)) == \ Union(Interval(0, 1), Interval(2, 2)) assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2, True, True)) == \ S.EmptySet assert Union(Interval(0, 1), Interval(2, 3)).intersection(S.EmptySet) == \ S.EmptySet assert Union(Interval(0, 5), FiniteSet('ham')).intersection(FiniteSet(2, 3, 4, 5, 6)) == \ Union(FiniteSet(2, 3, 4, 5), Intersection(FiniteSet(6), Union(Interval(0, 5), FiniteSet('ham')))) # issue sympy/sympy#8217 assert Intersection(FiniteSet(x), FiniteSet(y)) == \ Intersection(FiniteSet(x), FiniteSet(y), evaluate=False) assert FiniteSet(x).intersection(S.Reals) == \ Intersection(S.Reals, FiniteSet(x), evaluate=False) # tests for the intersection alias assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3) assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \ Union(Interval(1, 1), Interval(2, 2)) assert ProductSet(FiniteSet(1), FiniteSet(2)).intersection(Interval(1, 2)).is_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)) assert (imageset(Lambda(x, x**2), Intersection(FiniteSet(1, 2), FiniteSet(2, 3), evaluate=False)) == FiniteSet(4))
def test_infinitely_indexed_diophantine(): assert (imageset(Lambda(m, 2 * pi * m), S.Integers).intersection( imageset(Lambda(n, 3 * pi * n), S.Integers)) == ImageSet(Lambda(t, 6 * pi * t), S.Integers))
def test_image_Intersection(): x = Symbol('x', extended_real=True) y = Symbol('y', extended_real=True) assert (imageset(x, x**2, Interval(-2, 0).intersection(Interval(x, y))) == Interval(0, 4).intersection(Interval(Min(x**2, y**2), Max(x**2, y**2))))
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))) assert imageset(x, -(x - 2)*(x + 2), Interval(-3, 4)) == Interval(-12, 4) assert (imageset(z, 2*z, ImageSet(Lambda((x, y), x*y), Interval(0, 2))) == ImageSet(Lambda(z, 2*z), ImageSet(Lambda((x, y), x*y), Interval(0, 2))))
def test_image_EmptySet(): x = Symbol('x', extended_real=True) assert imageset(x, 2*x, S.EmptySet) == S.EmptySet
def test_image_is_ImageSet(): assert isinstance(imageset(x, sqrt(sin(x)), Range(5)), ImageSet)
def test_image_FiniteSet(): x = Symbol('x', extended_real=True) assert imageset(x, 2*x, FiniteSet(1, 2, 3)) == FiniteSet(2, 4, 6)
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))
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))) assert imageset(x, -(x - 2)*(x + 2), Interval(-3, 4)) == Interval(-12, 4) assert (imageset(z, 2*z, ImageSet(Lambda((x, y), x*y), Interval(0, 2))) == ImageSet(Lambda(z, 2*z), ImageSet(Lambda((x, y), x*y), Interval(0, 2))))
def test_image_FiniteSet(): x = Symbol('x', extended_real=True) assert imageset(x, 2*x, FiniteSet(1, 2, 3)) == FiniteSet(2, 4, 6)
def test_infinitely_indexed_set_3(): assert imageset(Lambda(n, 2 * n + 1), S.Integers) == imageset(Lambda(n, 2 * n - 1), S.Integers) assert imageset(Lambda(n, 3 * n + 2), S.Integers) == imageset(Lambda(n, 3 * n - 1), S.Integers)
def test_image_EmptySet(): x = Symbol('x', extended_real=True) assert imageset(x, 2*x, S.EmptySet) == S.EmptySet
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))
def test_ImageSet_simplification(): assert imageset(Lambda(n, n), S.Integers) == S.Integers assert (imageset(Lambda(n, sin(n)), imageset(Lambda(m, tan(m)), S.Integers)) == imageset(Lambda(m, sin(tan(m))), S.Integers))
def test_intersection(): pytest.raises(TypeError, lambda: Intersection(1)) pytest.raises(TypeError, lambda: Intersection()) assert Interval(0, 2).intersection(Interval(1, 2)) == Interval(1, 2) assert Interval(0, 2).intersection(Interval(1, 2, True)) == \ Interval(1, 2, True) assert Interval(0, 2, True).intersection(Interval(1, 2)) == \ Interval(1, 2, False, False) assert Interval(0, 2, True, True).intersection(Interval(1, 2)) == \ Interval(1, 2, False, True) assert Interval(0, 2).intersection(Union(Interval(0, 1), Interval(2, 3))) == \ Union(Interval(0, 1), Interval(2, 2)) x = Symbol('x') assert Intersection(Interval(0, 1), FiniteSet(x)).is_iterable assert not Intersection(Interval(0, 1), Interval(0, x)).is_iterable assert FiniteSet(1, 2, x).intersection(FiniteSet(x)) == FiniteSet(x) assert FiniteSet('ham', 'eggs').intersection(FiniteSet('ham')) == \ FiniteSet('ham') assert FiniteSet(1, 2, 3, 4, 5).intersection(S.EmptySet) == S.EmptySet assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3) assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \ Union(Interval(1, 1), Interval(2, 2)) assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(0, 2)) == \ Union(Interval(0, 1), Interval(2, 2)) assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2, True, True)) == \ S.EmptySet assert Union(Interval(0, 1), Interval(2, 3)).intersection(S.EmptySet) == \ S.EmptySet assert Union(Interval(0, 5), FiniteSet('ham')).intersection(FiniteSet(2, 3, 4, 5, 6)) == \ Union(FiniteSet(2, 3, 4, 5), Intersection(FiniteSet(6), Union(Interval(0, 5), FiniteSet('ham')))) # issue sympy/sympy#8217 assert Intersection(FiniteSet(x), FiniteSet(y)) == \ Intersection(FiniteSet(x), FiniteSet(y), evaluate=False) assert FiniteSet(x).intersection(S.Reals) == \ Intersection(S.Reals, FiniteSet(x), evaluate=False) # tests for the intersection alias assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3) assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \ Union(Interval(1, 1), Interval(2, 2)) assert ProductSet(FiniteSet(1), FiniteSet(2)).intersection(Interval(1, 2)).is_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)) assert (imageset(Lambda(x, x**2), Intersection(FiniteSet(1, 2), FiniteSet(2, 3), evaluate=False)) == FiniteSet(4))