# Numeric Values

## Type Predicates

```(number? val)```
Standard Scheme Procedure. Determine if `val` is a number.
```(integer? val)```
Standard Scheme Procedure. Determine whether `val` is an integer.
```(rational? val)```
Optional Scheme Procedure. Determine whether `val` can be interpreted as a rational number.
```(real? val)```
Standard Scheme Procedure. Determine whether `val` is a real number.
```(complex? val)```
Optional Scheme Procedure. Determine whether `val` can be interpreted as a complex number.

## Extrema

```(max v1 v2)```
Standard Scheme Procedure. Find the larger of `v1` and `v2`.
```(max v1 v2 ... vn)```
Standard Scheme Procedure. Find the largest of `v1` through `vn`.
```(min v1 v2)```
Standard Scheme Procedure. Find the smaller of `v1` and `v2`.
```(min v1 v2 ... vn)```
Standard Scheme Procedure. Find the smallest of `v1` through `vn`.

## Division-Related Procedures

```(quotient dividend divisor)```
Standard Scheme Procedure. Find the quotient of `dividend` and `divisor`, both of which must be integers. The quotient is the whole part of the result of dividing `dividend` by `divisor`.
```(remainder dividend divisor)```
Standard Scheme Procedure. Compute the remainder after doing whole-number division of `dividend` by `divisor`.
```(modulo value modulus)```
Standard Scheme Procedure. In a number line segmented into `modulus`-sized sections, gives the offset of `value` from the start of its section.

## Converting Reals to Integers

```(floor num)```
Standard Scheme Procedure. Find the largest integer less than or equal to `num`. That is, round down.
```(ceiling num)```
Standard Scheme Procedure. Find the smallest integer greater than or equal to `num`. That is, round down.
```(truncate num)```
Standard Scheme Procedure. Remove any fractional part from `num`. That is, round toward zero.
```(round num)```
Standard Scheme Procedure. Round `num` toward the nearest integer. If the decimal portion of `num` is greater than 1/2, rounds up. If the decimal portion is less than 1/2, rounds down. If the decimal portion equals 1/2, may round in either direction. (In most implementations, numbers with fractional portions equal to 1/2 round toward the even number.)

## Other Predicates

```(exact? num)```
Standard Scheme Procedure. Determine whether the numeric value `num` is represented exactly (that is, not approximated).
```(inexact? num)```
Standard Scheme Procedure. Determine whether the numeric value `num` is represented inexactly (that is, approximated).
```(even? int)```
Standard Scheme Procedure. Determine whether the integer value `int` is even (that is, has a remainder of 0 when divided by 2).
```(odd? int)```
Standard Scheme Procedure. Determine whether the integer value `int` is odd (that is, has a remainder of 1 when divided by 2).
```(zero? num)```
Standard Scheme Procedure. Determine whether the numeric value `num` is zero.
```(positive? num)```
Standard Scheme Procedure. Determine whether the numeric value `num` is positive (greater than zero).
```(negative? num)```
Standard Scheme Procedure. Determine whether the numeric value `num` is negative (less than zero).

## Converting Representations

```(exact->inexact num)```
Standard Scheme Procedure. Create an inexact representation of `num`.
```(inexact->exact num)```
Standard Scheme Procedure. Create an exact representation of `num`. (Of course, if `num` was already approximated, the result, while exact, still approximates whatever `num` approximated.)

## Other Procedures

```(expt base power)```
Standard Scheme Procedure. Compute `base``power`.

Samuel A. Rebelsky, rebelsky@grinnell.edu

Copyright (c) 2007-10 Janet Davis, Matthew Kluber, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials copyright by John David Stone and Henry Walker and used by permission.)

This material is based upon work partially supported by the National Science Foundation under Grant No. CCLI-0633090. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit `http://creativecommons.org/licenses/by-nc/2.5/` or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.