signum (ANSI and GNU Common Lisp Document)

Next: sqrt, Previous: mod (Function), Up: Numbers Dictionary

#### 12.2.37 signum [Function]

`signum` number ⇒ signed-prototype

#### Arguments and Values::

number—a number.

signed-prototype—a number.

#### Description::

signum determines a numerical value that indicates whether number is negative, zero, or positive.

For a rational, signum returns one of `-1`, `0`, or `1` according to whether number is negative, zero, or positive. For a float, the result is a float of the same format whose value is minus one, zero, or one. For a complex number `z`, `(signum z)` is a complex number of the same phase but with unit magnitude, unless `z` is a complex zero, in which case the result is `z`.

For rational arguments, signum is a rational function, but it may be irrational for complex arguments.

If number is a float, the result is a float. If number is a rational, the result is a rational. If number is a complex float, the result is a complex float. If number is a complex rational, the result is a complex, but it is implementation-dependent whether that result is a complex rational or a complex float.

#### Examples::

     (signum 0) ⇒  0
     (signum 99) ⇒  1
     (signum 4/5) ⇒  1
     (signum -99/100) ⇒  -1
     (signum 0.0) ⇒  0.0
     (signum #c(0 33)) ⇒  #C(0.0 1.0)
     (signum #c(7.5 10.0)) ⇒  #C(0.6 0.8)
     (signum #c(0.0 -14.7)) ⇒  #C(0.0 -1.0)
     (eql (signum -0.0) -0.0) ⇒  true

#### See Also::

Rule of Float Substitutability

#### Notes::

     (signum x) ≡ (if (zerop x) x (/ x (abs x)))