[Top][All Lists]

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

Re: ratio implementation

From: Marius Vollmer
Subject: Re: ratio implementation
Date: Tue, 07 Oct 2003 17:24:16 +0200
User-agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux)

Bill Schottstaedt <address@hidden> writes:

>  > That is, instead of using "long", I'd say we simply use "SCM" and
>  > instead of "+", "==", etc, we use use "scm_sum", "scm_num_eq_p", etc.
>  > Also, instead of mallocing scm_t_ratio, we can use double cells, which
>  > should be more efficient.
>  >
>  > Any takers?
> Looks straightforward, but I may not get around to it right away.
> Should I wait for Dirk's type-related changes?

No, I don't think that is needed.  Dirk, what do you think?

> Also, I haven't looked closely at double cells, though I assume
> (from a glance at the scm_t_double stuff) that I can include my
> "reduce" flag as well as the numerator and denominator.

Yes, double cells are just like ordinary cells, they only have four
slots instead of two.  One (half) slot is taken for type information,
leaving three for the fraction stuff.  There are unused bits in the
first slot, and you could put your 'reduce' flag there as well.

>  > (Also I didn't really check whether your rationals behave like R5RS
>  > demands it.  Did you?  We should be sure to follow R5RS.)
> Yes, I think it follows R5RS.  See test-ratios.scm for some tests.
> I could make these fit into 'make check'.

That would be good.

>  > A ratio is exact, while a real is not.  Thus, I'd say that ratio? is
>  > not really necessary.  There should be no reason to add anything eyond
>  > R5RS for ratios.
> Ok -- "exact?" used to return #f for 3/4 -- hence the confusion.

Yes, but only because we didn't have exact rationals, right?

>  >> An alternative would be to make "rational?"  rational.
>  > That would violate R5RS, wouldn't it?
> I don't think so.  You are allowed to make rational? be the same
> as real?, but you can also distinguish them.  My druthers would
> be for rational? to return #t for a ratio, #f for a float.
> Why have it at all if it is just a synonym for "real?"?

Hmmm, I see.  My take would be that our floats are always inexact
rationals.  An example for a real that wouldn't also be a rational
would be an exact representation of pi, I'd say.  But I also agree
that this way lays madness and that you'd probably need a full blown
symbolic algebra system for this to actually be useful.

GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405

reply via email to

[Prev in Thread] Current Thread [Next in Thread]