Math operations obey certain numerical upgrade rules. If one of the inputs is a bignum and the other is a fixnum, the latter is first coerced to a bignum; if one of the inputs is a float, the other is coerced to a float.

Two examples where you should note the types of the inputs and outputs:

The following usual operations are supported by all numbers.

Non-commutative operations take operands from the stack in the natural order; 6 2 / divides 6 by 2.

Division by zero

Real numbers (but not complex numbers) can be ordered:

Numbers can be compared for equality using =, or a less precise test which disregards types:

See also

Floating point comparison operations

Two examples where you should note the types of the inputs and outputs:

USE: classes
3 >fixnum 6 >bignum * class-of .

bignum

bignum

1/2 2.0 + .

2.5

2.5

The following usual operations are supported by all numbers.

+ ( x y -- z )

- ( x y -- z )

* ( x y -- z )

/ ( x y -- z )

Non-commutative operations take operands from the stack in the natural order; 6 2 / divides 6 by 2.

Division by zero

Real numbers (but not complex numbers) can be ordered:

< ( x y -- ? )

<= ( x y -- ? )

> ( x y -- ? )

>= ( x y -- ? )

Numbers can be compared for equality using =, or a less precise test which disregards types:

number= ( x y -- ? )

See also

Floating point comparison operations

This documentation was generated offline from a
`load-all`

image. If you want, you can also
browse the documentation from within the UI developer tools. See
the Factor website
for more information.

Factor 0.99 x86.64 (2173, heads/master-f3ee5c5979, Sep 18 2022 13:17:51)