diff --git a/org/qmckl_ao.org b/org/qmckl_ao.org index 28dccb6..0b43b4c 100644 --- a/org/qmckl_ao.org +++ b/org/qmckl_ao.org @@ -255,21 +255,700 @@ qmckl_exit_code qmckl_init_ao_basis(qmckl_context context) { ** Access functions - #+begin_src c :comments org :tangle (eval h_private_func) :exports none -char qmckl_get_ao_basis_type (const qmckl_context context); -int64_t qmckl_get_ao_basis_shell_num (const qmckl_context context); -int64_t qmckl_get_ao_basis_prim_num (const qmckl_context context); -int64_t qmckl_get_ao_basis_ao_num (const qmckl_context context); -int64_t* qmckl_get_ao_basis_nucleus_index (const qmckl_context context); -int64_t* qmckl_get_ao_basis_nucleus_shell_num(const qmckl_context context); -int32_t* qmckl_get_ao_basis_shell_ang_mom (const qmckl_context context); -int64_t* qmckl_get_ao_basis_shell_prim_num (const qmckl_context context); -int64_t* qmckl_get_ao_basis_shell_prim_index (const qmckl_context context); -double* qmckl_get_ao_basis_shell_factor (const qmckl_context context); -double* qmckl_get_ao_basis_exponent (const qmckl_context context); -double* qmckl_get_ao_basis_coefficient (const qmckl_context context); -double* qmckl_get_ao_basis_prim_factor (const qmckl_context context); -double* qmckl_get_ao_basis_ao_factor (const qmckl_context context); + In the following functions, when an array is passed as an argument + the size of the array should be also passed to check that the array + is large enough to accept the data. + + #+NAME:post + #+begin_src c :exports none +if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return NULL; +} + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_type (const qmckl_context context, + char* const type); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_type (const qmckl_context context, + char* const basis_type) +{ + + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_type", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_type", + NULL); + + } + + assert (ctx->ao_basis.type != (char) 0); + + ,*basis_type = ctx->ao_basis.type; + return QMCKL_SUCCESS; +} + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_num (const qmckl_context context, + int64_t* const shell_num); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_num (const qmckl_context context, + int64_t* const shell_num) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_shell_factor", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 1; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_shell_num", + NULL); + } + + assert (ctx->ao_basis.shell_num > (int64_t) 0); + ,*shell_num = ctx->ao_basis.shell_num; + return QMCKL_SUCCESS; +} + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_prim_num (const qmckl_context context, + int64_t* const prim_num); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_prim_num (const qmckl_context context, + int64_t* const prim_num) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_prim_num", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 2; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_prim_num", + NULL); + } + + assert (ctx->ao_basis.prim_num > (int64_t) 0); + + ,*prim_num = ctx->ao_basis.prim_num; + return QMCKL_SUCCESS; +} + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_nucleus_shell_num (const qmckl_context context, + int64_t* const nucleus_shell_num, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_nucleus_shell_num (const qmckl_context context, + int64_t* const nucleus_shell_num, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_nucleus_shell_num", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 3; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_nucleus_shell_num", + NULL); + } + + if (nucleus_shell_num == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_nucleus_shell_num", + "NULL pointer"); + } + + if (size_max < ctx->nucleus.num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_nucleus_shell_num", + "Array too small. Expected nucl_num"); + } + + assert (ctx->ao_basis.nucleus_shell_num != NULL); + memcpy(nucleus_shell_num, ctx->ao_basis.nucleus_shell_num, ctx->nucleus.num * sizeof(int64_t)); + return QMCKL_SUCCESS; +} + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_nucleus_index (const qmckl_context context, + int64_t* const nucleus_index, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_nucleus_index (const qmckl_context context, + int64_t* const nucleus_index, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_nucleus_index", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 4; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_nucleus_index", + NULL); + } + + if (nucleus_index == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_nucleus_index", + "NULL pointer"); + } + + if (size_max < ctx->nucleus.num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_nucleus_index", + "Array too small. Expected shell_num"); + } + + assert (ctx->ao_basis.nucleus_index != NULL); + memcpy(nucleus_index, ctx->ao_basis.nucleus_index, ctx->nucleus.num * sizeof(int64_t)); + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_ang_mom (const qmckl_context context, + int32_t* const shell_ang_mom, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_ang_mom (const qmckl_context context, + int32_t* const shell_ang_mom, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_shell_ang_mom", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 5; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_shell_ang_mom", + NULL); + } + + if (shell_ang_mom == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_shell_ang_mom", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.shell_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_shell_ang_mom", + "Array too small. Expected shell_num"); + } + + assert (ctx->ao_basis.shell_ang_mom != NULL); + memcpy(shell_ang_mom, ctx->ao_basis.shell_ang_mom, ctx->ao_basis.shell_num * sizeof(int32_t)); + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_prim_num (const qmckl_context context, + int64_t* const shell_prim_num, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_prim_num (const qmckl_context context, + int64_t* const shell_prim_num, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_shell_prim_num", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 6; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_shell_prim_num", + NULL); + } + + if (shell_prim_num == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_shell_prim_num", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.shell_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_shell_prim_num", + "Array too small. Expected shell_num"); + } + + assert (ctx->ao_basis.shell_prim_num != NULL); + memcpy(shell_prim_num, ctx->ao_basis.shell_prim_num, ctx->ao_basis.shell_num * sizeof(int64_t)); + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_prim_index (const qmckl_context context, + int64_t* const shell_prim_index, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_prim_index (const qmckl_context context, + int64_t* const shell_prim_index, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_shell_prim_index", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 7; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_shell_prim_index", + NULL); + } + + if (shell_prim_index == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_shell_prim_index", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.shell_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_shell_prim_index", + "Array too small. Expected shell_num"); + } + + assert (ctx->ao_basis.shell_prim_index != NULL); + memcpy(shell_prim_index, ctx->ao_basis.shell_prim_index, ctx->ao_basis.shell_num * sizeof(int64_t)); + return QMCKL_SUCCESS; +} + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_factor (const qmckl_context context, + double* const shell_factor, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_shell_factor (const qmckl_context context, + double* const shell_factor, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_shell_factor", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 8; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_shell_factor", + NULL); + } + + if (shell_factor == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_shell_factor", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.shell_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_shell_factor", + "Array too small. Expected shell_num"); + } + + assert (ctx->ao_basis.shell_factor != NULL); + memcpy(shell_factor, ctx->ao_basis.shell_factor, ctx->ao_basis.shell_num * sizeof(double)); + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_exponent (const qmckl_context context, + double* const exponent, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_exponent (const qmckl_context context, + double* const exponent, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_exponent", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 9; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_exponent", + NULL); + } + + if (exponent == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_exponent", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.prim_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_exponent", + "Array too small. Expected prim_num"); + } + + assert (ctx->ao_basis.exponent != NULL); + memcpy(exponent, ctx->ao_basis.exponent, ctx->ao_basis.prim_num * sizeof(double)); + return QMCKL_SUCCESS; +} + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_coefficient (const qmckl_context context, + double* const coefficient, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_coefficient (const qmckl_context context, + double* const coefficient, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_coefficient", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 10; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_coefficient", + NULL); + } + + if (coefficient == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_coefficient", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.prim_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_coefficient", + "Array too small. Expected prim_num"); + } + assert (ctx->ao_basis.coefficient != NULL); + memcpy(coefficient, ctx->ao_basis.coefficient, ctx->ao_basis.prim_num * sizeof(double)); + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_prim_factor (const qmckl_context context, + double* const prim_factor, + const int64_t size_max); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_prim_factor (const qmckl_context context, + double* const prim_factor, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_prim_factor", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 11; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_prim_factor", + NULL); + } + + if (prim_factor == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_prim_factor", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.prim_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_prim_factor", + "Array too small. Expected prim_num"); + } + + assert (ctx->ao_basis.prim_factor != NULL); + memcpy(prim_factor, ctx->ao_basis.prim_factor, ctx->ao_basis.prim_num * sizeof(double)); + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code +qmckl_get_ao_basis_ao_num (const qmckl_context context, + int64_t* const ao_num); + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_ao_num (const qmckl_context context, + int64_t* const ao_num) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_ao_num", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 12; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_ao_num", + NULL); + } + + assert (ctx->ao_basis.ao_num > (int64_t) 0); + + *ao_num = ctx->ao_basis.ao_num; + return QMCKL_SUCCESS; +} + + + #+end_src + + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none +qmckl_exit_code +qmckl_get_ao_basis_ao_factor (const qmckl_context context, + double* const ao_factor, + const int64_t size_max) +{ + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { + return qmckl_failwith( context, + QMCKL_INVALID_CONTEXT, + "qmckl_get_ao_basis_ao_factor", + NULL); + } + + qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; + assert (ctx != NULL); + + int32_t mask = 1 << 13; + + if ( (ctx->ao_basis.uninitialized & mask) != 0) { + return qmckl_failwith( context, + QMCKL_NOT_PROVIDED, + "qmckl_get_ao_basis_ao_factor", + NULL); + } + + if (ao_factor == NULL) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_get_ao_basis_ao_factor", + "NULL pointer"); + } + + if (size_max < ctx->ao_basis.ao_num) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_3, + "qmckl_get_ao_basis_ao_factor", + "Array too small. Expected ao_num"); + } + + assert (ctx->ao_basis.ao_factor != NULL); + memcpy(ao_factor, ctx->ao_basis.ao_factor, ctx->ao_basis.ao_num * sizeof(double)); + return QMCKL_SUCCESS; +} + #+end_src + + #+begin_src c :comments org :tangle (eval h_func) :exports none +qmckl_exit_code qmckl_get_ao_basis_ao_factor (const qmckl_context context, + double* const ao_factor, + const int64_t size_max); #+end_src When all the data for the AOs have been provided, the following @@ -279,281 +958,7 @@ double* qmckl_get_ao_basis_ao_factor (const qmckl_context context); bool qmckl_ao_basis_provided (const qmckl_context context); #+end_src - #+NAME:post - #+begin_src c :exports none -if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; -} - #+end_src - #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none -char qmckl_get_ao_basis_type (const qmckl_context context) { - - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return (char) 0; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return (char) 0; - } - - assert (ctx->ao_basis.type != (char) 0); - return ctx->ao_basis.type; -} - - -int64_t qmckl_get_ao_basis_shell_num (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return (int64_t) 0; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 1; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return (int64_t) 0; - } - - assert (ctx->ao_basis.shell_num > (int64_t) 0); - return ctx->ao_basis.shell_num; -} - - -int64_t qmckl_get_ao_basis_prim_num (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return (int64_t) 0; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 2; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return (int64_t) 0; - } - - assert (ctx->ao_basis.prim_num > (int64_t) 0); - return ctx->ao_basis.prim_num; -} - - -int64_t* qmckl_get_ao_basis_nucleus_shell_num (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 3; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.nucleus_shell_num != NULL); - return ctx->ao_basis.nucleus_shell_num ; -} - -int64_t* qmckl_get_ao_basis_nucleus_index (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 4; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.nucleus_index != NULL); - return ctx->ao_basis.nucleus_index ; -} - - -int32_t* qmckl_get_ao_basis_shell_ang_mom (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 5; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.shell_ang_mom != NULL); - return ctx->ao_basis.shell_ang_mom; -} - - -int64_t* qmckl_get_ao_basis_shell_prim_num (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 6; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.shell_prim_num != NULL); - return ctx->ao_basis.shell_prim_num; -} - - -int64_t* qmckl_get_ao_basis_shell_prim_index (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 7; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.shell_prim_index != NULL); - return ctx->ao_basis.shell_prim_index; -} - - -double* qmckl_get_ao_basis_shell_factor (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 8; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.shell_factor != NULL); - return ctx->ao_basis.shell_factor; -} - - -double* qmckl_get_ao_basis_exponent (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - - int32_t mask = 1 << 9; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.exponent != NULL); - return ctx->ao_basis.exponent; -} - - -double* qmckl_get_ao_basis_coefficient (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 10; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.coefficient != NULL); - return ctx->ao_basis.coefficient; -} - - -double* qmckl_get_ao_basis_prim_factor (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 11; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.prim_factor != NULL); - return ctx->ao_basis.prim_factor; -} - - -int64_t qmckl_get_ao_basis_ao_num (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return (int64_t) 0; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 12; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return (int64_t) 0; - } - - assert (ctx->ao_basis.ao_num > (int64_t) 0); - return ctx->ao_basis.ao_num; -} - - -double* qmckl_get_ao_basis_ao_factor (const qmckl_context context) { - if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { - return NULL; - } - - qmckl_context_struct* const ctx = (qmckl_context_struct* const) context; - assert (ctx != NULL); - - int32_t mask = 1 << 13; - - if ( (ctx->ao_basis.uninitialized & mask) != 0) { - return NULL; - } - - assert (ctx->ao_basis.ao_factor != NULL); - return ctx->ao_basis.ao_factor; -} - - bool qmckl_ao_basis_provided(const qmckl_context context) { if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { @@ -565,9 +970,6 @@ bool qmckl_ao_basis_provided(const qmckl_context context) { return ctx->ao_basis.provided; } - - - #+end_src ** Initialization functions @@ -630,8 +1032,9 @@ qmckl_exit_code qmckl_set_ao_basis_type(qmckl_context context, const char t) { <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_num(qmckl_context context, const int64_t shell_num) { <> @@ -642,7 +1045,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_num(qmckl_context context, const int64_ "shell_num <= 0"); } - int64_t prim_num = qmckl_get_ao_basis_prim_num(context); + const int64_t prim_num = ctx->ao_basis.prim_num; if (0L < prim_num && prim_num < shell_num) { return qmckl_failwith( context, @@ -656,8 +1059,9 @@ qmckl_exit_code qmckl_set_ao_basis_shell_num(qmckl_context context, const int64_ <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_prim_num(qmckl_context context, const int64_t prim_num) { <> @@ -668,7 +1072,14 @@ qmckl_exit_code qmckl_set_ao_basis_prim_num(qmckl_context context, const int64_ "prim_num must be positive"); } - int64_t shell_num = qmckl_get_ao_basis_shell_num(context); + const int64_t shell_num = ctx->ao_basis.shell_num; + + if (shell_num <= 0L) { + return qmckl_failwith( context, + QMCKL_FAILURE, + "qmckl_set_ao_basis_shell_num", + "shell_num is not set"); + } if (prim_num < shell_num) { return qmckl_failwith( context, @@ -682,15 +1093,18 @@ qmckl_exit_code qmckl_set_ao_basis_prim_num(qmckl_context context, const int64_ <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_nucleus_shell_num(qmckl_context context, const int64_t* nucleus_shell_num) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 3; - const int64_t shell_num = qmckl_get_ao_basis_shell_num(context); - if (shell_num == 0L) { + const int64_t shell_num = ctx->ao_basis.shell_num; + + if (shell_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_nucleus_shell_num", @@ -698,7 +1112,7 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_shell_num(qmckl_context context, con } if (ctx->ao_basis.nucleus_shell_num != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.nucleus_shell_num); + rc = qmckl_free(context, ctx->ao_basis.nucleus_shell_num); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_nucleus_shell_num", @@ -723,14 +1137,18 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_shell_num(qmckl_context context, con <> } + #+end_src + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_nucleus_index(qmckl_context context, const int64_t* nucleus_index) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 4; - const int64_t shell_num = qmckl_get_ao_basis_shell_num(context); - if (shell_num == 0L) { + const int64_t shell_num = ctx->ao_basis.shell_num; + + if (shell_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_nucleus_index", @@ -738,7 +1156,7 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_index(qmckl_context context, const i } if (ctx->ao_basis.nucleus_index != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.nucleus_index); + rc = qmckl_free(context, ctx->ao_basis.nucleus_index); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_nucleus_index", @@ -763,14 +1181,17 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_index(qmckl_context context, const i <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_ang_mom(qmckl_context context, const int32_t* shell_ang_mom) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 5; - const int64_t shell_num = qmckl_get_ao_basis_shell_num(context); + const int64_t shell_num = ctx->ao_basis.shell_num; + if (shell_num == 0L) { return qmckl_failwith( context, QMCKL_FAILURE, @@ -779,7 +1200,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_ang_mom(qmckl_context context, const i } if (ctx->ao_basis.shell_ang_mom != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_ang_mom); + rc = qmckl_free(context, ctx->ao_basis.shell_ang_mom); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_ang_mom", @@ -805,15 +1226,18 @@ qmckl_exit_code qmckl_set_ao_basis_shell_ang_mom(qmckl_context context, const i <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_prim_num(qmckl_context context, const int64_t* shell_prim_num) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 6; - const int64_t shell_num = qmckl_get_ao_basis_shell_num(context); - if (shell_num == 0L) { + const int64_t shell_num = ctx->ao_basis.shell_num; + + if (shell_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_shell_prim_num", @@ -821,7 +1245,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_num(qmckl_context context, const } if (ctx->ao_basis.shell_prim_num != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_prim_num); + rc = qmckl_free(context, ctx->ao_basis.shell_prim_num); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_prim_num", @@ -847,15 +1271,18 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_num(qmckl_context context, const <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_prim_index(qmckl_context context, const int64_t* shell_prim_index) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 7; - const int64_t shell_num = qmckl_get_ao_basis_shell_num(context); - if (shell_num == 0L) { + const int64_t shell_num = ctx->ao_basis.shell_num; + + if (shell_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_shell_prim_index", @@ -863,7 +1290,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_index(qmckl_context context, cons } if (ctx->ao_basis.shell_prim_index != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_prim_index); + rc = qmckl_free(context, ctx->ao_basis.shell_prim_index); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_prim_index", @@ -888,15 +1315,18 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_index(qmckl_context context, cons <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_factor(qmckl_context context, const double* shell_factor) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 8; - const int64_t shell_num = qmckl_get_ao_basis_shell_num(context); - if (shell_num == 0L) { + const int64_t shell_num = ctx->ao_basis.shell_num; + + if (shell_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_shell_factor", @@ -905,7 +1335,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_factor(qmckl_context context, const do if (ctx->ao_basis.shell_factor != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_factor); + rc = qmckl_free(context, ctx->ao_basis.shell_factor); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_factor", @@ -930,14 +1360,18 @@ qmckl_exit_code qmckl_set_ao_basis_shell_factor(qmckl_context context, const do <> } + #+end_src + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_exponent(qmckl_context context, const double* exponent) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 9; - const int64_t prim_num = qmckl_get_ao_basis_prim_num(context); - if (prim_num == 0L) { + const int64_t prim_num = ctx->ao_basis.prim_num; + + if (prim_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_exponent", @@ -945,7 +1379,7 @@ qmckl_exit_code qmckl_set_ao_basis_exponent(qmckl_context context, const double } if (ctx->ao_basis.exponent != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.exponent); + rc = qmckl_free(context, ctx->ao_basis.exponent); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_exponent", @@ -970,14 +1404,18 @@ qmckl_exit_code qmckl_set_ao_basis_exponent(qmckl_context context, const double <> } + #+end_src + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_coefficient(qmckl_context context, const double* coefficient) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 10; - const int64_t prim_num = qmckl_get_ao_basis_prim_num(context); - if (prim_num == 0L) { + const int64_t prim_num = ctx->ao_basis.prim_num; + + if (prim_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_coefficient", @@ -985,7 +1423,7 @@ qmckl_exit_code qmckl_set_ao_basis_coefficient(qmckl_context context, const dou } if (ctx->ao_basis.coefficient != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.coefficient); + rc = qmckl_free(context, ctx->ao_basis.coefficient); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_coefficient", @@ -1010,15 +1448,18 @@ qmckl_exit_code qmckl_set_ao_basis_coefficient(qmckl_context context, const dou <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_prim_factor(qmckl_context context, const double* prim_factor) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 11; - const int64_t prim_num = qmckl_get_ao_basis_prim_num(context); - if (prim_num == 0L) { + const int64_t prim_num = ctx->ao_basis.prim_num; + + if (prim_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_prim_factor", @@ -1027,7 +1468,7 @@ qmckl_exit_code qmckl_set_ao_basis_prim_factor(qmckl_context context, const dou if (ctx->ao_basis.prim_factor != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.prim_factor); + rc = qmckl_free(context, ctx->ao_basis.prim_factor); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_prim_factor", @@ -1052,8 +1493,9 @@ qmckl_exit_code qmckl_set_ao_basis_prim_factor(qmckl_context context, const dou <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_ao_num(qmckl_context context, const int64_t ao_num) { <> @@ -1064,7 +1506,13 @@ qmckl_exit_code qmckl_set_ao_basis_ao_num(qmckl_context context, const int64_t "ao_num must be positive"); } - int64_t shell_num = qmckl_get_ao_basis_shell_num(context); + const int64_t shell_num = ctx->ao_basis.shell_num; + if (shell_num <= 0L) { + return qmckl_failwith( context, + QMCKL_INVALID_ARG_2, + "qmckl_set_ao_basis_shell_num", + "shell_num is not set"); + } if (ao_num < shell_num) { return qmckl_failwith( context, @@ -1078,15 +1526,18 @@ qmckl_exit_code qmckl_set_ao_basis_ao_num(qmckl_context context, const int64_t <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_ao_factor(qmckl_context context, const double* ao_factor) { <> + qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 13; - const int64_t ao_num = qmckl_get_ao_basis_ao_num(context); - if (ao_num == 0L) { + const int64_t ao_num = ctx->ao_basis.ao_num; + + if (ao_num <= 0L) { return qmckl_failwith( context, QMCKL_FAILURE, "qmckl_set_ao_basis_ao_factor", @@ -1095,7 +1546,7 @@ qmckl_exit_code qmckl_set_ao_basis_ao_factor(qmckl_context context, const doubl if (ctx->ao_basis.ao_factor != NULL) { - qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.ao_factor); + rc = qmckl_free(context, ctx->ao_basis.ao_factor); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_ao_factor", @@ -1120,8 +1571,9 @@ qmckl_exit_code qmckl_set_ao_basis_ao_factor(qmckl_context context, const doubl <> } + #+end_src - + #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_cartesian(qmckl_context context, const bool t) { <> @@ -1536,64 +1988,97 @@ double * ao_factor_test ; char typ_test ; -typ_test = qmckl_get_ao_basis_type (context); +rc = qmckl_get_ao_basis_type (context, &typ_test); +assert (rc == QMCKL_SUCCESS); assert(typ == typ_test); -shell_num_test = qmckl_get_ao_basis_shell_num (context); +rc = qmckl_get_ao_basis_shell_num (context, &shell_num_test); +assert (rc == QMCKL_SUCCESS); assert(shell_num == shell_num_test); -prim_num_test = qmckl_get_ao_basis_prim_num (context); +rc = qmckl_get_ao_basis_prim_num (context, &prim_num_test); +assert (rc == QMCKL_SUCCESS); assert(prim_num == prim_num_test); -nucleus_index_test = qmckl_get_ao_basis_nucleus_index (context); +nucleus_index_test = (int64_t*) malloc (nucl_num * sizeof(int64_t)); +rc = qmckl_get_ao_basis_nucleus_index (context, nucleus_index_test, nucl_num); +assert (rc == QMCKL_SUCCESS); for (int64_t i=0 ; i < nucl_num ; ++i) { assert(nucleus_index_test[i] == nucleus_index[i]); } +free(nucleus_index_test); + +nucleus_shell_num_test = (int64_t*) malloc ( nucl_num * sizeof(int64_t)); +rc = qmckl_get_ao_basis_nucleus_shell_num (context, nucleus_shell_num_test, nucl_num); +assert (rc == QMCKL_SUCCESS); -nucleus_shell_num_test = qmckl_get_ao_basis_nucleus_shell_num (context); for (int64_t i=0 ; i < nucl_num ; ++i) { assert(nucleus_shell_num_test[i] == nucleus_shell_num[i]); } -shell_ang_mom_test = qmckl_get_ao_basis_shell_ang_mom (context); +shell_ang_mom_test = (int32_t*) malloc ( shell_num * sizeof(int32_t)); +rc = qmckl_get_ao_basis_shell_ang_mom (context, shell_ang_mom_test, shell_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < shell_num ; ++i) { assert(shell_ang_mom_test[i] == shell_ang_mom[i]); } -shell_factor_test = qmckl_get_ao_basis_shell_factor (context); +shell_factor_test = (double*) malloc ( shell_num * sizeof(double)); +rc = qmckl_get_ao_basis_shell_factor (context, shell_factor_test, shell_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < shell_num ; ++i) { assert(shell_factor_test[i] == shell_factor[i]); } -shell_prim_num_test = qmckl_get_ao_basis_shell_prim_num (context); +shell_prim_num_test = (int64_t*) malloc ( shell_num * sizeof(int64_t)); +rc = qmckl_get_ao_basis_shell_prim_num (context, shell_prim_num_test, shell_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < shell_num ; ++i) { assert(shell_prim_num_test[i] == shell_prim_num[i]); } -shell_prim_index_test = qmckl_get_ao_basis_shell_prim_index (context); +shell_prim_index_test = (int64_t*) malloc ( shell_num * sizeof(int64_t)); +rc = qmckl_get_ao_basis_shell_prim_index (context, shell_prim_index_test, shell_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < shell_num ; ++i) { assert(shell_prim_index_test[i] == shell_prim_index[i]); } -exponent_test = qmckl_get_ao_basis_exponent(context); +exponent_test = (double*) malloc ( prim_num * sizeof(double)); +rc = qmckl_get_ao_basis_exponent(context, exponent_test, prim_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < prim_num ; ++i) { assert(exponent_test[i] == exponent[i]); } -coefficient_test = qmckl_get_ao_basis_coefficient(context); +coefficient_test = (double*) malloc ( prim_num * sizeof(double)); +rc = qmckl_get_ao_basis_coefficient(context, coefficient_test, prim_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < prim_num ; ++i) { assert(coefficient_test[i] == coefficient[i]); } -prim_factor_test = qmckl_get_ao_basis_prim_factor (context); +prim_factor_test = (double*) malloc ( prim_num * sizeof(double)); +rc = qmckl_get_ao_basis_prim_factor (context, prim_factor_test, prim_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < prim_num ; ++i) { assert(prim_factor_test[i] == prim_factor[i]); } -ao_num_test = qmckl_get_ao_basis_ao_num(context); +rc = qmckl_get_ao_basis_ao_num(context, &ao_num_test); assert(ao_num == ao_num_test); -ao_factor_test = qmckl_get_ao_basis_ao_factor (context); +ao_factor_test = (double*) malloc ( ao_num * sizeof(double)); +rc = qmckl_get_ao_basis_ao_factor (context, ao_factor_test, ao_num); +assert (rc == QMCKL_SUCCESS); + for (int64_t i=0 ; i < ao_num ; ++i) { assert(ao_factor_test[i] == ao_factor[i]); }