[#38647] [Ruby 1.9 - Bug #5130][Open] Thread.pass sticks on OpenBSD — Yui NARUSE <naruse@...>
[#38653] [Ruby 1.9 - Bug #5135][Open] Ruby 1.9.3-preview1 tests fails in Fedora Rawhide — Vit Ondruch <v.ondruch@...>
2011/8/4 Vit Ondruch <v.ondruch@tiscali.cz>:
[#38666] [Ruby 1.9 - Bug #5138][Open] Add nonblocking IO that does not use exceptions for EOF and EWOULDBLOCK — Yehuda Katz <wycats@...>
On Tue, Aug 02, 2011 at 07:35:15AM +0900, Yehuda Katz wrote:
(08/02/2011 07:46 AM), Aaron Patterson wrote:
Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
(08/02/2011 08:14 AM), Eric Wong wrote:
Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
(08/02/2011 08:35 AM), Eric Wong wrote:
Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
2011/8/2 Eric Wong <normalperson@yhbt.net>:
2011/8/2 Tanaka Akira <akr@fsij.org>:
Yehuda Katz <wycats@gmail.com> wrote:
Yehuda Katz
On Tue, Aug 02, 2011 at 07:35:15AM +0900, Yehuda Katz wrote:
2011/8/2 Yehuda Katz <wycats@gmail.com>:
Yehuda Katz <wycats@gmail.com> wrote:
"tenderlovemaking (Aaron Patterson)" <aaron@tenderlovemaking.com> wrote:
On Wed, Jul 10, 2013 at 09:03:19AM +0900, Eric Wong wrote:
Aaron Patterson <tenderlove@ruby-lang.org> wrote:
On Wed, Jul 10, 2013 at 10:52:26AM +0900, Eric Wong wrote:
[#38695] [Ruby 1.9 - Bug #5144][Open] Remove GPL file from repository — Vit Ondruch <v.ondruch@...>
[#38706] [Ruby 1.9 - Bug #5147][Open] mkmf should not require static library when ruby is built with --enable-shared — Vit Ondruch <v.ondruch@...>
[#38831] Help out with the next version of ruby-lang.org — Magnus Holm <judofyr@...>
https://github.com/rubylang/ruby-lang.org
Great news! Congratulations for the initiative!
Just wondering why is it not under https://github.com/ruby account,
[#38866] [Ruby 1.9 - Bug #5173][Open] [PATCH] json/generator: prevent GC of temporary strings — Eric Wong <normalperson@...>
[#38881] Init_prelude gone in 1.9.3 — Christoph Kappel <unexist@...>
Dear list,
[#38894] Why Ruby has versioned paths? — V咜 Ondruch <v.ondruch@...>
Hello, could somebody please elaborate about reasons why Ruby uses versioned
2011/8/10 V鱈t Ondruch <v.ondruch@gmail.com>
2011/8/10 Michael Klishin <michael.s.klishin@gmail.com>
2011/8/10 V鱈t Ondruch <v.ondruch@gmail.com>
[#38911] [Ruby 1.9 - Feature #5183][Open] [PATCH] openssl: add OP_NO_COMPRESSION constant — Eric Wong <normalperson@...>
[#38972] [Ruby 1.9 - Bug #5193][Open] ruby_thread_data_type linker errors fixed with RUBY_EXTERN — Charlie Savage <cfis@...>
[#38980] :symbol.is_a?(String) — Magnus Holm <judofyr@...>
http://viewsourcecode.org/why/redhanded/inspect/SymbolIs_aString.html
What would ObjectSpace.each_object(String) { |o| p o } produce?
On Tue, Aug 16, 2011 at 17:01, Haase, Konstantin
This would only be feasible if frozen strings would truly be frozen. Currently, there are a lot of C extensions modifying frozen strings (which is why Rubinius and JRuby have to treat frozen strings as mutable). Unfortunately, the current C API gives access to the raw character array, making it impossible to prevent frozen strings from being modified. What if a cached, frozen string is modified? Also, I see it as a feature of symbols that they are not encoding aware.
[#39000] [Ruby 1.9 - Bug #5199][Open] ext/tk: RB_GC_GUARD seems to be needed in several places — Eric Wong <normalperson@...>
[#39022] [Ruby 1.9 - Bug #5204][Open] `defined?(@@foo) && @foo` may fail — Magnus Holm <judofyr@...>
[#39025] [Ruby 1.9 - Feature #5206][Open] ruby -K should warn — Eric Hodel <drbrain@...7.net>
[#39062] Releasing r33028 as Ruby 1.9.3 RC1 — Yugui <yugui@...>
Hi,
Hi,
Hi
On Sat, Sep 3, 2011 at 12:14 AM, KOSAKI Motohiro
> We are still suffering from a sample/test.rb failure for system(),
[#39079] [Ruby 1.9 - Feature #5221][Open] LoadEerror#path — Koichi Sasada <redmine@...>
[#39093] [Ruby 1.9 - Bug #5227][Open] Float#round fails on corner cases — Marc-Andre Lafortune <ruby-core@...>
Hi
(2011/08/27 4:40), Marc-Andre Lafortune wrote:
Hi,
2011/8/29 Marc-Andre Lafortune <ruby-core-mailing-list@marc-andre.ca>:
Hi,
[#39118] [Ruby 1.9 - Bug #921] autoload is not thread-safe — Hiroshi Nakamura <nakahiro@...>
[#39120] [Ruby 1.9 - Bug #5233][Open] OpenSSL::SSL::SSLSocket has problems with encodings other than "ascii" — Niklas Baumstark <niklas.baumstark@...>
[#39134] [Ruby 1.9 - Bug #5237][Open] IO.copy_stream calls #read on an object infinitely many times — Brian Ford <brixen@...>
On Sat, Aug 27, 2011 at 3:54 AM, Eric Wong <normalperson@yhbt.net> wrote:
[#39142] [Ruby 1.9 - Bug #5239][Open] bootstraptest/runner.rb: assert_normal_exit logic broken on Debian/GNU kFreeBSD — Lucas Nussbaum <lucas@...>
> I've just checked, and FreeBSD 8.2 is also affected by this issue.
On 29/08/11 at 12:43 +0900, KOSAKI Motohiro wrote:
[#39146] [Ruby 1.9 - Bug #5240][Open] Hang when using threads + forks on Debian GNU/kFreeBSD — Lucas Nussbaum <lucas@...>
[#39162] [Ruby 1.9 - Bug #5244][Open] Continuation causes Bus Error on Debian sparc — Lucas Nussbaum <lucas@...>
[#39184] [Ruby 1.9 - Bug #1792][Closed] Fixnum#& 等が、Rational などを受けつける — Kenta Murata <muraken@...>
Is it intentional?
[#39195] [Ruby 1.9 - Bug #5251][Open] Thread Change Breaks Windows Builds — Charlie Savage <cfis@...>
[#39216] [Ruby 1.9 - Bug #5253][Open] PTY with wait incorrectly sets exit status for exit command — Simon Chiang <simon.a.chiang@...>
[ruby-core:39166] Re: [Ruby 1.9 - Bug #5227][Assigned] Float#round fails on corner cases
Hi,
On Sat, Aug 27, 2011 at 4:20 AM, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
> In fact, your patch breaks test/ruby/test_float.rb.
Oh, I didn't realize that `make test-all` does not recompile modified
.c files. Is there a good reason for that?
In any case, I write specs in RubySpec, but ruby's tests must still be
run too, of course!
Indeed, I made a mistake in the inequalities for the 3 or 4
approximation (should test for binexp > 0, not < 0). Here's the
differential patch:
diff --git a/numeric.c b/numeric.c
index 4c48355..ac38bb1 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1517,10 +1517,10 @@ flo_round(int argc, VALUE *argv, VALUE num)
So if ndigits + binexp/(3 or 4) >= 17, the result is number
If ndigits + binexp/(4 or 3) < 0 the result is 0
*/
- if ((long)ndigits * (4 - (binexp < 0)) + binexp < 0) {
+ if ((long)ndigits * (4 - (binexp > 0)) + binexp < 0) {
number = 0;
}
- else if ((long)(ndigits - 17) * (3 + (binexp < 0)) + binexp < 0) {
+ else if ((long)(ndigits - 17) * (3 + (binexp > 0)) + binexp < 0) {
f = pow(10, abs(ndigits));
if (ndigits < 0) {
double absnum = fabs(number);
The complete patch becomes:
diff --git a/numeric.c b/numeric.c
index ab890c6..2277296 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1491,18 +1491,37 @@ flo_round(int argc, VALUE *argv, VALUE num)
VALUE nd;
double number, f;
int ndigits = 0;
+ int binexp;
long val;
if (argc > 0 && rb_scan_args(argc, argv, "01", &nd) == 1) {
ndigits = NUM2INT(nd);
}
number = RFLOAT_VALUE(num);
- f = pow(10, abs(ndigits));
-
- if (isinf(f)) {
- if (ndigits < 0) number = 0;
- }
- else {
+ frexp (number , &binexp);
+
+/* Let `exp` be such that `number` is written as:"0.#{digits}e#{exp}",
+ i.e. such that 10 ** (exp - 1) <= |number| < 10 ** exp
+ Recall that up to 17 digits can be needed to represent a double,
+ so if ndigits + exp >= 17, the intermediate value (number * 10 ** ndigits)
+ will be an integer and thus the result is the original number.
+ If ndigits + exp <= 0, the result is 0 or "1e#{exp}", so
+ if ndigits + exp < 0, the result is 0.
+ We have:
+ 2 ** (binexp-1) <= |number| < 2 ** binexp
+ 10 ** ((binexp-1)/log_2(10)) <= |number| < 10 ** (binexp/log_2(10))
+ If binexp >= 0, and since log_2(10) = 3.322259:
+ 10 ** (binexp/4 - 1) < |number| < 10 ** (binexp/3)
+ binexp/4 <= exp <= binexp/3
+ If binexp <= 0, swap the /4 and the /3
+ So if ndigits + binexp/(4 or 3) >= 17, the result is number
+ If ndigits + binexp/(3 or 4) < 0 the result is 0
+*/
+ if ((long)ndigits * (4 - (binexp > 0)) + binexp < 0) {
+ number = 0;
+ }
+ else if ((long)(ndigits - 17) * (3 + (binexp > 0)) + binexp < 0) {
+ f = pow(10, abs(ndigits));
if (ndigits < 0) {
double absnum = fabs(number);
if (absnum < f) return INT2FIX(0);