sqrt(2) must go
Marco Leise
Marco.Leise at gmx.de
Thu Oct 20 13:38:30 PDT 2011
Am 20.10.2011, 22:37 Uhr, schrieb Marco Leise <Marco.Leise at gmx.de>:
> Am 20.10.2011, 08:02 Uhr, schrieb Russel Winder <russel at russel.org.uk>:
>
>> On Wed, 2011-10-19 at 23:36 -0400, dsimcha wrote:
>>> On 10/19/2011 11:27 PM, Marco Leise wrote:
>>> > And real can be used without protability problems on PowerPC or ARM?
>>>
>>> Yes, it's just that they may only give 64 bits of precision. Floating
>>> point is inexact anyhow, though. IMHO the fact that you may lose a
>>> little precision with very large longs is not a game changer.
>>
>> This is not convincing.
>>
>> One of the biggest problem is software development is that computers
>> have two systems of hardware arithmetic that are mutually incompatible
>> and have very different properties. Humans are taught that there are
>> abstract numbers that can be put into different sets: reals, integers,
>> naturals, etc.
>>
>> There are already far too many programmers out there who do not
>> understand that computer numbers have representation problems and
>> rounding errors.
>>
>> Another issue:
>>
>> sqrt ( 2 )
>> sqrt ( 2.0 )
>> sqrt ( 2.0000000000000000000000000000000000000000 )
>>
>> actually mean very different things. The number of zeros carries
>> information.
>>
>> Summary, losing precision is a game changer. This stuff matters. This
>> is a hard problem.
>
> Sure it matters, but performance also matters. If I needed the precision
> of a real, I would make sure that I give the compile the right hint. And
> adding zeros doesn't help. The representation is mantissa and exponent
> and your three examples would all come out the same in that
> representation. :)
> Is this really a real life problem, or can we just go with any solution
> for sqrt(2) that works (int->double, long->real) and leave the details
> to the ones who care and would write sqrt(2.0f) ?
Forget what I said. If a 64-bit mantissa floating point type doesn't exist
on all systems this doesn't work.
More information about the Digitalmars-d
mailing list