From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Marius Vollmer Newsgroups: gmane.lisp.guile.devel Subject: Re: ratio implementation Date: Mon, 15 Sep 2003 12:35:36 +0200 Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Message-ID: <87smmyibk7.fsf@zagadka.ping.de> References: <3F250809.9030108@ccrma.stanford.edu> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1063622216 18931 80.91.224.253 (15 Sep 2003 10:36:56 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 15 Sep 2003 10:36:56 +0000 (UTC) Cc: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Sep 15 12:36:54 2003 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 19yqj0-0000j1-00 for ; Mon, 15 Sep 2003 12:36:54 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.22) id 19yqip-0007uD-MC for guile-devel@m.gmane.org; Mon, 15 Sep 2003 06:36:43 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.22) id 19yqhq-0007u6-Go for guile-devel@gnu.org; Mon, 15 Sep 2003 06:35:42 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.22) id 19yqhn-0007tZ-GH for guile-devel@gnu.org; Mon, 15 Sep 2003 06:35:40 -0400 Original-Received: from [129.217.163.1] (helo=mail.dt.e-technik.uni-dortmund.de) by monty-python.gnu.org with esmtp (Exim 4.22) id 19yqhm-0007tS-CU for guile-devel@gnu.org; Mon, 15 Sep 2003 06:35:38 -0400 Original-Received: from zagadka.ping.de (unknown [192.168.0.73]) by mail.dt.e-technik.uni-dortmund.de (Postfix) with SMTP id 496668F8E for ; Mon, 15 Sep 2003 12:35:37 +0200 (CEST) Original-Received: (qmail 5551 invoked by uid 1000); 15 Sep 2003 10:35:37 -0000 Original-To: Bill Schottstaedt In-Reply-To: <3F250809.9030108@ccrma.stanford.edu> (Bill Schottstaedt's message of "Mon, 28 Jul 2003 04:24:57 -0700") User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.2 Precedence: list List-Id: Developers list for Guile, the GNU extensibility library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: main.gmane.org gmane.lisp.guile.devel:2793 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.devel:2793 Bill Schottstaedt writes: > There is an implementation of ratios for Guile (based on CVS version > of 27-Jul-03) at ccrma-ftp.stanford.edu:/pub/Lisp/gratio.tar.gz. > Rather than send a huge diff, I placed the new versions of the changed > files (all from the libguile directory) in the tarball along with > *.diff showing the changes. Good work, thanks! However, I don't think we should restrict us to longs as the numerator/denominator, we should use fixnums and bignums. Your patch is a very good basis for this and it should be quite straightforward to make it use SCM integers as the numerator/denominator. 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? (Also I didn't really check whether your rationals behave like R5RS demands it. Did you? We should be sure to follow R5RS.) > I added numerator, denominator, rationalize and ratio?, and at the C > level scm_make_ratio and scm_i_ratio2real (should it be > scm_ratio2dbl?). "ratio?" is needed because "rational?" returns #t > if passed a real -- there has to be some way to distiguish a ratio > from a real. 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. > An alternative would be to make "rational?" rational. That would violate R5RS, wouldn't it? > I don't know how the FSF/GPL copyright stuff works, but I did this > work on my own time, did not look at any other implementation, and > hereby donate the code to you. I'd be happy to "sign the papers". Thanks! I'll get back to you about the papers when necessary. > I decided to make minimal changes, but handling of exact/inexact > distinctions in Guile could use some work (I am willing do this, if > others approve). That would be great! > And currently (format #f "~F" 2/3) hangs, but so does (format #f > "~B" 1.5) (in Guile 1.6.4 you get an error, but in the CVS Guile it > hangs in mutex_lock). This should be fixed in CVS. -- GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405 _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel