VectorInterface
rewrite algorithms in terms of VectorInterface methods.
- Some additional cleanup can be done in terms of scalartype
- algorithms can be written in terms of bangbang-methods, possibly allowing tuples as vectors?
Codecov Report
Attention: Patch coverage is 81.79272% with 65 lines in your changes are missing coverage. Please review.
Project coverage is 82.05%. Comparing base (
e4932b4) to head (7a27157).
Additional details and impacted files
@@ Coverage Diff @@
## master #65 +/- ##
==========================================
- Coverage 82.30% 82.05% -0.25%
==========================================
Files 27 27
Lines 2741 2753 +12
==========================================
+ Hits 2256 2259 +3
- Misses 485 494 +9
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Hi Lukas; thanks for this great work. I was indeed considering switching to bangbang methods when adopting VectorInterface, so if you have time to try this out and see if there would be any unexpected consequences or complications, feel free to do so ...
@Jutho I seem to be stuck with the geneigsolve for out-of-place vectors, although I can't seem to locate what's going wrong. It produces matrices that are not positive definite, such that geneigh! fails, but I have absolutely no clue why this would be different for the out-of-place methods. I might look into it later this week, but any help is definitely welcome. (tests are ran by just commenting out modules "svdsolve.jl" and "expintegrator.jl")
Some small remaining remarks:
- I would like to still restructure some of the tests, such that there is less duplicated code in the tests, and less tests run multiple times.
- Somehow this still had the eigenvalue ad rules that are not in the main branch. It might be better to add these in a separate PR, which immediately adds the ADrules as a package extension.
- There are no tests for the eigsolve ad, but this should probably also happen in the separate pr as mentioned above
So, if the lights turn green, this should be ready for review.
I excluded AD rules from the new functionality, because we should probably rewrite that section anyways, using Package extensions.
Otherwise, I think everything should now work with VectorInterface, and the tests have been reorganised to extensively test everything with regular vectors, and then do some small additional tests with MinimalVec-type vectors.
In principle I think we can also remove/deprecate RecursiveVec and InnerProductVec, but this would probably require some deprecation update first?
Nightly failures seem due to Zygote failing?
I think so, it also seems to vary quite a bit depending on what version of nightly, so I think we can ignore this. We'll refactor that part anyways when we move the AD support to a package extension I guess.