diff --git a/scheme/base.sld b/scheme/base.sld index 9c732e48..4b101d77 100644 --- a/scheme/base.sld +++ b/scheme/base.sld @@ -35,6 +35,7 @@ floor-remainder even? exact-integer? + ;exact-integer-sqrt exact? inexact? odd? @@ -1043,6 +1044,15 @@ (if (>= res 0) res (+ res b))))) (define (odd? num) (= (modulo num 2) 1)) (define (even? num) (= (modulo num 2) 0)) +; ;; from mosh +; (define (exact-integer-sqrt k) +; (unless (and (exact? k) +; (integer? k) +; (not (negative? k))) +; (error "exact non-negative integer required" k)) +; (let* ((s (exact (truncate (sqrt k)))) +; (r (- k (* s s)))) +; (values s r))) (define (exact-integer? num) (and (exact? num) (integer? num))) (define-c exact?