diff --git a/src/operators/diagonal_operator.py b/src/operators/diagonal_operator.py
index 2896ca4be461b36cb737cf5d15e31cf929b244b9..213d7a0662ae578bf4eb5e687fa13aeec2f4f347 100644
--- a/src/operators/diagonal_operator.py
+++ b/src/operators/diagonal_operator.py
@@ -116,7 +116,15 @@ class DiagonalOperator(EndomorphicOperator):
         self._complex = utilities.iscomplextype(self._ldiag.dtype)
         self._capability = self._all_ops
         if not self._complex:
-            self._diagmin = self._ldiag.min()
+            self._diagmin_cache = None
+
+    @property
+    def _diagmin(self):
+        if self._complex:
+            raise RuntimeError("complex DiagonalOperator does not have _diagmin")
+        if self._diagmin_cache is None:
+            self._diagmin_cache = self._ldiag.min()
+        return self._diagmin_cache
 
     def _from_ldiag(self, spc, ldiag, sampling_dtype, trafo):
         res = DiagonalOperator.__new__(DiagonalOperator)