amen_mv weirdly exceeds number of sweeps limit when working with some complex-valued matrices and vectors.
Here is the simplest example I could find:
d = 3
x = tt.rand(2, d)
x += 0.1j * x
a = tt.matrix(tt.rand(4, d))
y = amen_mv(a, x, 1e-12, nswp=1000)[0]
error = np.linalg.norm(y.full(asvector=True) - np.dot(a.full(), x.full(asvector=True)))
print(f'Error: {error}')
This results in:
amen-mv: swp=1{1}, max_dx=1.564e+00, max_r=4
amen-mv: swp=1{0}, max_dx=3.960e-01, max_r=2
amen-mv: swp=2{1}, max_dx=2.027e-01, max_r=4
.
.
.
amen-mv: swp=999{0}, max_dx=3.928e-01, max_r=2
amen-mv: swp=1000{1}, max_dx=2.005e-01, max_r=4
amen-mv: swp=1000{0}, max_dx=3.921e-01, max_r=2
Error: 5.999547960677571e-14
The method converges quickly, though, as the error is negligible even if nswp=1:
amen-mv: swp=1{1}, max_dx=3.305e+00, max_r=4
amen-mv: swp=1{0}, max_dx=3.960e-01, max_r=2
Error: 1.1873159181672063e-14
amen_mvweirdly exceeds number of sweeps limit when working with some complex-valued matrices and vectors.Here is the simplest example I could find:
This results in:
The method converges quickly, though, as the error is negligible even if
nswp=1: