[fdfd.eme] do a better job of enforcing no gain

This commit is contained in:
Jan Petykiewicz 2026-04-17 22:24:53 -07:00
commit f3d13e1486
2 changed files with 127 additions and 2 deletions

View file

@ -81,8 +81,8 @@ def get_s(
if force_nogain:
# force S @ S.H diagonal
U, sing, V = numpy.linalg.svd(ss)
ss = numpy.diag(sing) @ U @ V
U, sing, Vh = numpy.linalg.svd(ss)
ss = U @ numpy.diag(numpy.minimum(sing, 1.0)) @ Vh
if force_reciprocal:
ss = 0.5 * (ss + ss.T)