[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# bounded, infinite ranges?

• To: dyer@eagle.sharebase.com
• Subject: bounded, infinite ranges?
• From: Stavros Macrakis <macrakis@osf.org>
• Date: Mon, 26 Oct 1992 14:52:37 -0500
• Cc: andyw@ibeam.ht.intel.com, dyer@eagle.sharebase.com
• Cc: info-dylan@cambridge.apple.com
• In-reply-to: Scot Dyer's message of Thu, 22 Oct 92 14:29:10 PDT <9210222129.AA01117@eagle.sharebase.com>
• Sender: macrakis@osf.org

```Dyer writes:

... enumerating a finite rational range would be quite time-intensive, and
would require some special form, since it wouldn't (in all probability) fit in
memory on most machines.  Also, generating the members of a rational range in
sequential order (each new one greater or lesser for the whole range) is more
of a trick than for floats...

I don't see any problem here.  Although any non-trivial _interval_
contains an infinity of rationals, a Dylan _range_ has an explicit
step.  A range from A/B by C/D consists simply of A/B + i*C/D (call
that R[i]).

Presumably, you calculate R[i] by first expressing A/B and C/D over a
common denominator:

G = GCD(B,D)
N = A*D/G
D = B*D/G
Del = C*B/G

Then,

N[i+1] = N[i] + Del

R[i] = (N[i] / GCD(N[i],D) ) / (D / GCD(N[i],D))

-s

```