mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-24 20:45:06 +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:
|
Features:
|
||||||
|
|
||||||
|
- Thanks to ecraven, added `exact-integer-sqrt`.
|
||||||
- Allow the reader to recognize `+inf.0`, `-inf.0`, `+nan.0`, and `-nan.0`.
|
- Allow the reader to recognize `+inf.0`, `-inf.0`, `+nan.0`, and `-nan.0`.
|
||||||
|
|
||||||
Bug Fixes
|
Bug Fixes
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
floor-remainder
|
floor-remainder
|
||||||
even?
|
even?
|
||||||
exact-integer?
|
exact-integer?
|
||||||
;exact-integer-sqrt
|
exact-integer-sqrt
|
||||||
exact?
|
exact?
|
||||||
inexact?
|
inexact?
|
||||||
odd?
|
odd?
|
||||||
|
@ -1044,15 +1044,18 @@
|
||||||
(if (>= res 0) res (+ res b)))))
|
(if (>= res 0) res (+ res b)))))
|
||||||
(define (odd? num) (= (modulo num 2) 1))
|
(define (odd? num) (= (modulo num 2) 1))
|
||||||
(define (even? num) (= (modulo num 2) 0))
|
(define (even? num) (= (modulo num 2) 0))
|
||||||
; ;; from mosh
|
;; from mosh
|
||||||
; (define (exact-integer-sqrt k)
|
(define (exact-integer-sqrt k)
|
||||||
; (unless (and (exact? k)
|
(unless (and (exact? k)
|
||||||
; (integer? k)
|
(integer? k)
|
||||||
; (not (negative? k)))
|
(not (negative? k)))
|
||||||
; (error "exact non-negative integer required" k))
|
(error "exact non-negative integer required" k))
|
||||||
; (let* ((s (exact (truncate (sqrt k))))
|
(let* ((s (exact (truncate (sqrt k))))
|
||||||
; (r (- k (* s s))))
|
(r (- k (* s s))))
|
||||||
; (values s r)))
|
(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)
|
(define (exact-integer? num)
|
||||||
(and (exact? num) (integer? num)))
|
(and (exact? num) (integer? num)))
|
||||||
(define-c exact?
|
(define-c exact?
|
||||||
|
|
Loading…
Add table
Reference in a new issue