fix: function recursive argument evaluation
This commit is contained in:
@@ -176,7 +176,7 @@ class FunctionExpression(Expression):
|
|||||||
func = self._funcs.get(self.function)
|
func = self._funcs.get(self.function)
|
||||||
if not func:
|
if not func:
|
||||||
raise ValueError(f"Unknown function {self.function}")
|
raise ValueError(f"Unknown function {self.function}")
|
||||||
return func(x)
|
return func(self.argument.eval(x))
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ def _neg(operand):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_unary_minus(expression, expected):
|
def test_unary_minus_parse(expression, expected):
|
||||||
assert parse(expression) == expected
|
assert parse(expression) == expected
|
||||||
|
|
||||||
|
|
||||||
@@ -271,7 +271,12 @@ def test_unary_minus(expression, expected):
|
|||||||
("(-2)^2", 0, 4), # (-2)^2 = 4
|
("(-2)^2", 0, 4), # (-2)^2 = 4
|
||||||
("pi", 0, math.pi),
|
("pi", 0, math.pi),
|
||||||
("e", 0, math.e),
|
("e", 0, math.e),
|
||||||
|
("abs(-100)", 0, 100),
|
||||||
|
("abs(pi)", 0, math.pi),
|
||||||
|
("abs(x)", 0, 0),
|
||||||
|
("abs(x)", -1.0, 1.0),
|
||||||
|
("abs(cos(x))", 0, 1.0),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_unary_minus_eval(expression, x, expected):
|
def test_eval(expression, x, expected):
|
||||||
assert parse(expression).eval(x) == expected
|
assert parse(expression).eval(x) == expected
|
||||||
|
|||||||
Reference in New Issue
Block a user