`amen_mv` exceeds sweep limit when working with complex numbers
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 264
- Forks
- 73
- PR merge metrics
- No merged PRs in 30d
Description
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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the amen_mv entry point and reproduce the supplied Python example with complex-valued x and nswp=1000. Check why the convergence condition does not stop despite the negligible reported error; done means the example terminates promptly without exceeding the sweep limit and preserves the accurate result.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100