#### 4.7.2 Flonum Operations

A flonum is an inexact real number that is implemented as a floating-point number. In MIT/GNU Scheme, all inexact real numbers are flonums. For this reason, constants such as `0.` and `2.3` are guaranteed to be flonums.

procedure: flo:flonum? object

  Returns `#t` if object is a flonum; otherwise returns `#f`.

procedure: flo:= flonum1 flonum2
procedure: flo:< flonum1 flonum2
procedure: flo:> flonum1 flonum2

  These procedures are the standard order and equality predicates on flonums. When compiled, they do not check the types of their arguments.

procedure: flo:zero? flonum
procedure: flo:positive? flonum
procedure: flo:negative? flonum

  Each of these procedures compares its argument to zero. When compiled, they do not check the type of their argument.

procedure: flo:+ flonum1 flonum2
procedure: flo:- flonum1 flonum2
procedure: flo:* flonum1 flonum2
procedure: flo:/ flonum1 flonum2

  These procedures are the standard arithmetic operations on flonums. When compiled, they do not check the types of their arguments.

procedure: flo:finite? flonum

  The IEEE floating-point number specification supports three special “numbers”: positive infinity (`+inf`), negative infinity (`-inf`), and not-a-number (`NaN`). This predicate returns `#f` if flonum is one of these objects, and `#t` if it is any other floating-point number.

procedure: flo:negate flonum

  This procedure returns the negation of its argument. When compiled, it does not check the type of its argument. Equivalent to `(flo:- 0. flonum)`.

procedure: flo:abs flonum
procedure: flo:exp flonum
procedure: flo:log flonum
procedure: flo:sin flonum
procedure: flo:cos flonum
procedure: flo:tan flonum
procedure: flo:asin flonum
procedure: flo:acos flonum
procedure: flo:atan flonum
procedure: flo:sqrt flonum
procedure: flo:expt flonum1 flonum2
procedure: flo:floor flonum
procedure: flo:ceiling flonum
procedure: flo:truncate flonum
procedure: flo:round flonum
procedure: flo:floor->exact flonum
procedure: flo:ceiling->exact flonum
procedure: flo:truncate->exact flonum
procedure: flo:round->exact flonum

  These procedures are flonum versions of the corresponding procedures. When compiled, they do not check the types of their arguments.

procedure: flo:atan2 flonum1 flonum2

  This is the flonum version of `atan` with two arguments. When compiled, it does not check the types of its arguments.