1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-06-30 00:44:52 +02:00
This commit is contained in:
Anthony Scemama 2020-12-03 18:57:15 +01:00
parent 4e76e6dd83
commit d2bab284ac
5 changed files with 132 additions and 132 deletions

View File

@ -1,7 +1,7 @@
#+TITLE: QMCkl source code documentation #+TITLE: QMCkl source code documentation
#+EXPORT_FILE_NAME: index.html #+EXPORT_FILE_NAME: index.html
#+SETUPFILE: https://fniessen.github.io/org-html-themes/org/theme-readtheorg.setup #+SETUPFILE: https://fniessen.github.io/org-html-themes/org/setup/theme-readtheorg.setup
* Introduction * Introduction

View File

@ -41,30 +41,30 @@ MunitResult test_qmckl_ao() {
&& c(c-1) (x-X_i)^a (y-Y_i)^b (z-Z_i)^{c-1} && c(c-1) (x-X_i)^a (y-Y_i)^b (z-Z_i)^{c-1}
\end{eqnarray*} \end{eqnarray*}
**** =qmckl_ao_power= **** ~qmckl_ao_power~
Computes all the powers of the =n= input data up to the given Computes all the powers of the ~n~ input data up to the given
maximum value given in input for each of the $n$ points: maximum value given in input for each of the $n$ points:
\[ P_{ij} = X_j^i \] \[ P_{ij} = X_j^i \]
***** Arguments ***** Arguments
| =context= | input | Global state | | ~context~ | input | Global state |
| =n= | input | Number of values | | ~n~ | input | Number of values |
| =X(n)= | input | Array containing the input values | | ~X(n)~ | input | Array containing the input values |
| =LMAX(n)= | input | Array containing the maximum power for each value | | ~LMAX(n)~ | input | Array containing the maximum power for each value |
| =P(LDP,n)= | output | Array containing all the powers of =X= | | ~P(LDP,n)~ | output | Array containing all the powers of ~X~ |
| =LDP= | input | Leading dimension of array =P= | | ~LDP~ | input | Leading dimension of array ~P~ |
***** Requirements ***** Requirements
- =context= is not 0 - ~context~ is not 0
- =n= > 0 - ~n~ > 0
- =X= is allocated with at least $n \times 8$ bytes - ~X~ is allocated with at least $n \times 8$ bytes
- =LMAX= is allocated with at least $n \times 4$ bytes - ~LMAX~ is allocated with at least $n \times 4$ bytes
- =P= is allocated with at least $n \times \max_i \text{LMAX}_i \times 8$ bytes - ~P~ is allocated with at least $n \times \max_i \text{LMAX}_i \times 8$ bytes
- =LDP= >= $\max_i$ =LMAX[i]= - ~LDP~ >= $\max_i$ ~LMAX[i]~
***** Header ***** Header
#+BEGIN_SRC C :tangle qmckl.h #+BEGIN_SRC C :tangle qmckl.h
@ -193,48 +193,48 @@ munit_assert_int(0, ==, test_qmckl_ao_power(context));
#+END_SRC #+END_SRC
**** =qmckl_ao_polynomial_vgl= **** ~qmckl_ao_polynomial_vgl~
Computes the values, gradients and Laplacians at a given point of Computes the values, gradients and Laplacians at a given point of
all polynomials with an angular momentum up to =lmax=. all polynomials with an angular momentum up to ~lmax~.
***** Arguments ***** Arguments
| =context= | input | Global state | | ~context~ | input | Global state |
| =X(3)= | input | Array containing the coordinates of the points | | ~X(3)~ | input | Array containing the coordinates of the points |
| =R(3)= | input | Array containing the x,y,z coordinates of the center | | ~R(3)~ | input | Array containing the x,y,z coordinates of the center |
| =lmax= | input | Maximum angular momentum | | ~lmax~ | input | Maximum angular momentum |
| =n= | output | Number of computed polynomials | | ~n~ | output | Number of computed polynomials |
| =L(ldl,n)= | output | Contains a,b,c for all =n= results | | ~L(ldl,n)~ | output | Contains a,b,c for all ~n~ results |
| =ldl= | input | Leading dimension of =L= | | ~ldl~ | input | Leading dimension of ~L~ |
| =VGL(ldv,n)= | output | Value, gradients and Laplacian of the polynomials | | ~VGL(ldv,n)~ | output | Value, gradients and Laplacian of the polynomials |
| =ldv= | input | Leading dimension of array =VGL= | | ~ldv~ | input | Leading dimension of array ~VGL~ |
***** Requirements ***** Requirements
- =context= is not 0 - ~context~ is not 0
- =n= > 0 - ~n~ > 0
- =lmax= >= 0 - ~lmax~ >= 0
- =ldl= >= 3 - ~ldl~ >= 3
- =ldv= >= 5 - ~ldv~ >= 5
- =X= is allocated with at least $3 \times 8$ bytes - ~X~ is allocated with at least $3 \times 8$ bytes
- =R= is allocated with at least $3 \times 8$ bytes - ~R~ is allocated with at least $3 \times 8$ bytes
- =n= >= =(lmax+1)(lmax+2)(lmax+3)/6= - ~n~ >= ~(lmax+1)(lmax+2)(lmax+3)/6~
- =L= is allocated with at least $3 \times n \times 4$ bytes - ~L~ is allocated with at least $3 \times n \times 4$ bytes
- =VGL= is allocated with at least $5 \times n \times 8$ bytes - ~VGL~ is allocated with at least $5 \times n \times 8$ bytes
- On output, =n= should be equal to =(lmax+1)(lmax+2)(lmax+3)/6= - On output, ~n~ should be equal to ~(lmax+1)(lmax+2)(lmax+3)/6~
- On output, the powers are given in the following order (l=a+b+c): - On output, the powers are given in the following order (l=a+b+c):
- Increase values of =l= - Increase values of ~l~
- Within a given value of =l=, alphabetical order of the - Within a given value of ~l~, alphabetical order of the
string made by a*"x" + b*"y" + c*"z" (in Python notation). string made by a*"x" + b*"y" + c*"z" (in Python notation).
For example, with a=0, b=2 and c=1 the string is "yyz" For example, with a=0, b=2 and c=1 the string is "yyz"
***** Error codes ***** Error codes
| -1 | Null context | | -1 | Null context |
| -2 | Inconsistent =ldl= | | -2 | Inconsistent ~ldl~ |
| -3 | Inconsistent =ldv= | | -3 | Inconsistent ~ldv~ |
| -4 | Inconsistent =lmax= | | -4 | Inconsistent ~lmax~ |
***** Header ***** Header
#+BEGIN_SRC C :tangle qmckl.h #+BEGIN_SRC C :tangle qmckl.h
@ -512,14 +512,13 @@ end function test_qmckl_ao_polynomial_vgl
int test_qmckl_ao_polynomial_vgl(qmckl_context context); int test_qmckl_ao_polynomial_vgl(qmckl_context context);
munit_assert_int(0, ==, test_qmckl_ao_polynomial_vgl(context)); munit_assert_int(0, ==, test_qmckl_ao_polynomial_vgl(context));
#+END_SRC #+END_SRC
#+END_SRC
*** Gaussian basis functions *** Gaussian basis functions
**** =qmckl_ao_gaussian_vgl= **** ~qmckl_ao_gaussian_vgl~
Computes the values, gradients and Laplacians at a given point of Computes the values, gradients and Laplacians at a given point of
=n= Gaussian functions centered at the same point: ~n~ Gaussian functions centered at the same point:
\[ v_i = exp(-a_i |X-R|^2) \] \[ v_i = exp(-a_i |X-R|^2) \]
\[ \nabla_x v_i = -2 a_i (X_x - R_x) v_i \] \[ \nabla_x v_i = -2 a_i (X_x - R_x) v_i \]
@ -529,24 +528,24 @@ munit_assert_int(0, ==, test_qmckl_ao_polynomial_vgl(context));
***** Arguments ***** Arguments
| =context= | input | Global state | | ~context~ | input | Global state |
| =X(3)= | input | Array containing the coordinates of the points | | ~X(3)~ | input | Array containing the coordinates of the points |
| =R(3)= | input | Array containing the x,y,z coordinates of the center | | ~R(3)~ | input | Array containing the x,y,z coordinates of the center |
| =n= | input | Number of computed gaussians | | ~n~ | input | Number of computed gaussians |
| =A(n)= | input | Exponents of the Gaussians | | ~A(n)~ | input | Exponents of the Gaussians |
| =VGL(ldv,5)= | output | Value, gradients and Laplacian of the Gaussians | | ~VGL(ldv,5)~ | output | Value, gradients and Laplacian of the Gaussians |
| =ldv= | input | Leading dimension of array =VGL= | | ~ldv~ | input | Leading dimension of array ~VGL~ |
***** Requirements ***** Requirements
- =context= is not 0 - ~context~ is not 0
- =n= > 0 - ~n~ > 0
- =ldv= >= 5 - ~ldv~ >= 5
- =A(i)= > 0 for all =i= - ~A(i)~ > 0 for all ~i~
- =X= is allocated with at least $3 \times 8$ bytes - ~X~ is allocated with at least $3 \times 8$ bytes
- =R= is allocated with at least $3 \times 8$ bytes - ~R~ is allocated with at least $3 \times 8$ bytes
- =A= is allocated with at least $n \times 8$ bytes - ~A~ is allocated with at least $n \times 8$ bytes
- =VGL= is allocated with at least $n \times 5 \times 8$ bytes - ~VGL~ is allocated with at least $n \times 5 \times 8$ bytes
***** Header ***** Header
#+BEGIN_SRC C :tangle qmckl.h #+BEGIN_SRC C :tangle qmckl.h
@ -740,3 +739,4 @@ munit_assert_int(0, ==, test_qmckl_ao_gaussian_vgl(context));
# -*- mode: org -*- # -*- mode: org -*-
# vim: syntax=c # vim: syntax=c

View File

@ -24,8 +24,8 @@ MunitResult test_qmckl_context() {
is stored in the following data structure, which can't be seen is stored in the following data structure, which can't be seen
outside of the library. To simplify compatibility with other outside of the library. To simplify compatibility with other
languages, the pointer to the internal data structure is converted languages, the pointer to the internal data structure is converted
into a 64-bit signed integer, defined in the =qmckl_context= type. into a 64-bit signed integer, defined in the ~qmckl_context~ type.
A value of 0 for the context is equivalent to a =NULL= pointer. A value of 0 for the context is equivalent to a ~NULL~ pointer.
# The following code block should be kept to insert comments into # The following code block should be kept to insert comments into
# the qmckl.h file # the qmckl.h file
@ -89,10 +89,10 @@ qmckl_context new_context;
#+END_SRC #+END_SRC
**** =qmckl_context_check= **** ~qmckl_context_check~
Checks if the domain pointed by the pointer is a valid context. Checks if the domain pointed by the pointer is a valid context.
Returns the input =qmckl_context= if the context is valid, 0 Returns the input ~qmckl_context~ if the context is valid, 0
otherwise. otherwise.
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
@ -113,11 +113,11 @@ qmckl_context qmckl_context_check(const qmckl_context context) {
} }
#+END_SRC #+END_SRC
**** =qmckl_context_create= **** ~qmckl_context_create~
To create a new context, use =qmckl_context_create()=. To create a new context, use ~qmckl_context_create()~.
- On success, returns a pointer to a context using the =qmckl_context= type - On success, returns a pointer to a context using the ~qmckl_context~ type
- Returns 0 upon failure to allocate the internal data structure - Returns ~0~ upon failure to allocate the internal data structure
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_context qmckl_context_create(); qmckl_context qmckl_context_create();
@ -159,11 +159,11 @@ munit_assert_int64( context, !=, (qmckl_context) 0);
munit_assert_int64( qmckl_context_check(context), ==, context); munit_assert_int64( qmckl_context_check(context), ==, context);
#+END_SRC #+END_SRC
**** =qmckl_context_copy= **** ~qmckl_context_copy~
This function makes a shallow copy of the current context. This function makes a shallow copy of the current context.
- Copying the 0-valued context returns 0 - Copying the 0-valued context returns 0
- On success, returns a pointer to the new context using the =qmckl_context= type - On success, returns a pointer to the new context using the ~qmckl_context~ type
- Returns 0 upon failure to allocate the internal data structure - Returns 0 upon failure to allocate the internal data structure
for the new context for the new context
@ -218,7 +218,7 @@ munit_assert_int64(new_context, !=, context);
munit_assert_int64(qmckl_context_check(new_context), ==, new_context); munit_assert_int64(qmckl_context_check(new_context), ==, new_context);
#+END_SRC #+END_SRC
**** =qmckl_context_previous= **** ~qmckl_context_previous~
Returns the previous context Returns the previous context
- On success, returns the ancestor of the current context - On success, returns the ancestor of the current context
@ -261,7 +261,7 @@ munit_assert_int64(qmckl_context_previous(context), ==, (qmckl_context) 0);
munit_assert_int64(qmckl_context_previous((qmckl_context) 0), ==, (qmckl_context) 0); munit_assert_int64(qmckl_context_previous((qmckl_context) 0), ==, (qmckl_context) 0);
#+END_SRC #+END_SRC
**** =qmckl_context_destroy= **** ~qmckl_context_destroy~
Destroys the current context, leaving the ancestors untouched. Destroys the current context, leaving the ancestors untouched.
- Succeeds if the current context is properly destroyed - Succeeds if the current context is properly destroyed
@ -351,20 +351,20 @@ COEFFICIENT = [ 0.006068, 0.045308, 0.202822, 0.503903, 0.383421,
0.503903, 0.383421, 1.0, 1.0, 1.0, 1.0, 1.0] 0.503903, 0.383421, 1.0, 1.0, 1.0, 1.0, 1.0]
#+END_EXAMPLE #+END_EXAMPLE
**** =qmckl_context_update_ao_basis= **** ~qmckl_context_update_ao_basis~
Updates the data describing the AO basis set into the context. Updates the data describing the AO basis set into the context.
| =type= | Gaussian or Slater | | ~type~ | Gaussian or Slater |
| =shell_num= | Number of shells | | ~shell_num~ | Number of shells |
| =prim_num= | Total number of primitives | | ~prim_num~ | Total number of primitives |
| =SHELL_CENTER(shell_num)= | Id of the nucleus on which the shell is centered | | ~SHELL_CENTER(shell_num)~ | Id of the nucleus on which the shell is centered |
| =SHELL_ANG_MOM(shell_num)= | Id of the nucleus on which the shell is centered | | ~SHELL_ANG_MOM(shell_num)~ | Id of the nucleus on which the shell is centered |
| =SHELL_FACTOR(shell_num)= | Normalization factor for the shell | | ~SHELL_FACTOR(shell_num)~ | Normalization factor for the shell |
| =SHELL_PRIM_NUM(shell_num)= | Number of primitives in the shell | | ~SHELL_PRIM_NUM(shell_num)~ | Number of primitives in the shell |
| =SHELL_PRIM_INDEX(shell_num)= | Address of the first primitive of the shelll in the =EXPONENT= array | | ~SHELL_PRIM_INDEX(shell_num)~ | Address of the first primitive of the shelll in the ~EXPONENT~ array |
| =EXPONENT(prim_num)= | Array of exponents | | ~EXPONENT(prim_num)~ | Array of exponents |
| =COEFFICIENT(prim_num)= | Array of coefficients | | ~COEFFICIENT(prim_num)~ | Array of coefficients |
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_exit_code qmckl_exit_code
@ -515,20 +515,20 @@ qmckl_context_update_ao_basis(qmckl_context context , const char type
***** TODO Test ***** TODO Test
**** =qmckl_context_set_ao_basis= **** ~qmckl_context_set_ao_basis~
Sets the data describing the AO basis set into the context. Sets the data describing the AO basis set into the context.
| =type= | Gaussian or Slater | | ~type~ | Gaussian or Slater |
| =shell_num= | Number of shells | | ~shell_num~ | Number of shells |
| =prim_num= | Total number of primitives | | ~prim_num~ | Total number of primitives |
| =SHELL_CENTER(shell_num)= | Id of the nucleus on which the shell is centered | | ~SHELL_CENTER(shell_num)~ | Id of the nucleus on which the shell is centered |
| =SHELL_ANG_MOM(shell_num)= | Id of the nucleus on which the shell is centered | | ~SHELL_ANG_MOM(shell_num)~ | Id of the nucleus on which the shell is centered |
| =SHELL_FACTOR(shell_num)= | Normalization factor for the shell | | ~SHELL_FACTOR(shell_num)~ | Normalization factor for the shell |
| =SHELL_PRIM_NUM(shell_num)= | Number of primitives in the shell | | ~SHELL_PRIM_NUM(shell_num)~ | Number of primitives in the shell |
| =SHELL_PRIM_INDEX(shell_num)= | Address of the first primitive of the shelll in the =EXPONENT= array | | ~SHELL_PRIM_INDEX(shell_num)~ | Address of the first primitive of the shelll in the ~EXPONENT~ array |
| =EXPONENT(prim_num)= | Array of exponents | | ~EXPONENT(prim_num)~ | Array of exponents |
| =COEFFICIENT(prim_num)= | Array of coefficients | | ~COEFFICIENT(prim_num)~ | Array of coefficients |
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_context qmckl_context
@ -592,15 +592,15 @@ qmckl_context_set_ao_basis(const qmckl_context context , const char typ
*** Precision *** Precision
The following functions set and get the expected required The following functions set and get the expected required
precision and range. =precision= should be an integer between 2 precision and range. ~precision~ should be an integer between 2
and 53, and =range= should be an integer between 2 and 11. and 53, and ~range~ should be an integer between 2 and 11.
The setter functions functions return a new context as a 64-bit The setter functions functions return a new context as a 64-bit
integer. The getter functions return the value, as a 32-bit integer. The getter functions return the value, as a 32-bit
integer. The update functions return =QMCKL_SUCCESS= or integer. The update functions return ~QMCKL_SUCCESS~ or
=QMCKL_FAILURE=. ~QMCKL_FAILURE~.
**** =qmckl_context_update_precision= **** ~qmckl_context_update_precision~
Modifies the parameter for the numerical precision in a given context. Modifies the parameter for the numerical precision in a given context.
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_exit_code qmckl_context_update_precision(const qmckl_context context, const int precision); qmckl_exit_code qmckl_context_update_precision(const qmckl_context context, const int precision);
@ -633,7 +633,7 @@ qmckl_exit_code qmckl_context_update_precision(const qmckl_context context, cons
#+END_SRC #+END_SRC
***** TODO Tests :noexport: ***** TODO Tests :noexport:
**** =qmckl_context_update_range= **** ~qmckl_context_update_range~
Modifies the parameter for the numerical range in a given context. Modifies the parameter for the numerical range in a given context.
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_exit_code qmckl_context_update_range(const qmckl_context context, const int range); qmckl_exit_code qmckl_context_update_range(const qmckl_context context, const int range);
@ -666,7 +666,7 @@ qmckl_exit_code qmckl_context_update_range(const qmckl_context context, const in
#+END_SRC #+END_SRC
***** TODO Tests :noexport: ***** TODO Tests :noexport:
**** =qmckl_context_set_precision= **** ~qmckl_context_set_precision~
Returns a copy of the context with a different precision parameter. Returns a copy of the context with a different precision parameter.
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_context qmckl_context_set_precision(const qmckl_context context, const int precision); qmckl_context qmckl_context_set_precision(const qmckl_context context, const int precision);
@ -696,7 +696,7 @@ qmckl_context qmckl_context_set_precision(const qmckl_context context, const int
#+END_SRC #+END_SRC
***** TODO Tests :noexport: ***** TODO Tests :noexport:
**** =qmckl_context_set_range= **** ~qmckl_context_set_range~
Returns a copy of the context with a different precision parameter. Returns a copy of the context with a different precision parameter.
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
qmckl_context qmckl_context_set_range(const qmckl_context context, const int range); qmckl_context qmckl_context_set_range(const qmckl_context context, const int range);
@ -727,7 +727,7 @@ qmckl_context qmckl_context_set_range(const qmckl_context context, const int ran
***** TODO Tests :noexport: ***** TODO Tests :noexport:
**** =qmckl_context_get_precision= **** ~qmckl_context_get_precision~
Returns the value of the numerical precision in the context Returns the value of the numerical precision in the context
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
int32_t qmckl_context_get_precision(const qmckl_context context); int32_t qmckl_context_get_precision(const qmckl_context context);
@ -752,7 +752,7 @@ int qmckl_context_get_precision(const qmckl_context context) {
#+END_SRC #+END_SRC
***** TODO Tests :noexport: ***** TODO Tests :noexport:
**** =qmckl_context_get_range= **** ~qmckl_context_get_range~
Returns the value of the numerical range in the context Returns the value of the numerical range in the context
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
int32_t qmckl_context_get_range(const qmckl_context context); int32_t qmckl_context_get_range(const qmckl_context context);
@ -778,8 +778,8 @@ int qmckl_context_get_range(const qmckl_context context) {
***** TODO Tests :noexport: ***** TODO Tests :noexport:
**** =qmckl_context_get_epsilon= **** ~qmckl_context_get_epsilon~
Returns $\epsilon = 2^{1-n}$ where =n= is the precision Returns $\epsilon = 2^{1-n}$ where ~n~ is the precision
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h
double qmckl_context_get_epsilon(const qmckl_context context); double qmckl_context_get_epsilon(const qmckl_context context);
#+END_SRC #+END_SRC

View File

@ -20,7 +20,7 @@ MunitResult test_qmckl_distance() {
*** Squared distance *** Squared distance
**** =qmckl_distance_sq= **** ~qmckl_distance_sq~
Computes the matrix of the squared distances between all pairs of Computes the matrix of the squared distances between all pairs of
points in two sets, one point within each set: points in two sets, one point within each set:
@ -30,35 +30,35 @@ MunitResult test_qmckl_distance() {
***** Arguments ***** Arguments
| =context= | input | Global state | | ~context~ | input | Global state |
| =transa= | input | Array =A= is =N=: Normal, =T=: Transposed | | ~transa~ | input | Array ~A~ is ~N~: Normal, ~T~: Transposed |
| =transb= | input | Array =B= is =N=: Normal, =T=: Transposed | | ~transb~ | input | Array ~B~ is ~N~: Normal, ~T~: Transposed |
| =m= | input | Number of points in the first set | | ~m~ | input | Number of points in the first set |
| =n= | input | Number of points in the second set | | ~n~ | input | Number of points in the second set |
| =A(lda,3)= | input | Array containing the $m \times 3$ matrix $A$ | | ~A(lda,3)~ | input | Array containing the $m \times 3$ matrix $A$ |
| =lda= | input | Leading dimension of array =A= | | ~lda~ | input | Leading dimension of array ~A~ |
| =B(ldb,3)= | input | Array containing the $n \times 3$ matrix $B$ | | ~B(ldb,3)~ | input | Array containing the $n \times 3$ matrix $B$ |
| =ldb= | input | Leading dimension of array =B= | | ~ldb~ | input | Leading dimension of array ~B~ |
| =C(ldc,n)= | output | Array containing the $m \times n$ matrix $C$ | | ~C(ldc,n)~ | output | Array containing the $m \times n$ matrix $C$ |
| =ldc= | input | Leading dimension of array =C= | | ~ldc~ | input | Leading dimension of array ~C~ |
***** Requirements ***** Requirements
- =context= is not 0 - ~context~ is not 0
- =m= > 0 - ~m~ > 0
- =n= > 0 - ~n~ > 0
- =lda= >= 3 if =transa= is =N= - ~lda~ >= 3 if ~transa~ is ~N~
- =lda= >= m if =transa= is =T= - ~lda~ >= m if ~transa~ is ~T~
- =ldb= >= 3 if =transb= is =N= - ~ldb~ >= 3 if ~transb~ is ~N~
- =ldb= >= n if =transb= is =T= - ~ldb~ >= n if ~transb~ is ~T~
- =ldc= >= m if =transa= is = - ~ldc~ >= m
- =A= is allocated with at least $3 \times m \times 8$ bytes - ~A~ is allocated with at least $3 \times m \times 8$ bytes
- =B= is allocated with at least $3 \times n \times 8$ bytes - ~B~ is allocated with at least $3 \times n \times 8$ bytes
- =C= is allocated with at least $m \times n \times 8$ bytes - ~C~ is allocated with at least $m \times n \times 8$ bytes
***** Performance ***** Performance
This function might be more efficient when =A= and =B= are This function might be more efficient when ~A~ and ~B~ are
transposed. transposed.
#+BEGIN_SRC C :comments org :tangle qmckl.h #+BEGIN_SRC C :comments org :tangle qmckl.h

View File

@ -18,7 +18,7 @@
MunitResult test_qmckl_memory() { MunitResult test_qmckl_memory() {
#+END_SRC #+END_SRC
*** =qmckl_malloc= *** ~qmckl_malloc~
Memory allocation function, letting the library choose how the Memory allocation function, letting the library choose how the
memory will be allocated, and a pointer is returned to the user. memory will be allocated, and a pointer is returned to the user.
@ -61,7 +61,7 @@ munit_assert_int(a[1], ==, 2);
munit_assert_int(a[2], ==, 3); munit_assert_int(a[2], ==, 3);
#+END_SRC #+END_SRC
*** =qmckl_free= *** ~qmckl_free~
#+BEGIN_SRC C :tangle qmckl.h #+BEGIN_SRC C :tangle qmckl.h
void qmckl_free(void *ptr); void qmckl_free(void *ptr);