Add the following predicates to racket/math:

- positive-integer?
- negative-integer?
- nonpositive-integer?
- nonnegative-integer?

These are like their exact-* counterparts provided by racket/base,
but they work for inexact numbers, and not just exact ones.
This commit is contained in:
Leif Andersen 2017-03-01 11:52:53 -05:00
parent d08a4cddfb
commit c911e4b52d

View File

@ -9,6 +9,10 @@
(provide pi pi.f (provide pi pi.f
nan? infinite? nan? infinite?
positive-integer?
negative-integer?
nonpositive-integer?
nonnegative-integer?
sqr sqr
sgn conjugate sgn conjugate
sinh cosh tanh sinh cosh tanh
@ -30,6 +34,18 @@
(unless (real? x) (raise-argument-error 'infinite? "real?" x)) (unless (real? x) (raise-argument-error 'infinite? "real?" x))
(or (= x +inf.0) (= x -inf.0))) (or (= x +inf.0) (= x -inf.0)))
(define (positive-integer? x)
(and (integer? x) (positive? x)))
(define (negative-integer? x)
(and (integer? x) (negative? x)))
(define (nonpositive-integer? x)
(and (integer? x) (not (positive? x))))
(define (nonnegative-integer? x)
(and (integer? x) (not (negative? x))))
;; z^2 ;; z^2
(define (sqr z) (define (sqr z)
(unless (number? z) (raise-argument-error 'sqr "number?" z)) (unless (number? z) (raise-argument-error 'sqr "number?" z))