Currently we use B=J'J which is positive semidefinite by construction, but that information is implicitly hardcoded into a lot of functions. The relevant code should be revamped:
- using
J=QR, store R for B=R'R. (double check algebra), in a wrapper type, eg called SymmetricProduct,
- remove
_factorize, just implement \ using the decomposition above and benchmark,
- reimplement
ellipsoidal_norm using this type.
- expose checking if
B is positive definite using the decomposition.
- add
AbstractMatrix(...) for this type (for use in hvcat/GES)
Then, later on, if a non-symmetric local model is considered, either defaults will be used or we can code that nicely, without making implicit assumptions about B like we currently do now.
Currently we use
B=J'Jwhich is positive semidefinite by construction, but that information is implicitly hardcoded into a lot of functions. The relevant code should be revamped:J=QR, storeRforB=R'R. (double check algebra), in a wrapper type, eg calledSymmetricProduct,_factorize, just implement\using the decomposition above and benchmark,ellipsoidal_normusing this type.Bis positive definite using the decomposition.AbstractMatrix(...)for this type (for use inhvcat/GES)Then, later on, if a non-symmetric local model is considered, either defaults will be used or we can code that nicely, without making implicit assumptions about
Blike we currently do now.