datamole-ai / gomez

Framework and implementation for mathematical optimization and solving non-linear systems of equations.
MIT License
43 stars 3 forks source link

Next version #9

Open pnevyk opened 7 months ago

pnevyk commented 7 months ago

Ever since I discovered the faer linear algebra library I wanted to rewrite gomez into it. For two reasons:

  1. Performance. The benchmarks for faer are very impressive. Moreover, the low level API allows to do operations, for which I am now forced to use cloning, in place.
  2. API. nalgebra is very flexible with the matrix storage, but it also means that it's very trait-heavy (our public API is unnecessarily complex due to that, and the implementations of solvers are even worse). Interface when using faer will be much simpler.

Half a year ago I actually spent some time on implementing the algorithms using faer, and after initial struggles I managed to do most of them (and some more, and in a much more modular structure). The code that I have is for an old version of faer and a lot of changes were made since that, but they should be mostly cosmetic.

The plan is as follows:

  1. Make some improvements to the API (more on that below).
  2. Release 0.5.0.
  3. Migrate everything to faer.
  4. Release 0.6.0.
  5. For a limited time period, make patches to 0.5.x branch if needed. This would be for people who want to continue using nalgebra.

Before fully migrating to faer, I would like to do some unrelated (or partly related) improvements to the API. Now I can think of these:

After all these changes are done and 0.5.0 is released, then I will migrate the whole library from nalgebra to faer.