diff --git a/nifty5/operators/scaling_operator.py b/nifty5/operators/scaling_operator.py index a4b20ab07044e05c2e2eaaf24711e5688bd69401..1e14b62ed13de6c5e3cddfa0b1f8b6f6c3366ee3 100644 --- a/nifty5/operators/scaling_operator.py +++ b/nifty5/operators/scaling_operator.py @@ -35,6 +35,14 @@ class ScalingOperator(EndomorphicOperator): ----- :class:`Operator` supports the multiplication with a scalar. So one does not need instantiate :class:`ScalingOperator` explicitly in most cases. + + Formally, this operator always supports all operation modes (times, + adjoint_times, inverse_times and inverse_adjoint_times), even if `factor` + is 0 or infinity. It is the user's responsibility to apply the operator + only in appropriate ways (e.g. call inverse_times only if `factor` is + nonzero). + + This shortcoming will hopefully be fixed in the future. """ def __init__(self, factor, domain): @@ -44,10 +52,7 @@ class ScalingOperator(EndomorphicOperator): raise TypeError("Scalar required") self._factor = factor self._domain = makeDomain(domain) - if self._factor == 0.: - self._capability = self.TIMES | self.ADJOINT_TIMES - else: - self._capability = self._all_ops + self._capability = self._all_ops def apply(self, x, mode): self._check_input(x, mode)