First understand that librep distinguishes
inexact numbers. This is similar to Scheme. Quoting from the
… numbers are either exact or inexact. A number is exact if it was written as an exact constant or was derived from exact numbers using only exact operations. A number is inexact if it was written as an inexact constant, if it was derived using inexact ingredients, or if it was derived using inexact operations. Thus inexactness is a contagious property of a number.
Librep has three types of numbers: integer, rational, and float.
With gmp, exact numbers include both integers and rational numbers. There is no theoretical limit to the range of the values that may be represented 3.
Without gmp, only integer is exact. Rational numbers get approximated with float. On 32-bit system, integer is signed 30-bit (not 32 bits), and 62-bit on 64-bit system.4
Inexact numbers are currently implemented using double precision floating point values.
When exact arguments are passed to functions which take float arguments, then they are automatically converted to float.
Note that Rep often handles integer overflow by converting the result from integer to float.