diff options
Diffstat (limited to 'doc/types.rst')
-rw-r--r-- | doc/types.rst | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/doc/types.rst b/doc/types.rst new file mode 100644 index 0000000..b729ac3 --- /dev/null +++ b/doc/types.rst @@ -0,0 +1,36 @@ + +************ +Custom Types +************ + +The Wolff library uses several custom types, defined to promote memory and cache effiency, promote shorter lines, and associate natural scope to certain parameters. They are all aliases for `standard C99 fixed width integer types`_. These are defined in the header file :file:`wolff/types.h`. Here is a list of the types and what they are used to hold: + +.. cpp:type:: uint_fast32_t v_t + + Holds indicies for lattice vertices and edges. + +.. cpp:type:: uint_fast8_t q_t + + Holds indicies for enumerating states, as in :math:`q`-state Potts. + +.. cpp:type:: uint_fast8_t D_t + + Holds the dimension of space. + +.. cpp:type:: uint_fast16_t L_t + + Holds the linear extent of the lattice. + +.. cpp:type:: uint_fast64_t N_t + + Holds a count of Monte Carlo steps. + +Other Definitions +================= + +All types are unsigned integers of a minimum size appropriate for most realistic purposes, with the :c:type:`fast` directives meaning that your compiler may choose a larger type for efficiency's sake. + +For each type :c:type:`x_t`, the macro :c:macro:`MAX_x` supplies the maximum value the type may hold, the macro :c:macro:`PRIx` supplies the format constants for use with the :c:func:`fprintf` family of functions, and the macro :c:macro:`SCNx` supplies the format constants for use with the :c:func:`fscanf` family of functions. + +.. _standard C99 fixed width integer types: https://en.cppreference.com/w/c/types/integer + |