Iteration 0005 — ccc6bedc3559 (accepted)¶
GitHub commit: ccc6bedc3559 Published branch: fermilink-optimize/pyscf-davidson
Change summary¶
Correct real TDDFT Davidson preconditioning to pass the full lower LR residual block by using -R_y in _lr_eig.real_eig
Acceptance rationale¶
Primary metric improved 23.1% vs incumbent with correctness passing, no hard reject, and no forbidden-path edits.
Guardrails & metrics¶
field |
value |
|---|---|
decision |
ACCEPTED |
correctness |
ok |
correctness mode |
field_tolerances |
hard reject |
no |
guardrail errors |
0 |
incumbent commit |
|
candidate commit |
|
incumbent metric |
58.7037 |
candidate metric |
45.1467 |
baseline metric |
128.753 |
Δ vs incumbent |
+23.094% (lower-is-better sign) |
changed files |
pyscf/tdscf/_lr_eig.py |
Diffstat¶
pyscf/tdscf/_lr_eig.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Diff¶
diff --git a/pyscf/tdscf/_lr_eig.py b/pyscf/tdscf/_lr_eig.py
index 87fdadfea..e9a3b6656 100644
--- a/pyscf/tdscf/_lr_eig.py
+++ b/pyscf/tdscf/_lr_eig.py
@@ -693,7 +693,7 @@ def real_eig(aop, x0, precond, tol_residual=1e-5, nroots=1, x0sym=None, pick=Non
break
r_index = r_norms > tol_residual
- XY_new = precond(np.vstack([R_x[:,r_index], R_y[:,r_index]]).T, w[r_index])
+ XY_new = precond(np.vstack([R_x[:,r_index], -R_y[:,r_index]]).T, w[r_index])
X_new = XY_new[:,:A_size].T
Y_new = XY_new[:,A_size:].T
if x0sym is None: