diff --git a/nifty5/field.py b/nifty5/field.py index 524a4f49f53e0c1dfae4f5b4c67e833705107395..a79a972b5181819556b1da3aaf3c854bb0b87f3b 100644 --- a/nifty5/field.py +++ b/nifty5/field.py @@ -675,3 +675,9 @@ for f in ["sqrt", "exp", "log", "tanh"]: return Field(self._domain, getattr(dobj, f)(self.val)) return func2 setattr(Field, f, func(f)) + + +def func2(self): + np.clip(self.val, -300, 300, out=self.val) + return Field(self._domain, getattr(dobj, 'exp')(self.val)) +setattr(Field, 'clipped_exp', func2) diff --git a/nifty5/linearization.py b/nifty5/linearization.py index ba82df0ea26c47820e1c5d35158182f95b31326a..1ba1022cc67a2202889bad84f2d38914cdebc703 100644 --- a/nifty5/linearization.py +++ b/nifty5/linearization.py @@ -176,6 +176,10 @@ class Linearization(object): tmp = self._val.exp() return self.new(tmp, makeOp(tmp)(self._jac)) + def clipped_exp(self): + tmp = self._val.clipped_exp() + return self.new(tmp, makeOp(tmp)(self._jac)) + def log(self): tmp = self._val.log() return self.new(tmp, makeOp(1./self._val)(self._jac)) diff --git a/nifty5/operators/operator.py b/nifty5/operators/operator.py index 1165c02d42f358f84eb53c0106172a7f6e8c91f0..7cedd9df0e3de68fee629747e3b9444c6ee55e29 100644 --- a/nifty5/operators/operator.py +++ b/nifty5/operators/operator.py @@ -88,7 +88,7 @@ class Operator(NiftyMetaBase()): return self.__class__.__name__ -for f in ["sqrt", "exp", "log", "tanh", "positive_tanh"]: +for f in ["sqrt", "exp", "log", "tanh", "positive_tanh", 'clipped_exp']: def func(f): def func2(self): fa = _FunctionApplier(self.target, f)