[#56982] [ruby-trunk - Bug #8854][Open] Update URL for bug reports — "stomar (Marcus Stollsteimer)" <redmine@...>
7 messages
2013/09/03
[#57038] [ruby-trunk - Feature #3620] Add Queue, SIzedQueue and ConditionVariable implementations in C in addition to ruby ones — "Glass_saga (Masaki Matsushita)" <glass.saga@...>
4 messages
2013/09/05
[#57040] Re: [ruby-trunk - Feature #3620] Add Queue, SIzedQueue and ConditionVariable implementations in C in addition to ruby ones
— SASADA Koichi <ko1@...>
2013/09/05
(2013/09/05 20:52), Glass_saga (Masaki Matsushita) wrote:
[#57058] [ruby-trunk - Bug #8875][Open] Select is not usable with SSLSocket — "headius (Charles Nutter)" <headius@...>
11 messages
2013/09/07
[#57092] [ruby-trunk - Bug #8883][Open] Rational canonicalization unexpectedly converts to Fixnum — "melquiades (Paul Cantrell)" <cantrell@...>
16 messages
2013/09/09
[#57111] [ruby-trunk - Feature #8887][Open] min(n), max(n), min_by(n), max_by(n) — "akr (Akira Tanaka)" <akr@...>
13 messages
2013/09/10
[#57117] [ruby-trunk - Feature #8890][Open] [PATCH] Eliminate less-than-zero checks for unsigned variables — "tonyo (Anton Ovchinnikov)" <revolver112@...>
5 messages
2013/09/10
[#57134] [CommonRuby - Feature #8896][Open] #tap with missing block — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>
5 messages
2013/09/11
[#57138] [ruby-trunk - Feature #8897][Open] client side TCP fast open — "Glass_saga (Masaki Matsushita)" <glass.saga@...>
5 messages
2013/09/11
[#57195] [ruby-trunk - Feature #8897][Assigned] client side TCP fast open
— "Glass_saga (Masaki Matsushita)" <glass.saga@...>
2013/09/14
[#57186] [ruby-trunk - Feature #8909][Open] Expand "f" frozen suffix to literal arrays and hashes — "headius (Charles Nutter)" <headius@...>
37 messages
2013/09/14
[#57224] [ruby-trunk - Feature #8909] Expand "f" frozen suffix to literal arrays and hashes
— "headius (Charles Nutter)" <headius@...>
2013/09/15
[#57262] [ruby-trunk - Feature #8921][Open] Allow select, reject, etc to accept a regex — "kyledecot (Kyle Decot)" <kyle.decot@...>
13 messages
2013/09/18
[#57264] [ruby-trunk - Feature #8921] Allow select, reject, etc to accept a regex
— "kyledecot (Kyle Decot)" <kyle.decot@...>
2013/09/18
[#57265] Re: [ruby-trunk - Feature #8921] Allow select, reject, etc to accept a regex
— Fuad Saud <fuadksd@...>
2013/09/18
Shouldn't select/reject use threequals?
[#57292] [ruby-trunk - Feature #8931][Open] Update URL in REPORTBUG_MSG — "zzak (Zachary Scott)" <e@...>
4 messages
2013/09/20
[#57315] [ruby-trunk - Feature #8938][Open] it keyword — "Sing9898 (Sing Lou)" <3b06e8d4@...>
5 messages
2013/09/23
[#57367] [ruby-trunk - Feature #8951][Open] Please add a hash-to-hash alternative of the map method to Hash — "behrangsa (Behrang Saeedzadeh)" <behrangsa@...>
8 messages
2013/09/25
[#57385] [ruby-trunk - Bug #8953][Open] `str =~ /pattern/` does not call =~ method if (1) str is a String, (2) /pattern/ is a Regexp literal — "gfx (Goro Fuji)" <gfuji@...>
12 messages
2013/09/26
[#57394] [ruby-trunk - Bug #8955][Open] LocalJumpError - no block given (yield) after implementation of class hierarchy method cache invalidation — "mfla (Morten Fla)" <mmflaa@...>
4 messages
2013/09/26
[#57462] [ruby-trunk - misc #8962][Open] [DOC] add step to enable Generational GC merits in README.EXT* — "tad (Tadashi Saito)" <redmine@...>
6 messages
2013/09/28
[ruby-core:56977] [ruby-trunk - Bug #8826][Assigned] BigDecimal#div and #quo different behavior and inconsistencies
From:
"zzak (Zachary Scott)" <e@...>
Date:
2013-09-03 04:23:17 UTC
List:
ruby-core #56977
Issue #8826 has been updated by zzak (Zachary Scott). Category set to ext Status changed from Open to Assigned Assignee set to mrkn (Kenta Murata) The documentation for BigDecimal#div is aliases under #quo, sorry for the confusion. I will fix this! @mrkn Can you also comment? ---------------------------------------- Bug #8826: BigDecimal#div and #quo different behavior and inconsistencies https://bugs.ruby-lang.org/issues/8826#change-41553 Author: karatedog (F旦ldes L叩szl坦) Status: Assigned Priority: Normal Assignee: mrkn (Kenta Murata) Category: ext Target version: ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN BigDecimal's #div and #quo method behave differently despite the #div documentation says: "See BigDecimal#quo" #div returns Fixnum if there is no precision argument for #div (this parameter is not documented): 2.0.0-p247 :018 > BigDecimal(5).div(5).class => Fixnum 2.0.0-p247 :031 > BigDecimal(5).div(5.1).class => Fixnum #div returns Fixnum even for a Float argument: 2.0.0-p247 :118 > BigDecimal(5).div(5.01) => 0 It returns Fixnum even if every argument is BigDecimal: 2.0.0-p247 :043 > BigDecimal(5).div(BigDecimal(5.1,5)).class => Fixnum When provided the precision argument, #div returns BigDecimal: 2.0.0-p247 :036 > BigDecimal(5).div(5,8).class => BigDecimal 2.0.0-p247 :131 > BigDecimal(5).div(BigDecimal(5.1,5),8).class => BigDecimal But first argument cannot be Float along with precision: 2.0.0-p247 :032 > BigDecimal(5).div(5.1,8).class ArgumentError: Float can't be coerced into BigDecimal without a precision from (irb):32:in `div' from (irb):32 from /home/karatedog/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>' Whereas #quo does not accept a precision argument and returns BigDecimal (hence no configurable precision here, although the documentation says that #quo applies round operation): 2.0.0-p247 :121 > BigDecimal(5).quo(5.01) => #<BigDecimal:8bacf68,'0.9980039920 1596806387 225549E0',27(45)> Circumventing the precision with class method does not work on #quo, it's like the limit is maxed: 2.0.0-p247 :135 > BigDecimal::limit(5) => 5 2.0.0-p247 :136 > BigDecimal(1).quo(3) => #<BigDecimal:899c778,'0.33333E0',9(36)> 2.0.0-p247 :080 > BigDecimal::limit(50) => 5 2.0.0-p247 :081 > BigDecimal(1).quo(3) => #<BigDecimal:8a92d94,'0.3333333333 33333333E0',18(36)> Precision does not seem to be automatic: 2.0.0-p247 :141 > BigDecimal::limit(500) => 100 2.0.0-p247 :142 > BigDecimal(1).quo(229) => #<BigDecimal:8be67f4,'0.4366812227 074236E-2',18(36)> 229 is a full period prime, its reciprocal yields 228 fractional digits before repetition. Whereas #div's precision can be larger than #div's: 2.0.0-p247 :109 > BigDecimal(1).div(3,19) => #<BigDecimal:8acb2d4,'0.3333333333 333333333E0',27(54)> And for 229: 2.0.0-p247 :144 > BigDecimal(1).div(229,250) => #<BigDecimal:8bc8b28,'0.4366812227 0742358078 6026200873 3624454148 4716157205 2401746724 8908296943 2314410480 3493449781 6593886462 8820960698 6899563318 7772925764 1921397379 9126637554 5851528384 2794759825 3275109170 3056768558 9519650655 0218340611 3537117903 9301310043 6681222707... Expected behavior: - One division method to rule them all :-) (#Division) - Never truncate a result (aka no Fixnum/Bignum as result). If someone uses BigDecimal, they probably wanted large precision instead of truncating the results by default. - #Division should accept Float, Rational, String, Complex, Integer, BigDecimal as divisor, even Float w/o precision. (This is intended as a full list of acceptable classes, #div and #quo can already take different classes as arguments). - #Division should accept a precision argument which would override ::Limit (as this happens in many instance method), this argument is optional. Without precision argument, use ::Limit as for now proper calculation only happens if: - method is #div - the divisor is converted to BigDecimal - a precision argument is given to #div -- http://bugs.ruby-lang.org/