rfeinman / pytorch-minimize

Newton and Quasi-Newton optimization with PyTorch
https://pytorch-minimize.readthedocs.io
MIT License
292 stars 34 forks source link

Support for complex tensors in LSMR #21

Open tvercaut opened 1 year ago

tvercaut commented 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