mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Issue #128 - Added exact-integer-sqrt
This commit is contained in:
parent
b55ff76701
commit
024b384f7a
2 changed files with 14 additions and 10 deletions
|
@ -5,6 +5,7 @@ TODO: SRFI 113
|
|||
|
||||
Features:
|
||||
|
||||
- Thanks to ecraven, added `exact-integer-sqrt`.
|
||||
- Allow the reader to recognize `+inf.0`, `-inf.0`, `+nan.0`, and `-nan.0`.
|
||||
|
||||
Bug Fixes
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
floor-remainder
|
||||
even?
|
||||
exact-integer?
|
||||
;exact-integer-sqrt
|
||||
exact-integer-sqrt
|
||||
exact?
|
||||
inexact?
|
||||
odd?
|
||||
|
@ -1044,15 +1044,18 @@
|
|||
(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)))
|
||||
;; 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-c sqrt
|
||||
"(void *data, int argc, closure _, object k, object z)"
|
||||
" return_inexact_double_op(data, k, sqrt, z);")
|
||||
(define (exact-integer? num)
|
||||
(and (exact? num) (integer? num)))
|
||||
(define-c exact?
|
||||
|
|
Loading…
Add table
Reference in a new issue