diff --git a/org/qmckl_sherman_morrison_woodbury.org b/org/qmckl_sherman_morrison_woodbury.org index 6fb9db0..9b583ef 100644 --- a/org/qmckl_sherman_morrison_woodbury.org +++ b/org/qmckl_sherman_morrison_woodbury.org @@ -23,6 +23,7 @@ int main() { qmckl_context context; context = qmckl_context_create(); + const qmckl_context* context_p = &context; qmckl_exit_code rc; #+end_src @@ -88,11 +89,11 @@ int main() { #+begin_src c :tangle (eval h_func) :comments org qmckl_exit_code qmckl_sherman_morrison( const qmckl_context context, - const uint64_t* Dim_p, - const uint64_t* N_updates_p, + const uint64_t Dim, + const uint64_t N_updates, const double* Updates, const uint64_t* Updates_index, - const double* breakdown_p, + const double breakdown, double* Slater_inv); #+end_src @@ -103,22 +104,18 @@ int main() { #include #include "qmckl.h" -qmckl_exit_code qmckl_sherman_morrison_c_(const qmckl_context context, - const uint64_t* Dim_p, - const uint64_t* N_updates_p, +qmckl_exit_code qmckl_sherman_morrison(const qmckl_context context, + const uint64_t Dim, + const uint64_t N_updates, const double* Updates, const uint64_t* Updates_index, - const double* breakdown_p, + const double breakdown, double* Slater_inv) { if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { return QMCKL_NULL_CONTEXT; } - const uint64_t Dim = *Dim_p; - const uint64_t N_updates = *N_updates_p; - const double breakdown = *breakdown_p; - double C[Dim]; double D[Dim]; @@ -173,32 +170,6 @@ qmckl_exit_code qmckl_sherman_morrison_c_(const qmckl_context context, :FRetType: qmckl_exit_code :END: - #+CALL: generate_c_interface(table=qmckl_sherman_morrison_args,rettyp=get_value("FRetType"),fname=get_value("Name")) - - #+RESULTS: - #+begin_src f90 :tangle (eval f) :comments org :exports none - integer(c_int32_t) function qmckl_sherman_morrison & - (context, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv) & - bind(C) result(info) - - use, intrinsic :: iso_c_binding - implicit none - - integer (c_int64_t) , intent(in) , value :: context - integer (c_int64_t) , intent(in) :: Dim - integer (c_int64_t) , intent(in) :: N_updates - real (c_double ) , intent(in) :: Updates(N_updates*Dim) - integer (c_int64_t) , intent(in) :: Updates_index(N_updates) - real (c_double ) , intent(in) :: breakdown - real (c_double ) , intent(inout) :: Slater_inv(Dim*Dim) - - integer(c_int32_t), external :: qmckl_sherman_morrison_c - info = qmckl_sherman_morrison_c & - (context, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv) - - end function qmckl_sherman_morrison - #+end_src - #+CALL: generate_f_interface(table=qmckl_sherman_morrison_args,rettyp=get_value("FRetType"),fname=get_value("Name")) #+RESULTS: @@ -213,11 +184,11 @@ qmckl_exit_code qmckl_sherman_morrison_c_(const qmckl_context context, implicit none integer (c_int64_t) , intent(in) , value :: context - integer (c_int64_t) , intent(in) :: Dim - integer (c_int64_t) , intent(in) :: N_updates + integer (c_int64_t) , intent(in) , value :: Dim + integer (c_int64_t) , intent(in) , value :: N_updates real (c_double ) , intent(in) :: Updates(N_updates*Dim) integer (c_int64_t) , intent(in) :: Updates_index(N_updates) - real (c_double ) , intent(in) :: breakdown + real (c_double ) , intent(in) , value :: breakdown real (c_double ) , intent(inout) :: Slater_inv(Dim*Dim) end function qmckl_sherman_morrison @@ -271,7 +242,7 @@ assert(Updates1 != NULL); assert(Updates_index1 != NULL); assert(breakdown_p != NULL); assert(Slater_inv1 != NULL); -rc = qmckl_sherman_morrison(context, Dim_p, N_updates_p, Updates1, Updates_index1, breakdown_p, Slater_inv1); +rc = qmckl_sherman_morrison(context, Dim, N_updates1, Updates1, Updates_index1, breakdown, Slater_inv1); for (unsigned int i = 0; i < Dim; i++) { for (unsigned int j = 0; j < Dim; j++) { res[i * Dim + j] = 0;