Skip to content

Commit 2411db5

Browse files
committed
Remove evalf mixin
1 parent 7aaee63 commit 2411db5

File tree

2 files changed

+2
-34
lines changed

2 files changed

+2
-34
lines changed

symplyphysics/core/experimental/vectors/__init__.py

+1-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from typing import Any, Optional, Sequence
55

66
from sympy import Add, Atom, Basic, Expr, Mul, S, sympify, ask, Q, simplify
7-
from sympy.core.evalf import EvalfMixin
87
from sympy.core.parameters import global_parameters
98
from sympy.physics.units import Dimension
109
from sympy.physics.units.systems.si import dimsys_SI
@@ -16,7 +15,7 @@
1615
from symplyphysics.core.symbols.symbols import DimensionSymbol
1716

1817

19-
class VectorExpr(Basic, EvalfMixin): # type: ignore[misc]
18+
class VectorExpr(Basic): # type: ignore[misc]
2019
"""
2120
Base class for all vector expressions.
2221
"""
@@ -74,9 +73,6 @@ def _sympystr(self, _p: Printer) -> str:
7473
class VectorSymbol(DimensionSymbol, VectorExpr, Atom): # type: ignore[misc]
7574
"""
7675
Class representing a symbolic vector.
77-
78-
Note that the norm of the vector cannot be `0`, instead, use the pre-defined constant `ZERO`
79-
for the zero vector.
8076
"""
8177

8278
_norm: Optional[Expr]
@@ -203,9 +199,6 @@ def _eval_nseries(self, x: Any, n: Any, logx: Any, cdir: Any) -> Any:
203199
def _sympystr(self, p: Printer) -> str:
204200
return f"norm({p.doprint(self.argument)})"
205201

206-
def _eval_evalf(self, prec: int) -> VectorNorm:
207-
return VectorNorm(self.argument.evalf(n=prec)).doit()
208-
209202

210203
def norm(vector: VectorExpr) -> Expr:
211204
return VectorNorm(vector).doit()
@@ -296,9 +289,6 @@ def _sympystr(self, p: Printer) -> str:
296289

297290
return f"{p.doprint(vector)}*{p.doprint(value)}"
298291

299-
def _eval_evalf(self, prec: int) -> VectorScale:
300-
return VectorScale(self.vector.evalf(n=prec), self.scale.evalf(n=prec)).doit()
301-
302292

303293
class Scale(Expr): # type: ignore[misc]
304294
"""
@@ -416,9 +406,6 @@ def __hash__(self) -> int:
416406
def _sympystr(self, p: Printer) -> str:
417407
return " + ".join(map(p.doprint, self.args))
418408

419-
def _eval_evalf(self, prec: int) -> VectorAdd:
420-
return VectorAdd(*(addend.evalf(n=prec) for addend in self.args)).doit()
421-
422409

423410
__all__ = [
424411
"ZERO",

test/core/experimental/vectors/test_vector.py

+1-20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pytest import raises
2-
from sympy import Basic, Symbol as SymSymbol, pi
2+
from sympy import Basic, Symbol as SymSymbol, Atom
33
from symplyphysics import units, dimensionless, symbols, assert_equal
44
from symplyphysics.core.expr_comparisons import expr_equals
55
from symplyphysics.core.errors import UnitsError
@@ -120,13 +120,6 @@ def test_vector_scaling() -> None:
120120
scaled_acceleration = scaled_force.subs(force, acceleration)
121121
assert scaled_acceleration == acceleration * scale
122122

123-
# .evalf
124-
125-
# TODO: for some reason this doesn't produce the intended result
126-
scaled_vector: VectorScale = force * pi
127-
with raises(AssertionError):
128-
assert scaled_vector.evalf(3) == force * pi.evalf(3)
129-
130123

131124
def test_vector_norm() -> None:
132125
# VectorSymbol
@@ -164,12 +157,6 @@ def test_vector_norm() -> None:
164157
# NOTE: We have to force `.doit` after substitution since `__new__` doesn't handle it
165158
assert norm(force).subs(force, unit).doit() == norm(unit)
166159

167-
# .evalf
168-
169-
# NOTE: Both sides differ slightly, (LHS - RHS) / norm(F) = -4.8e-4
170-
with raises(AssertionError):
171-
assert expr_equals(norm(force * pi).evalf(3), norm(force) * pi.evalf(3))
172-
173160

174161
def test_vector_add() -> None:
175162
force_1 = VectorSymbol("F_1", units.force)
@@ -205,9 +192,3 @@ def test_vector_add() -> None:
205192

206193
# NOTE: We have to force `.doit` after substitution since `__new__` doesn't handle it
207194
assert sum_123.subs(force_3, force_1).doit() == force_1 * 2 + force_2
208-
209-
# .evalf
210-
211-
# NOTE: for some reason, `pi` in the LHS simply gets evaluated with maximum pricision
212-
with raises(AssertionError):
213-
assert (force_1 * pi + force_2).evalf(3) == force_1 * pi.evalf(3) + force_2

0 commit comments

Comments
 (0)