Portability¶
Portable FLINT types¶
For platform independence, FLINT provides two types ulong
and slong to replace unsigned long and long
respectively. These are guaranteed to be the same size as GMP’s
mp_limb_t and mp_limb_signed_t types, respectively.
A full list of types provided by FLINT is available in
code_conventions.md in the top-level source tree.
As FLINT supports Windows 64 on which the FLINT ulong and
slong types are 64 bits, whilst unsigned long and
long are only 32 bits, it is necessary to have a special
format specifier which is 64 bits on Windows 64 instead of the usual
"%lu" and "%ld".
For this purpose FLINT provides its own I/O functions, flint_printf,
flint_fprintf, flint_sprintf, flint_scanf,
flint_fscanf and flint_sscanf, which work exactly as the
usual system versions, but which take the "%wu" and "%wd"
format specifiers, which support FLINT ulong and slong
types respectively.
Also, instead of using constants 123UL and 123L, FLINT
provides the macros UWORD(123) and WORD(123) respectively
for constants of type ulong and slong respectively.
The maximum and minimum values that can be represented by these types
are given by UWORD_MAX and WORD_MAX respectively.