jamtur01's picture
Upload folder using huggingface_hub
9c6594c verified
from sympy.printing.codeprinter import CodePrinter, PrintMethodNotImplementedError
from sympy.core import symbols
from sympy.core.symbol import Dummy
from sympy.testing.pytest import raises
from sympy import cos
from sympy.utilities.lambdify import lambdify
from math import cos as math_cos
from sympy.printing.lambdarepr import LambdaPrinter
def setup_test_printer(**kwargs):
p = CodePrinter(settings=kwargs)
p._not_supported = set()
p._number_symbols = set()
return p
def test_print_Dummy():
d = Dummy('d')
p = setup_test_printer()
assert p._print_Dummy(d) == "d_%i" % d.dummy_index
def test_print_Symbol():
x, y = symbols('x, if')
p = setup_test_printer()
assert p._print(x) == 'x'
assert p._print(y) == 'if'
p.reserved_words.update(['if'])
assert p._print(y) == 'if_'
p = setup_test_printer(error_on_reserved=True)
p.reserved_words.update(['if'])
with raises(ValueError):
p._print(y)
p = setup_test_printer(reserved_word_suffix='_He_Man')
p.reserved_words.update(['if'])
assert p._print(y) == 'if_He_Man'
def test_lambdify_LaTeX_symbols_issue_23374():
# Create symbols with Latex style names
x1, x2 = symbols("x_{1} x_2")
# Lambdify the function
f1 = lambdify([x1, x2], cos(x1 ** 2 + x2 ** 2))
# Test that the function works correctly (numerically)
assert f1(1, 2) == math_cos(1 ** 2 + 2 ** 2)
# Explicitly generate a custom printer to verify the naming convention
p = LambdaPrinter()
expr_str = p.doprint(cos(x1 ** 2 + x2 ** 2))
assert 'x_1' in expr_str
assert 'x_2' in expr_str
def test_issue_15791():
class CrashingCodePrinter(CodePrinter):
def emptyPrinter(self, obj):
raise NotImplementedError
from sympy.matrices import (
MutableSparseMatrix,
ImmutableSparseMatrix,
)
c = CrashingCodePrinter()
# these should not silently succeed
with raises(PrintMethodNotImplementedError):
c.doprint(ImmutableSparseMatrix(2, 2, {}))
with raises(PrintMethodNotImplementedError):
c.doprint(MutableSparseMatrix(2, 2, {}))