Before describing is/2 and the expressions that it can evaluate, we note that in Version 3.0 of XSB, integers in XSB are represented using a single word of 32 or 64 bits, depending on the machine architecture. Floating point values are, by default, stored as word-sized references to double precision values, regardless of the target machine. Direct (non-referenced, tagged) single precision floats can be activated for speed purposes by passing the option -enable-fast-floats to the configure script at configuration time. This option is not described when any sort of precision is desired, as there may be as little as 28 bits available to represent a given number value under a tagged architecture. In addition, evaluation of arithmetic expressions through is/2 does not check for overflow or underflow. As a result, XSB's floating point operations do not conform to IEEE floating point standards, and deviates in this regard from the ISO Prolog standard (see [30] Section 9). We hope to fix these problems in a future release 6.2.
All of the evaluable functors describe below throw a type error if their evaluated input is not numeric. We describe below only their behavior on correctly typed input.