From 8ffbc2df0fde83082610149d24e594c1cd879f4a Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:25 -0800 Subject: Import Upstream version 2a6 --- ratize.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 ratize.scm (limited to 'ratize.scm') diff --git a/ratize.scm b/ratize.scm new file mode 100644 index 0000000..d8cad11 --- /dev/null +++ b/ratize.scm @@ -0,0 +1,13 @@ +;;;; "ratize.scm" Convert number to rational number + +(define (rational:simplest x y) + (define (sr x y) (let ((fx (floor x)) (fy (floor y))) + (cond ((not (< fx x)) fx) + ((= fx fy) (+ fx (/ (sr (/ (- y fy)) (/ (- x fx)))))) + (else (+ 1 fx))))) + (cond ((< y x) (rational:simplest y x)) + ((not (< x y)) (if (rational? x) x (slib:error))) + ((positive? x) (sr x y)) + ((negative? y) (- (sr (- y) (- x)))) + (else (if (and (exact? x) (exact? y)) 0 0.0)))) +(define (rationalize x e) (rational:simplest (- x e) (+ x e))) -- cgit v1.2.3