2021-03-15 15:59:20 +01:00
|
|
|
// Naïve Sherman Morrison
|
|
|
|
void SM1(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
2021-07-29 12:01:26 +02:00
|
|
|
double *Updates, unsigned int *Updates_index, const double breakdown);
|
2021-03-15 15:59:20 +01:00
|
|
|
|
|
|
|
// Sherman Morrison, with J. Slagel splitting
|
|
|
|
// http://hdl.handle.net/10919/52966
|
|
|
|
void SM2(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
2021-07-29 12:01:26 +02:00
|
|
|
double *Updates, unsigned int *Updates_index, const double breakdown);
|
2021-03-15 15:59:20 +01:00
|
|
|
|
2021-07-07 12:06:31 +02:00
|
|
|
void SM2star(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
2021-07-12 08:13:58 +02:00
|
|
|
double *Updates, unsigned int *Updates_index,
|
|
|
|
double *later_updates, unsigned int *later_index,
|
2021-07-29 12:01:26 +02:00
|
|
|
unsigned int *later, const double breakdown);
|
2021-07-07 12:06:31 +02:00
|
|
|
|
2021-03-15 15:59:20 +01:00
|
|
|
// Sherman Morrison, leaving zero denominators for later
|
|
|
|
void SM3(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
|
2021-07-29 12:01:26 +02:00
|
|
|
double *Updates, unsigned int *Updates_index, const double breakdown);
|
2021-05-06 10:51:42 +02:00
|
|
|
|
|
|
|
// 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,
|
2021-07-29 12:01:26 +02:00
|
|
|
double *Updates, unsigned int *Updates_index, const double breakdown);
|