Subject: bug#14905: closed (Re: bug#14905: rationalize not returning the simplest rational)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 21 Jul 2013 10:57:02 +0000

Your bug report

#14905: rationalize not returning the simplest rational

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
14905: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14905
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#14905: rationalize not returning the simplest rational
From: Mark H Weaver <[email-masked]>
To: Göran Weinholt <[email-masked]>
Cc: [email-masked]
Date: Sun, 21 Jul 2013 06:56:03 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Göran Weinholt <[email-masked]> writes:

> the procedure (rationalize x1 x2) from (rnrs) takes a number x1 and
> returns the simplest rational that doesn't differ from x1 by more than
> x2. The implementation in guile has this behavior:
>
> scheme@(guile-user)> (rationalize #e-0.67 1/4)
> $1 = -2/3
>
> The problem here is that -1/2 is simpler than -2/3 (since 1<2 and 2<3)
> and it also doesn't differ from #e-0.67 by more than 1/4 (even though
> the difference is larger than for -2/3, it is still less than 1/4). So
> the result from the expression above should be -1/2.

Fixed in 620c13e8fc02060e0af8fa38398ee4de745d41e9.

    Thanks!
      Mark

Subject: rationalize not returning the simplest rational
From: Göran Weinholt <[email-masked]>
To: [email-masked]
Date: Fri, 19 Jul 2013 13:18:41 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello schemers,

the procedure (rationalize x1 x2) from (rnrs) takes a number x1 and
returns the simplest rational that doesn't differ from x1 by more than
x2. The implementation in guile has this behavior:

scheme@(guile-user)> (rationalize #e-0.67 1/4)
$1 = -2/3

The problem here is that -1/2 is simpler than -2/3 (since 1<2 and 2<3)
and it also doesn't differ from #e-0.67 by more than 1/4 (even though
the difference is larger than for -2/3, it is still less than 1/4). So
the result from the expression above should be -1/2.

Tested with Guile 2.0.9.40-824b-dirty.

Regards,

-- 
Göran Weinholt <[email-masked]>
"On your own and though you feel alone you are alive.
Don't you know it's just another day." -- You Are Alive, Fragma