mirror of
https://github.com/TREX-CoE/Sherman-Morrison.git
synced 2024-11-03 20:54:08 +01:00
68 lines
3.2 KiB
C
68 lines
3.2 KiB
C
#include <mkl_lapacke.h>
|
|
#include <mkl.h>
|
|
|
|
lapack_int inverse(double *A, uint64_t Dim, uint64_t LDS);
|
|
|
|
int min(int a, int b);
|
|
|
|
uint32_t qmckl_sherman_morrison(
|
|
const uint64_t vLDS, const uint64_t vDim, const uint64_t N_updates,
|
|
const double *__restrict __attribute__((aligned(8))) Updates,
|
|
const uint64_t *__restrict Updates_index, const double breakdown,
|
|
double *__restrict __attribute__((aligned(8))) Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
uint32_t qmckl_sherman_morrison_splitting(
|
|
const uint64_t vLDS, const uint64_t vDim, const uint64_t N_updates,
|
|
const double *__restrict __attribute__((aligned(8))) Updates,
|
|
const uint64_t *__restrict Updates_index, const double breakdown,
|
|
double *__restrict __attribute__((aligned(8))) Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
uint32_t qmckl_sherman_morrison_smw32s(
|
|
const uint64_t vLDS, const uint64_t vDim, const uint64_t N_updates,
|
|
const double *__restrict __attribute__((aligned(8))) Updates,
|
|
const uint64_t *__restrict Updates_index, const double breakdown,
|
|
double *__restrict __attribute__((aligned(8))) Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
uint32_t qmckl_woodbury_3(const uint64_t vLDS, const uint64_t vDim,
|
|
const double *__restrict __attribute__((aligned(8)))
|
|
Updates,
|
|
const uint64_t *__restrict Updates_index,
|
|
const double breakdown,
|
|
double *__restrict __attribute__((aligned(8)))
|
|
Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
uint32_t qmckl_woodbury_k(const uint64_t vLDS,
|
|
const uint64_t vDim,
|
|
const uint64_t N_updates,
|
|
const double *__restrict __attribute__((aligned(8))) Updates,
|
|
const uint64_t *__restrict Updates_index,
|
|
const double breakdown,
|
|
double *__restrict __attribute__((aligned(8))) Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
uint32_t qmckl_woodbury_2(const uint64_t vLDS, const uint64_t vDim,
|
|
const double *__restrict __attribute__((aligned(8)))
|
|
Updates,
|
|
const uint64_t *__restrict Updates_index,
|
|
const double breakdown,
|
|
double *__restrict __attribute__((aligned(8)))
|
|
Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
void detupd(const uint64_t Dim, const uint64_t LDS,
|
|
const double *__restrict __attribute__((aligned(8))) Updates,
|
|
const uint64_t *__restrict Updates_index,
|
|
double *__restrict __attribute__((aligned(8))) Slater_inv,
|
|
double *__restrict determinant);
|
|
|
|
uint32_t qmckl_sherman_morrison_later(
|
|
const uint64_t vLDS, const uint64_t vDim, const uint64_t N_updates,
|
|
const double *__restrict __attribute__((aligned(8))) Updates,
|
|
const uint64_t *__restrict Updates_index, const double breakdown,
|
|
double *__restrict __attribute__((aligned(8))) Slater_inv,
|
|
double *__restrict determinant);
|
|
|