Open tvercaut opened 1 year ago
As illustrated in the scipy unit tests, the scipy implementation of LSMR supports complex matrices: https://github.com/scipy/scipy/blob/main/scipy/sparse/linalg/_isolve/tests/test_lsmr.py
The version in pytorch-minimize currently does not as the real scalar numbers are created from the dtype of b rather than the equivalent real version.
A quick try to adapt it seems to work as shown here: https://github.com/cai4cai/torchsparsegradutils/blob/main/torchsparsegradutils/utils/lsmr.py
It also passes the ported scipy unit tests: https://github.com/cai4cai/torchsparsegradutils/blob/main/tests/test_lsmr.py
As illustrated in the scipy unit tests, the scipy implementation of LSMR supports complex matrices: https://github.com/scipy/scipy/blob/main/scipy/sparse/linalg/_isolve/tests/test_lsmr.py
The version in pytorch-minimize currently does not as the real scalar numbers are created from the dtype of b rather than the equivalent real version.
A quick try to adapt it seems to work as shown here: https://github.com/cai4cai/torchsparsegradutils/blob/main/torchsparsegradutils/utils/lsmr.py
It also passes the ported scipy unit tests: https://github.com/cai4cai/torchsparsegradutils/blob/main/tests/test_lsmr.py