From 168872811b9a155d26a279bd9b75ead4b33dc953 Mon Sep 17 00:00:00 2001 From: GDeLaurentis Date: Tue, 23 Apr 2024 19:49:11 +0100 Subject: [PATCH] Implemented field infinitesimal element (numerical). --- syngular/field.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/syngular/field.py b/syngular/field.py index a4a38c0..d1c4a70 100644 --- a/syngular/field.py +++ b/syngular/field.py @@ -146,19 +146,28 @@ def random_element(self, shape=(1, )): def epsilon(self, shape=(1, ), ): if shape == (1, ): - if self.name == "padic": - return self.characteristic - elif self.name == "finite field": - raise ValueError("Finite field infinitesimal does not exist.") - elif self.name == "mpc": - return mpmath.mpf('1e-30') - else: - raise NotImplementedError + if not hasattr(self, "_ε"): + if self.name == "padic": + self._ε = self.characteristic + elif self.name == "finite field": + raise ValueError("Finite field infinitesimal does not exist.") + elif self.name == "mpc": + self._ε = mpmath.mpf('1e-30') + else: + raise NotImplementedError + return self._ε else: raise NotImplementedError - def ε(self, *args, **kwargs): - return self.epsilon(*args, **kwargs) + @property + def ε(self): + if not hasattr(self, "_ε"): + self._ε = self.epsilon + return self._ε + + @ε.setter + def ε(self, temp_ε): + self._ε = temp_ε # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #