mirror of
https://github.com/TREX-CoE/Sherman-Morrison.git
synced 2024-11-04 05:03:59 +01:00
67f5379bea
- Split SM2 into SM2 and SM2star so that keeps all updates for later when used in combination with the Woodbury kernels to improve the numerical accuracy to the same level as that of SM2.
21 lines
1013 B
C++
21 lines
1013 B
C++
// Naïve Sherman Morrison
|
|
void SM1(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
|
double *Updates, unsigned int *Updates_index);
|
|
|
|
// Sherman Morrison, with J. Slagel splitting
|
|
// http://hdl.handle.net/10919/52966
|
|
void SM2(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
|
double *Updates, unsigned int *Updates_index);
|
|
|
|
void SM2star(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
|
double *Updates, unsigned int *Updates_index, double *later_updates, unsigned int* later_index, unsigned int *later);
|
|
|
|
// Sherman Morrison, leaving zero denominators for later
|
|
void SM3(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
|
double *Updates, unsigned int *Updates_index);
|
|
|
|
// Sherman Morrison (SM3+SM2), leaving zero denominators for later (SM3), and
|
|
// when none are left falling back on Splitting (SM2)
|
|
void SM4(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
|
double *Updates, unsigned int *Updates_index);
|