Next Previous Up Top Contents Index

5.5 The Big-Integers library

5.5.5 Arithmetic operations

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 


Common Dylan and Functional Extensions - 31 Mar 00

Next Previous Up Top Contents Index