Colin Law wrote in post #970667:
> On 25 December 2010 20:15, Marnen Laibow-Koser <li...@ruby-forum.com>
> wrote:
>>>> correct design.
>>
>> Not at all! You can't store 397 significant figures in a Float. You
>> can in a BigDecimal. Apparently you are wilfully ignoring this
>> advantage, since it has been brought up several times already.
>
> I am not at all saying there is no advantage to BigDecimal, merely
> exploring the issues.  I entirely agree that for + - * there can be
> significant advantages.  I am pointing out here that as soon as you
> get into more complex calculations involving division, or irrational
> numbers such as pi, and trig functions, square roots and so on that
> BigDecimal is not a panacea and will not guarantee that there are no
> errors in the calculations.

OK, that I agree with.  I thought you were going further.

>
>>>  Also errors will potentially increase every time a divide
>>> operation is performed. It seems that the default is actually 8 digit
>>> which is only single precision float accuracy.
>>>
>>
>> So don't use the default! Sheesh.
>
> Right, again I was pointing out that one cannot blindly assume that
> BigDecimal is a panacea, it is necessary to understand ones problem
> and use the features appropriately.  I am not suggesting you would not
> do that, others may not realise the issues however.  It does seem
> strange to me that the default should be such low precision.

And to me.

> It means
> that doing complex arithmetic with BigDecimal using the default
> precision one may get much greater errors than with Float.

Right.

>
>>> I see that http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic
>>> discusses exactly this problem and the use of Rationals to get around
>>> it. It seems to suggest that some languages do that.
>>
>> And that would be easy to do in Ruby. I'm glad we have a choice,
>> though.
>
> You misunderstand me, I was talking about the possibility of
> BigDecimal automatically using Rationals internally when division is
> involved (if the division does not result in an exact result).  So if
> one did BD(1) / BD(3) then the result would be exactly 1/3 and would
> be a BigDecimal.  Internally it would be a Rational but the user would
> not need to know that.

Is that really a good idea?  This is where I think you're really arguing 
for a further abstraction as I already proposed.


> The Wikipedia article appeared to suggest that
> some languages automatically do that.  Again I am not saying Ruby
> _should_ do that, merely exploring the issues again.

I'd want a symbolic math system like Mathematica to do that.  I'm not 
sure if a general-purpose programming language should.

>
> I am not trying to have an argument here, I am learning a lot myself
> by researching the issues and value such discussions greatly.

Me too!  This is fascinating.

>
> Did you have a chance to see whether for you the result of BD 1 / BD 3
> where each was specified as 16 bit appeared to result in an 8 bit
> answer, and if so, why?

Not yet.  Even though I'm Jewish, Christmas has me really busy!

>
> Colin

Best,
-- 
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Sent from my iPhone

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to