minusp, plusp
minusp, plusp Function
Syntax:
minusp real → generalized-boolean
plusp real → generalized-boolean
Arguments and Values:
real—a real.
generalized-boolean—a generalized boolean.
Description:
minusp returns true if real is less than zero; otherwise, returns false.
plusp returns true if real is greater than zero; otherwise, returns false.
Regardless of whether an implementation provides distinct representations for positive and negative float zeros, (minusp -0.0) always returns false.
Examples:
(minusp -1) → true
(plusp 0) → false
(plusp least-positive-single-float) → true
Exceptional Situations:
Should signal an error of type type-error if real is not a real.
Expanded Reference: minusp, plusp
Testing for negative and positive numbers
minusp returns true if the real number is less than zero. plusp returns true if the real number is greater than zero. Neither returns true for zero.
(minusp -1)
=> T
(minusp 0)
=> NIL
(minusp 1)
=> NIL
(plusp 1)
=> T
(plusp 0)
=> NIL
(plusp -1)
=> NIL
With floating-point numbers
These predicates work with all real number types, including floats.
(plusp 0.001)
=> T
(minusp -0.001)
=> T
(plusp least-positive-single-float)
=> T
(minusp most-negative-double-float)
=> T
Negative zero
Regardless of whether an implementation supports negative zero, (minusp -0.0) always returns false.
(minusp -0.0)
=> NIL
(plusp -0.0)
=> NIL
With rationals
minusp and plusp work with ratios as well as integers.
(plusp 1/1000000)
=> T
(minusp -1/1000000)
=> T
(plusp 0/5)
=> NIL
Practical use: classifying numbers
These predicates are useful for branching logic based on sign.
(defun describe-sign (n)
(cond ((plusp n) "positive")
((minusp n) "negative")
(t "zero")))
(describe-sign 5)
=> "positive"
(describe-sign -3)
=> "negative"
(describe-sign 0)
=> "zero"