def test_issue_16535_16536(): from sympy import lowergamma, uppergamma a = symbols('a') expr1 = lowergamma(a, x) expr2 = uppergamma(a, x) prntr = SciPyPrinter() assert prntr.doprint( expr1) == 'scipy.special.gamma(a)*scipy.special.gammainc(a, x)' assert prntr.doprint( expr2) == 'scipy.special.gamma(a)*scipy.special.gammaincc(a, x)' prntr = NumPyPrinter() assert prntr.doprint( expr1 ) == ' # Not supported in Python with NumPy:\n # lowergamma\nlowergamma(a, x)' assert prntr.doprint( expr2 ) == ' # Not supported in Python with NumPy:\n # uppergamma\nuppergamma(a, x)' prntr = PythonCodePrinter() assert prntr.doprint( expr1 ) == ' # Not supported in Python:\n # lowergamma\nlowergamma(a, x)' assert prntr.doprint( expr2 ) == ' # Not supported in Python:\n # uppergamma\nuppergamma(a, x)'
def test_SciPyPrinter(): p = SciPyPrinter() expr = acos(x) assert 'numpy' not in p.module_imports assert p.doprint(expr) == 'numpy.arccos(x)' assert 'numpy' in p.module_imports assert not any(m.startswith('scipy') for m in p.module_imports) smat = SparseMatrix(2, 5, {(0, 1): 3}) assert p.doprint(smat) == 'scipy.sparse.coo_matrix([3], ([0], [1]), shape=(2, 5))' assert 'scipy.sparse' in p.module_imports
def test_airy_prime(): from sympy import airyaiprime, airybiprime expr1 = airyaiprime(x) expr2 = airybiprime(x) prntr = SciPyPrinter() assert prntr.doprint(expr1) == 'scipy.special.airy(x)[1]' assert prntr.doprint(expr2) == 'scipy.special.airy(x)[3]' prntr = NumPyPrinter() assert prntr.doprint( expr1 ) == ' # Not supported in Python with NumPy:\n # airyaiprime\nairyaiprime(x)' assert prntr.doprint( expr2 ) == ' # Not supported in Python with NumPy:\n # airybiprime\nairybiprime(x)' prntr = PythonCodePrinter() assert prntr.doprint( expr1 ) == ' # Not supported in Python:\n # airyaiprime\nairyaiprime(x)' assert prntr.doprint( expr2 ) == ' # Not supported in Python:\n # airybiprime\nairybiprime(x)'
def test_Integral(): from sympy import Integral, exp single = Integral(exp(-x), (x, 0, oo)) double = Integral(x**2 * exp(x * y), (x, -z, z), (y, 0, z)) indefinite = Integral(x**2, x) evaluateat = Integral(x**2, (x, 1)) prntr = SciPyPrinter() assert prntr.doprint( single ) == 'scipy.integrate.quad(lambda x: numpy.exp(-x), 0, numpy.PINF)[0]' assert prntr.doprint( double ) == 'scipy.integrate.nquad(lambda x, y: x**2*numpy.exp(x*y), ((-z, z), (0, z)))[0]' raises(NotImplementedError, lambda: prntr.doprint(indefinite)) raises(NotImplementedError, lambda: prntr.doprint(evaluateat)) prntr = MpmathPrinter() assert prntr.doprint( single) == 'mpmath.quad(lambda x: mpmath.exp(-x), (0, mpmath.inf))' assert prntr.doprint( double ) == 'mpmath.quad(lambda x, y: x**2*mpmath.exp(x*y), (-z, z), (0, z))' raises(NotImplementedError, lambda: prntr.doprint(indefinite)) raises(NotImplementedError, lambda: prntr.doprint(evaluateat))
def test_sqrt(): prntr = PythonCodePrinter() assert prntr._print_Pow(sqrt(x), rational=False) == 'math.sqrt(x)' assert prntr._print_Pow(1 / sqrt(x), rational=False) == '1/math.sqrt(x)' prntr = PythonCodePrinter({'standard': 'python2'}) assert prntr._print_Pow(sqrt(x), rational=True) == 'x**(1./2.)' assert prntr._print_Pow(1 / sqrt(x), rational=True) == 'x**(-1./2.)' prntr = PythonCodePrinter({'standard': 'python3'}) assert prntr._print_Pow(sqrt(x), rational=True) == 'x**(1/2)' assert prntr._print_Pow(1 / sqrt(x), rational=True) == 'x**(-1/2)' prntr = MpmathPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == 'mpmath.sqrt(x)' assert prntr._print_Pow(sqrt(x), rational=True) == \ "x**(mpmath.mpf(1)/mpmath.mpf(2))" prntr = NumPyPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == 'numpy.sqrt(x)' assert prntr._print_Pow(sqrt(x), rational=True) == 'x**(1/2)' prntr = SciPyPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == 'numpy.sqrt(x)' assert prntr._print_Pow(sqrt(x), rational=True) == 'x**(1/2)' prntr = SymPyPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == 'sympy.sqrt(x)' assert prntr._print_Pow(sqrt(x), rational=True) == 'x**(1/2)'
def test_sqrt(): prntr = PythonCodePrinter() assert prntr._print_Pow(sqrt(x), rational=False) == "math.sqrt(x)" assert prntr._print_Pow(1 / sqrt(x), rational=False) == "1/math.sqrt(x)" prntr = PythonCodePrinter({"standard": "python2"}) assert prntr._print_Pow(sqrt(x), rational=True) == "x**(1./2.)" assert prntr._print_Pow(1 / sqrt(x), rational=True) == "x**(-1./2.)" prntr = PythonCodePrinter({"standard": "python3"}) assert prntr._print_Pow(sqrt(x), rational=True) == "x**(1/2)" assert prntr._print_Pow(1 / sqrt(x), rational=True) == "x**(-1/2)" prntr = MpmathPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == "mpmath.sqrt(x)" assert (prntr._print_Pow( sqrt(x), rational=True) == "x**(mpmath.mpf(1)/mpmath.mpf(2))") prntr = NumPyPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == "numpy.sqrt(x)" assert prntr._print_Pow(sqrt(x), rational=True) == "x**(1/2)" prntr = SciPyPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == "numpy.sqrt(x)" assert prntr._print_Pow(sqrt(x), rational=True) == "x**(1/2)" prntr = SymPyPrinter() assert prntr._print_Pow(sqrt(x), rational=False) == "sympy.sqrt(x)" assert prntr._print_Pow(sqrt(x), rational=True) == "x**(1/2)"
def test_beta(): from sympy import beta expr = beta(x, y) prntr = SciPyPrinter() assert prntr.doprint(expr) == 'scipy.special.beta(x, y)' prntr = NumPyPrinter() assert prntr.doprint(expr) == 'math.gamma(x)*math.gamma(y)/math.gamma(x + y)' prntr = PythonCodePrinter() assert prntr.doprint(expr) == 'math.gamma(x)*math.gamma(y)/math.gamma(x + y)' prntr = MpmathPrinter() assert prntr.doprint(expr) == 'mpmath.beta(x, y)'
def __init__(self, glob=None, locale=None, printer=None): self._global = glob self._locale = locale self._body = [] if printer is None: printer = SciPyPrinter({ 'fully_qualified_modules': True, 'inline': True, 'allow_unknown_functions': True, 'user_functions': {} }) self._printer = printer
def test_fresnel_integrals(): from sympy import fresnelc, fresnels expr1 = fresnelc(x) expr2 = fresnels(x) prntr = SciPyPrinter() assert prntr.doprint(expr1) == 'scipy.special.fresnel(x)[1]' assert prntr.doprint(expr2) == 'scipy.special.fresnel(x)[0]' prntr = NumPyPrinter() assert prntr.doprint(expr1) == ' # Not supported in Python with NumPy:\n # fresnelc\nfresnelc(x)' assert prntr.doprint(expr2) == ' # Not supported in Python with NumPy:\n # fresnels\nfresnels(x)' prntr = PythonCodePrinter() assert prntr.doprint(expr1) == ' # Not supported in Python:\n # fresnelc\nfresnelc(x)' assert prntr.doprint(expr2) == ' # Not supported in Python:\n # fresnels\nfresnels(x)' prntr = MpmathPrinter() assert prntr.doprint(expr1) == 'mpmath.fresnelc(x)' assert prntr.doprint(expr2) == 'mpmath.fresnels(x)'
def test_SciPyPrinter(): p = SciPyPrinter() expr = acos(x) assert 'numpy' not in p.module_imports assert p.doprint(expr) == 'numpy.arccos(x)' assert 'numpy' in p.module_imports assert not any(m.startswith('scipy') for m in p.module_imports) smat = SparseMatrix(2, 5, {(0, 1): 3}) assert p.doprint(smat) == \ 'scipy.sparse.coo_matrix(([3], ([0], [1])), shape=(2, 5))' assert 'scipy.sparse' in p.module_imports assert p.doprint(S.GoldenRatio) == 'scipy.constants.golden_ratio' assert p.doprint(S.Pi) == 'scipy.constants.pi' assert p.doprint(S.Exp1) == 'numpy.e'
def test_SciPyPrinter(): p = SciPyPrinter() expr = acos(x) assert "numpy" not in p.module_imports assert p.doprint(expr) == "numpy.arccos(x)" assert "numpy" in p.module_imports assert not any(m.startswith("scipy") for m in p.module_imports) smat = SparseMatrix(2, 5, {(0, 1): 3}) assert p.doprint( smat) == "scipy.sparse.coo_matrix([3], ([0], [1]), shape=(2, 5))" assert "scipy.sparse" in p.module_imports assert p.doprint(S.GoldenRatio) == "scipy.constants.golden_ratio" assert p.doprint(S.Pi) == "scipy.constants.pi" assert p.doprint(S.Exp1) == "numpy.e"
def test_frac(): from sympy import frac expr = frac(x) prntr = NumPyPrinter() assert prntr.doprint(expr) == 'numpy.mod(x, 1)' prntr = SciPyPrinter() assert prntr.doprint(expr) == 'numpy.mod(x, 1)' prntr = PythonCodePrinter() assert prntr.doprint(expr) == 'x % 1' prntr = MpmathPrinter() assert prntr.doprint(expr) == 'mpmath.frac(x)' prntr = SymPyPrinter() assert prntr.doprint(expr) == 'sympy.functions.elementary.integers.frac(x)'
def test_numerical_accuracy_functions(): prntr = SciPyPrinter() assert prntr.doprint(expm1(x)) == 'numpy.expm1(x)' assert prntr.doprint(log1p(x)) == 'numpy.log1p(x)' assert prntr.doprint(cosm1(x)) == 'scipy.special.cosm1(x)'
def test_beta(): from sympy import beta expr = beta(x, y) prntr = SciPyPrinter() assert prntr.doprint(expr) == "scipy.special.beta(x, y)" prntr = NumPyPrinter() assert prntr.doprint( expr) == "math.gamma(x)*math.gamma(y)/math.gamma(x + y)" prntr = PythonCodePrinter() assert prntr.doprint( expr) == "math.gamma(x)*math.gamma(y)/math.gamma(x + y)" prntr = PythonCodePrinter({"allow_unknown_functions": True}) assert prntr.doprint( expr) == "math.gamma(x)*math.gamma(y)/math.gamma(x + y)" prntr = MpmathPrinter() assert prntr.doprint(expr) == "mpmath.beta(x, y)"