diff --git a/sympy/printing/pycode.py b/sympy/printing/pycode.py index 1d04195fce7d..9ecdf83469a6 100644 --- a/sympy/printing/pycode.py +++ b/sympy/printing/pycode.py @@ -970,6 +970,26 @@ def _print_fresnelc(self, expr): self._module_format("scipy.special.fresnel"), self._print(expr.args[0])) + def _print_airyai(self, expr): + return "{0}({1})[0]".format( + self._module_format("scipy.special.airy"), + self._print(expr.args[0])) + + def _print_airyaiprime(self, expr): + return "{0}({1})[1]".format( + self._module_format("scipy.special.airy"), + self._print(expr.args[0])) + + def _print_airybi(self, expr): + return "{0}({1})[2]".format( + self._module_format("scipy.special.airy"), + self._print(expr.args[0])) + + def _print_airybiprime(self, expr): + return "{0}({1})[3]".format( + self._module_format("scipy.special.airy"), + self._print(expr.args[0])) + for k in SciPyPrinter._kf: setattr(SciPyPrinter, '_print_%s' % k, _print_known_func) diff --git a/sympy/printing/tests/test_pycode.py b/sympy/printing/tests/test_pycode.py index 1f061217d4fb..0ecfb2caa38f 100644 --- a/sympy/printing/tests/test_pycode.py +++ b/sympy/printing/tests/test_pycode.py @@ -284,3 +284,39 @@ def test_beta(): prntr = MpmathPrinter() assert prntr.doprint(expr) == 'mpmath.beta(x, y)' + +def test_airy(): + from sympy import airyai, airybi + + expr1 = airyai(x) + expr2 = airybi(x) + + prntr = SciPyPrinter() + assert prntr.doprint(expr1) == 'scipy.special.airy(x)[0]' + assert prntr.doprint(expr2) == 'scipy.special.airy(x)[2]' + + prntr = NumPyPrinter() + assert prntr.doprint(expr1) == ' # Not supported in Python with NumPy:\n # airyai\nairyai(x)' + assert prntr.doprint(expr2) == ' # Not supported in Python with NumPy:\n # airybi\nairybi(x)' + + prntr = PythonCodePrinter() + assert prntr.doprint(expr1) == ' # Not supported in Python:\n # airyai\nairyai(x)' + assert prntr.doprint(expr2) == ' # Not supported in Python:\n # airybi\nairybi(x)' + +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)'