[python-nl] grote getallen met grote precisie

A.T.Hofkamp a.t.hofkamp at tue.nl
Wed May 6 08:57:41 CEST 2009


Robert-Reinder Nederhoed wrote:
>>>> c = 1 + 10**22
>>>> a = 10**22
>>>> b = (c**2 - a**2) ** 0.5
>>>> b

Hallo,


Ik val midden in de discussie, maar waarom herschrijf je je probleem niet 
eerst naar

c = g + dc
a = g + da

da >= 0, dc >= 0, da == 0 of dc == 0

Splits a en c op naar gezamenlijk deel g en een zo klein mogelijk verschil.

Dan met middelbare school algebra:

c = g + dc
a = g + da
b = (c^2 - a^2) ^ 1/2
   = ((g+dc)^2 - (g+da)^2) ^ 1/2
   = (g^2 + 2*g*dc + dc^2 - g^2 - 2*g*da - da^2) ^ 1/2
   = (2*g*(dc-da) + dc^2 - da^2) ^ 1/2

als da = 0, dan wordt dit zelfs

b = (2*g*dc - dc*dc) ^ 1/2

wat er imho heel wat vriendelijk uitziet.

In ieder geval ben je de g^2 factor kwijt, wat een aantal hoofdbrekens zou 
moeten schelen.


Albert



More information about the Python-nl mailing list