# Function RATIONAL, RATIONALIZE

### Syntax

### Arguments and Values

### Description

**rational** and **rationalize** convert *reals* to *rationals*.

If *number* is already *rational*, it is returned.

If *number* is a *float*, **rational** returns a *rational* that is mathematically equal in value to the *float*. **rationalize** returns a *rational* that approximates the *float* to the accuracy of the underlying floating-point representation.

**rational** assumes that the *float* is completely accurate.

**rationalize** assumes that the *float* is accurate only to the precision of the floating-point representation.

### Examples

(rational 0)

→

0

(rationalize -11/100)

→

-11/100

(rational .1)

→

13421773/134217728 ;implementation-dependent

(rationalize .1)

→

1/10

### Side Effects

### Affected By

### Exceptional Situations

### See Also

### Notes

Rationalizing a *float* by either method and then converting it back to a *float* of the same format produces the original *number*.

(float (rational *x*) *x*)
≡ (float (rationalize *x*) *x*)
≡ *x*

\issue{REAL-NUMBER-TYPE:X3J13-MAR-89}