# -*- mode: org -*- # vim: syntax=c #+TITLE: QMCkl C header #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: This file produces the =qmckl.h= header file, which is included in all other C header files. It is the main entry point to the library. We also create the =qmckl_f.f90= which is the Fortran equivalent. #+BEGIN_SRC C :tangle qmckl.h #ifndef QMCKL_H #define QMCKL_H #include #include #+END_SRC #+BEGIN_SRC f90 :tangle qmckl_f.f90 module qmckl use, intrinsic :: iso_c_binding #+END_SRC * Constants ** Success/failure These are the codes returned by the functions to indicate success or failure. All such functions should have as a return type =qmckl_exit_code=. #+BEGIN_SRC C :tangle qmckl.h #define QMCKL_SUCCESS 0 #define QMCKL_FAILURE 1 typedef int32_t qmckl_exit_code; typedef int64_t qmckl_context ; #+END_SRC #+BEGIN_SRC f90 :tangle qmckl_f.f90 integer, parameter :: QMCKL_SUCCESS = 0 integer, parameter :: QMCKL_FAILURE = 0 #+END_SRC ** Precision-related constants Controlling numerical precision enables optimizations. Here, the default parameters determining the target numerical precision and range are defined. #+BEGIN_SRC C :tangle qmckl.h #define QMCKL_DEFAULT_PRECISION 53 #define QMCKL_DEFAULT_RANGE 11 #+END_SRC #+BEGIN_SRC f90 :tangle qmckl_f.f90 integer, parameter :: QMCKL_DEFAULT_PRECISION = 53 integer, parameter :: QMCKL_DEFAULT_RANGE = 11 #+END_SRC * Header files All the functions expoed in the API are defined in the following header files. #+BEGIN_SRC C :tangle qmckl.h #include "qmckl_memory.h" #include "qmckl_context.h" #include "qmckl_distance.h" #include "qmckl_ao.h" #+END_SRC #+BEGIN_SRC f90 :tangle qmckl_f.f90 ! include 'qmckl_memory.fh' include 'qmckl_context.fh' include 'qmckl_distance.fh' include 'qmckl_ao.fh' #+END_SRC * End of header #+BEGIN_SRC C :tangle qmckl.h #endif #+END_SRC #+BEGIN_SRC f90 :tangle qmckl_f.f90 end module qmckl #+END_SRC * Include all other org files here :noexport: #+INCLUDE: qmckl_memory.org #+INCLUDE: qmckl_context.org #+INCLUDE: qmckl_distance.org #+INCLUDE: qmckl_ao.org