|
|
|
|
|
from sympy.core.function import (Derivative, Function) |
|
from sympy.core.numbers import oo |
|
from sympy.core.symbol import symbols |
|
from sympy.functions.elementary.exponential import exp |
|
from sympy.functions.elementary.trigonometric import cos |
|
from sympy.integrals.integrals import Integral |
|
from sympy.functions.special.bessel import besselj |
|
from sympy.functions.special.polynomials import legendre |
|
from sympy.functions.combinatorial.numbers import bell |
|
from sympy.printing.conventions import split_super_sub, requires_partial |
|
from sympy.testing.pytest import XFAIL |
|
|
|
def test_super_sub(): |
|
assert split_super_sub("beta_13_2") == ("beta", [], ["13", "2"]) |
|
assert split_super_sub("beta_132_20") == ("beta", [], ["132", "20"]) |
|
assert split_super_sub("beta_13") == ("beta", [], ["13"]) |
|
assert split_super_sub("x_a_b") == ("x", [], ["a", "b"]) |
|
assert split_super_sub("x_1_2_3") == ("x", [], ["1", "2", "3"]) |
|
assert split_super_sub("x_a_b1") == ("x", [], ["a", "b1"]) |
|
assert split_super_sub("x_a_1") == ("x", [], ["a", "1"]) |
|
assert split_super_sub("x_1_a") == ("x", [], ["1", "a"]) |
|
assert split_super_sub("x_1^aa") == ("x", ["aa"], ["1"]) |
|
assert split_super_sub("x_1__aa") == ("x", ["aa"], ["1"]) |
|
assert split_super_sub("x_11^a") == ("x", ["a"], ["11"]) |
|
assert split_super_sub("x_11__a") == ("x", ["a"], ["11"]) |
|
assert split_super_sub("x_a_b_c_d") == ("x", [], ["a", "b", "c", "d"]) |
|
assert split_super_sub("x_a_b^c^d") == ("x", ["c", "d"], ["a", "b"]) |
|
assert split_super_sub("x_a_b__c__d") == ("x", ["c", "d"], ["a", "b"]) |
|
assert split_super_sub("x_a^b_c^d") == ("x", ["b", "d"], ["a", "c"]) |
|
assert split_super_sub("x_a__b_c__d") == ("x", ["b", "d"], ["a", "c"]) |
|
assert split_super_sub("x^a^b_c_d") == ("x", ["a", "b"], ["c", "d"]) |
|
assert split_super_sub("x__a__b_c_d") == ("x", ["a", "b"], ["c", "d"]) |
|
assert split_super_sub("x^a^b^c^d") == ("x", ["a", "b", "c", "d"], []) |
|
assert split_super_sub("x__a__b__c__d") == ("x", ["a", "b", "c", "d"], []) |
|
assert split_super_sub("alpha_11") == ("alpha", [], ["11"]) |
|
assert split_super_sub("alpha_11_11") == ("alpha", [], ["11", "11"]) |
|
assert split_super_sub("w1") == ("w", [], ["1"]) |
|
assert split_super_sub("wπ") == ("w", [], ["π"]) |
|
assert split_super_sub("w11") == ("w", [], ["11"]) |
|
assert split_super_sub("wππ") == ("w", [], ["ππ"]) |
|
assert split_super_sub("wπ2π") == ("w", [], ["π2π"]) |
|
assert split_super_sub("w1^a") == ("w", ["a"], ["1"]) |
|
assert split_super_sub("Ο1") == ("Ο", [], ["1"]) |
|
assert split_super_sub("Ο11") == ("Ο", [], ["11"]) |
|
assert split_super_sub("Ο1^a") == ("Ο", ["a"], ["1"]) |
|
assert split_super_sub("Οπ^Ξ±") == ("Ο", ["Ξ±"], ["π"]) |
|
assert split_super_sub("Οπ2^3Ξ±") == ("Ο", ["3Ξ±"], ["π2"]) |
|
assert split_super_sub("") == ("", [], []) |
|
|
|
|
|
def test_requires_partial(): |
|
x, y, z, t, nu = symbols('x y z t nu') |
|
n = symbols('n', integer=True) |
|
|
|
f = x * y |
|
assert requires_partial(Derivative(f, x)) is True |
|
assert requires_partial(Derivative(f, y)) is True |
|
|
|
|
|
assert requires_partial(Derivative(Integral(exp(-x * y), (x, 0, oo)), y, evaluate=False)) is False |
|
|
|
|
|
f = besselj(nu, x) |
|
assert requires_partial(Derivative(f, x)) is True |
|
assert requires_partial(Derivative(f, nu)) is True |
|
|
|
|
|
f = besselj(n, x) |
|
assert requires_partial(Derivative(f, x)) is False |
|
|
|
|
|
|
|
assert requires_partial(Derivative(f, n)) is False |
|
|
|
|
|
f = bell(n, x) |
|
assert requires_partial(Derivative(f, x)) is False |
|
|
|
assert requires_partial(Derivative(f, n)) is False |
|
|
|
|
|
f = legendre(0, x) |
|
assert requires_partial(Derivative(f, x)) is False |
|
|
|
f = legendre(n, x) |
|
assert requires_partial(Derivative(f, x)) is False |
|
|
|
assert requires_partial(Derivative(f, n)) is False |
|
|
|
f = x ** n |
|
assert requires_partial(Derivative(f, x)) is False |
|
|
|
assert requires_partial(Derivative(Integral((x*y) ** n * exp(-x * y), (x, 0, oo)), y, evaluate=False)) is False |
|
|
|
|
|
f = (exp(t), cos(t)) |
|
g = sum(f) |
|
assert requires_partial(Derivative(g, t)) is False |
|
|
|
f = symbols('f', cls=Function) |
|
assert requires_partial(Derivative(f(x), x)) is False |
|
assert requires_partial(Derivative(f(x), y)) is False |
|
assert requires_partial(Derivative(f(x, y), x)) is True |
|
assert requires_partial(Derivative(f(x, y), y)) is True |
|
assert requires_partial(Derivative(f(x, y), z)) is True |
|
assert requires_partial(Derivative(f(x, y), x, y)) is True |
|
|
|
@XFAIL |
|
def test_requires_partial_unspecified_variables(): |
|
x, y = symbols('x y') |
|
|
|
f = symbols('f', cls=Function) |
|
assert requires_partial(Derivative(f, x)) is False |
|
assert requires_partial(Derivative(f, x, y)) is True |
|
|