From 74148a2f1682f5f1f88eb5d3e620710a9f26c90c Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 14 Feb 2019 13:55:56 -0500 Subject: [PATCH] Remove dependency on (scheme complex) --- srfi/69.sld | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/srfi/69.sld b/srfi/69.sld index 4e6fa39a..36e40866 100644 --- a/srfi/69.sld +++ b/srfi/69.sld @@ -42,8 +42,7 @@ ) (import (scheme base) (scheme char) - (scheme complex) - ;(scheme cyclone util) + ;(scheme complex) ) (begin @@ -74,6 +73,24 @@ "(void *data, object ptr, object sym)" " return obj_int2obj(((long)sym) & 0x7FFFFFFF); ") +(define-c %real-part + "(void *data, int argc, closure _, object k, object z)" + " if (boolean_t == Cyc_is_complex(z)) { + make_double(d, creal(complex_num_value(z))); + return_closcall1(data, k, &d); + } else { + return_closcall1(data, k, z); + } ") + +(define-c %imag-part + "(void *data, int argc, closure _, object k, object z)" + " if (boolean_t == Cyc_is_complex(z)) { + make_double(d, cimag(complex_num_value(z))); + return_closcall1(data, k, &d); + } else { + return_closcall1(data, k, z); + } ") + (define (hash obj . maybe-bound) (let ((bound (if (null? maybe-bound) *default-bound* (car maybe-bound)))) (cond ((integer? obj) (modulo obj bound)) @@ -84,7 +101,7 @@ ) ((real? obj) (modulo (+ (numerator obj) (denominator obj)) bound)) ((number? obj) - (modulo (+ (hash (real-part obj)) (* 3 (hash (imag-part obj)))) + (modulo (+ (hash (%real-part obj)) (* 3 (hash (%imag-part obj)))) bound)) ((char? obj) (modulo (char->integer obj) bound)) ((vector? obj) (vector-hash obj bound))