[#12073] Re: Ruby is much slower on linux when compiled with --enable-pthread? — "M. Edward (Ed) Borasky" <znmeb@...>

-----BEGIN PGP SIGNED MESSAGE-----

9 messages 2007/09/04

[#12085] New array methods cycle, choice, shuffle (plus bug in cycle) — David Flanagan <david@...>

Four new methods have been added to Array the Ruby 1.9 trunk. I've got

81 messages 2007/09/06
[#18036] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Charles Oliver Nutter <charles.nutter@...> 2008/07/31

Restarting this thread because I missed it the first time around and

[#18037] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Yukihiro Matsumoto <matz@...> 2008/07/31

Hi,

[#18038] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "Gregory Brown" <gregory.t.brown@...> 2008/08/01

On Thu, Jul 31, 2008 at 7:50 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#18046] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Michael Neumann <mneumann@...> 2008/08/01

Gregory Brown wrote:

[#18048] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Charles Oliver Nutter <charles.nutter@...> 2008/08/01

Michael Neumann wrote:

[#18051] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "David A. Black" <dblack@...> 2008/08/01

Hi --

[#18053] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "Wilson Bilkovich" <wilsonb@...> 2008/08/01

On 8/1/08, David A. Black <dblack@rubypal.com> wrote:

[#18074] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — David Flanagan <david@...> 2008/08/01

Wilson Bilkovich wrote:

[#18080] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Yukihiro Matsumoto <matz@...> 2008/08/02

Hi,

[#18097] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — "Pit Capitain" <pit.capitain@...> 2008/08/03

2008/8/2 Yukihiro Matsumoto <matz@ruby-lang.org>:

[#18040] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Jim Weirich <jim.weirich@...> 2008/08/01

On Jul 31, 2008, at 7:33 PM, Charles Oliver Nutter wrote:

[#18056] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Thomas Enebo <Thomas.Enebo@...> 2008/08/01

Jim Weirich wrote:

[#18059] Re: New array methods cycle, choice, shuffle (plus bug in cycle) — Jim Weirich <jim.weirich@...> 2008/08/01

On Aug 1, 2008, at 1:53 PM, Thomas Enebo wrote:

[#12096] Next 1.8.6 on Sept. 22 — Urabe Shyouhei <shyouhei@...>

Hi all.

28 messages 2007/09/09

[#12201] how about actors implemented in ruby-core itself — hemant <gethemant@...>

Hi,

12 messages 2007/09/20

[#12248] arbitrary Unicode characters in identifiers? — David Flanagan <david@...>

12 messages 2007/09/26

[#12284] gc.c -- possible logic error? — Hugh Sasse <hgs@...>

I've been looking at Tom Copeland's memory allocation problem:

36 messages 2007/09/28
[#12329] Re: gc.c -- possible logic error? — Tanaka Akira <akr@...> 2007/10/01

In article <Pine.GSO.4.64.0709281302390.26570@brains.eng.cse.dmu.ac.uk>,

[#12305] Will 1.8.6 remain compiled with VC6? — "Luis Lavena" <luislavena@...>

Hello Core developers.

29 messages 2007/09/30
[#12306] Re: Will 1.8.6 remain compiled with VC6? — "Austin Ziegler" <halostatue@...> 2007/09/30

On 9/30/07, Luis Lavena <luislavena@gmail.com> wrote:

Re: Bug in BigDecimal#round ?

From: "Jano Svitok" <jan.svitok@...>
Date: 2007-09-27 11:25:35 UTC
List: ruby-core #12264
On 9/27/07, Jano Svitok <jan.svitok@gmail.com> wrote:
> On 9/27/07, Ryan Platte <ryan.platte@gmail.com> wrote:
> > A coworker discovered some disturbing behavior in BigDecimal#round.
> > The output I get from the program below is:
> >
> > ===== begin output
> >
> > These values appended to '0.0000' cause BigDecimal#round to return
> > nonzero:
> > [5, 6, 7, 8, 9, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
> > 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
> > 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
> > 97, 98, 99]
> >
> > These numbers of zeroes between the decimal point and a 7 cause
> > BigDecimal#round to return nonzero:
> > [4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72,
> > 76, 80, 84, 88, 92, 96, 100]
> >
> > ===== end output
> >
> > ===== begin code
> >
> > require 'bigdecimal'
> >
> > vary_number_after_four_zeroes = (1..100).map { |i|
> >   bd = BigDecimal.new("0.0000#{i}"); [i, bd.round.to_s]
> > }
> > seed_values_triggering_misbehavior_with_four_zeroes =
> >   vary_number_after_four_zeroes.reject {|i, bds| bds == '0.0'}.map {|
> > i, bds| i}
> >
> > vary_number_of_zeroes = (1..100).map { |i|
> >   bd = BigDecimal.new("0.#{'0' * i}7"); [i, bd.round.to_s]
> > }
> > number_of_zeroes_triggering_misbehavior =
> >   vary_number_of_zeroes.reject {|i, bds| bds == '0.0'}.map {|i, bds|
> > i}
> >
> > puts "These values appended to '0.0000' cause BigDecimal#round to
> > return nonzero:"
> > p seed_values_triggering_misbehavior_with_four_zeroes
> > puts
> > puts "These numbers of zeroes between the decimal point and a 7 cause
> > BigDecimal#round to return nonzero:"
> > p number_of_zeroes_triggering_misbehavior
> >
> > ===== end code
> >
> > I get identical reports on Linux and Windows versions of Ruby:
> >
> > ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux]
> >
> > ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
> >
> > We would be grateful for a pointer to a patch that fixes this issue if
> > one is available.
>
> It seems to me as a bug. The code in trunk is the same, so I guess
> it's not fixed yet.
> Please file a bug at
> http://rubyforge.org/tracker/?func=add&group_id=426&atid=1698
> (rubyforge.org, project ruby)
>
> The problem is most probably in ext/bigdecimal/bigdecimal.c, VpMidRound().
>
> As you have probably noticed, it happens when 1. the number of leading
> zeros is divisible by 4 (BASE_FIG, the number of decimal digits stored
> in one U_LONG), and the next digit is >= 5 (I guess due to selected
> rounding mode)
>
> That means, the problematic numbers have format 0.XE-Y where X in
> [5..9] and Y%4 == 0
>
> It's even visible in
> BigDecimal.new("0.5").round(-4).to_i # => 10000
> BigDecimal.new("0.000000005").round(4) #=> 0.1E-3 == 0.0001
> BigDecimal.new("0.000000005").round(-4) #=> 0.1E5 == 10000
>

reported as #14271

In This Thread

Prev Next