## Numeric Comparisons

Numeric Comparisons

The function `=` is the numeric equality predicate. It compares numbers by mathematical value, ignoring differences in type. Thus, `=` will consider mathematically equivalent values of different types equivalent while the generic equality predicate `EQL` would consider them inequivalent because of the difference in type. (The generic equality predicate `EQUALP`, however, uses `=` to compare numbers.) If it's called with more than two arguments, it returns true only if they all have the same value. Thus:

```(= 1 1) ==> T (= 10 20/2) ==> T (= 1 1.0 #c(1.0 0.0) #c(1 0)) ==> T```

The `/=` function, conversely, returns true only if all its arguments are different values.

```(/= 1 1) ==> NIL (/= 1 2) ==> T (/= 1 2 3) ==> T (/= 1 2 3 1) ==> NIL (/= 1 2 3 1.0) ==> NIL```

The functions `<`, `>`, `<=`, and `>=` order rationals and floating-point numbers (in other words, the real numbers.) Like `=` and `/=`, these functions can be called with more than two arguments, in which case each argument is compared to the argument to its right.

```(< 2 3) ==> T (> 2 3) ==> NIL (> 3 2) ==> T (< 2 3 4) ==> T (< 2 3 3) ==> NIL (<= 2 3 3) ==> T (<= 2 3 3 4) ==> T (<= 2 3 4 3) ==> NIL```

To pick out the smallest or largest of several numbers, you can use the function `MIN` or `MAX`, which takes any number of real number arguments and returns the minimum or maximum value.

```(max 10 11) ==> 11 (min -12 -10) ==> -12 (max -1 2 -3) ==> 2```

Some other handy functions are `ZEROP`, `MINUSP`, and `PLUSP`, which test whether a single real number is equal to, less than, or greater than zero. Two other predicates, `EVENP` and `ODDP`, test whether a single integer argument is even or odd. The P suffix on the names of these functions is a standard naming convention for predicate functions, functions that test some condition and return a boolean.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.732. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз