The Big-Integers library modifies the behavior of the functions provided by the Generic-Arithmetic library as described below.
The actual type of the return value for all the following interfaces is determined by the contagion rules when applied to the arguments.
+ abstract-integer1 abstract-integer2 => abstract-integer + abstract-integer float1 => float + float1 abstract-integer => float - abstract-integer1 abstract-integer2 => abstract-integer - abstract-integer float1 => float - float1 abstract-integer => float * abstract-integer1 abstract-integer2 => abstract-integer * abstract-integer float1 => float * float1 abstract-integer => float
The return value of the following interface is of the same float format as the argument.
negative abstract-integer => negative-abstract-integer
The second return value of all the following interfaces is of the same float format as the argument.
floor abstract-integer => abstract-integer1 abstract-integer2 floor float1 => abstract-integer float ceiling abstract-integer => abstract-integer1 abstract-integer2 ceiling float1 => abstract-integer float round abstract-integer => abstract-integer1 abstract-integer2 round float1 => abstract-integer float truncate abstract-integer => abstract-integer1 abstract-integer2 truncate float1 => abstract-integer float
The second return value of all the following interfaces is of the same float format as the first argument.
floor/ abstract-integer1 abstract-integer2 => abstract-integer3 abstract-integer4 floor/ float1 abstract-integer1 => abstract-integer2 float2 ceiling/ abstract-integer1 abstract-integer2 => abstract-integer3 abstract-integer4 ceiling/ float1 abstract-integer1 => abstract-integer2 float2 round/ abstract-integer1 abstract-integer2 => abstract-integer3 abstract-integer4 round/ float1 abstract-integer1 => abstract-integer2 float2 truncate/ abstract-integer1 abstract-integer2 => abstract-integer3 abstract-integer4 truncate/ float1 abstract-integer1 => abstract-integer2 float2
The second return value of the following interfaces is of the same float format as the second argument.
floor/ abstract-integer1 float1 => abstract-integer2 float2 ceiling/ abstract-integer1 float1 => abstract-integer2 float2 round/ abstract-integer1 float1 => abstract-integer2 float2 truncate/ abstract-integer1 float1 => abstract-integer2 float2
The return value of the following interfaces is of the same float format as the first argument.
modulo float1 abstract-integer => float remainder float1 abstract-integer => float
The return value of the following interfaces is of the same float format as the second argument.
modulo abstract-integer1 abstract-integer2 => abstract-integer modulo abstract-integer float1 => float remainder abstract-integer1 abstract-integer2 => abstract-integer remainder abstract-integer float1 => float
The behavior of the following miscellaneous interfaces is also modified by the Big-Integers library.
^ abstract-integer1 integer => abstract-integer abs abstract-integer1 => abstract-integer logior #rest abstract-integer1 => abstract-integer logxor #rest abstract-integer1 => abstract-integer logand #rest abstract-integer1 => abstract-integer lognot abstract-integer1 => abstract-integer logbit? integer abstract-integer => boolean ash abstract-integer1 integer => abstract-integer lcm abstract-integer1 abstract-integer2 => abstract-integer gcd abstract-integer1 abstract-integer2 => abstract-integer