From 3ce1c63f9cdee385040c5f1146a78b7acbcce71e Mon Sep 17 00:00:00 2001
From: Philipp Arras <c@philipp-arras.de>
Date: Thu, 30 Jan 2025 12:33:17 +0100
Subject: [PATCH] DiagonalOperator: cache diagmin

---
 src/operators/diagonal_operator.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/operators/diagonal_operator.py b/src/operators/diagonal_operator.py
index 2896ca4be..213d7a066 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)
-- 
GitLab