An R interface to FLINT, a C library for number theory.
flintABI()
flintIdentical(object, reference)
flintLength(object, exact = TRUE)
flintPrec(prec = NULL)
flintRnd(rnd = NULL)
flintSize(object)
flintTriple(object)
flintVersion()
flintABI
returns the size in bits of C type
long int
, either 32
or 64
. The value is
determined when package flint is configured. It is checked at
configure time and at load time that linked C libraries
were configured for the same ABI.
flintIdentical
tests whether its arguments inherit from the
same nonvirtual subclass of flint
and have
identical length, elements, and names. If the elements are recursive
structures, then they are compared recursively.
flintLength
returns a representation of the length of
object
. If exact = TRUE
, then the return value is an
object of class ulong
representing the length
exactly. Otherwise, if the length is less than or equal to
.Machine[["integer.max"]]
, then the return value is a
traditional integer vector representing the length exactly.
Otherwise, the return value is a traditional double vector
representing the length exactly if and only if
\(n \le 2^d-1\) or
\(2^{d+p} \le n < 2^{d+p+1}\) and \(n\)
is divisible by \(2^{p+1}\), where \(n\) is the length,
\(d\) is .Machine[["double.digits"]]
, and
\(p = 0,1,\ldots\). Lengths not exactly representable in double
precision are rounded to the next representable number in the
direction of zero. Return values not representing the length exactly
have an attribute off
preserving the rounding error (an integer
in \(1,\ldots,2^p\)).
flintPrec
returns the previous default precision.
flintRnd
returns the previous default rounding mode.
flintSize
returns an upper bound for the number of bytes used
by object
, as an object of class object_size
(following
function object.size
in package utils). If no members of
the recursive structure share memory, then the upper bound is exact.
Recursion starts at the address stored by the R object, not at the
address of the object itself. A corollary is that
flintSize(object)
is zero for object
of zero length.
Another corollary is that the bytes counted by flintSize
and
the bytes counted by object.size
are disjoint.
flintTriple
returns a character vector of length 3 containing
the class of object
, the length of object
, and the
address stored by object
.
flintVersion
returns a named list of numeric versions with
elements:
the R package version.
the FLINT header version.
the FLINT library version.
the GNU MPFR header version.
the GNU MPFR library version.
the GNU MP header version.
the GNU MP library version.
Header versions are determined at compile time. Library versions are determined at compile time (static linking) or at load time (dynamic linking).
objects inheriting from virtual class flint
.
Otherwise, the behaviour is undefined.
a logical indicating if the length should be represented exactly as
an object of class ulong
.
a new default value for the precision of inexact floating-point
operations, if non-NULL
. The value should be a positive
integer indicating a number of bits.
a new default value for the rounding mode of inexact floating-point
operations, if non-NULL
. The value should be a character
string indicating a rounding mode for signed floating types.
Valid characters are [Uu] (towards positive infinity),
[Dd] (towards negative infinity), [Zz] (towards zero),
[Aa] (away from zero), and [Nn] (to nearest, with
precedence to even significands).
Mikael Jagan jaganmn@mcmaster.ca
To report a bug or request a feature, use
bug.report(package = "flint")
.
To render the change log, use
news(package = "flint")
.
To render the index, use
help(package = "flint")
To render a list of help topics for S4 classes, use
help.search(package = "flint", keyword = "classes")
To render a list of help topics for special mathematical functions,
use
help.search(package = "flint", keyword = "math")
FLINT Team (2025). FLINT: Fast Library for Number Theory. https://flintlib.org/
flintABI()
oprec <- flintPrec()
nprec <- 100L
stopifnot(identical(flintPrec(nprec), oprec),
identical(flintPrec(), nprec),
identical(flintPrec(oprec), nprec),
identical(flintPrec(), oprec))
ornd <- flintRnd()
nrnd <- "Z"
stopifnot(identical(flintRnd(nrnd), ornd),
identical(flintRnd(), nrnd),
identical(flintRnd(ornd), nrnd),
identical(flintRnd(), ornd))
flintVersion()
Run the code above in your browser using DataLab