Long Overflowspongebob.squarepants hat geschrieben:@numerix: Das Heron Verfahren (ist das die babylonische Wurzel?) konvergiert gut, tendiert aber bei Verwendung des Rational Datentyps (siehe mein letztes Posting), den ich ganz schick finde, selbst bei Verwendung von longs schnell zu Long Overflows, vornehmlich bei dem additiven Part (schon getestet). Aber wenn Du da andere Erfahrungen hast, würde es mich freuen, davon zu hören.

Das ist dann aber ein Problem dieses Rational-Moduls und kein eigentliches Python-Problem. Ab einer bestimmten Anzahl von Nachkommastellen (ich rede hier von einigen zigtausend) dauert die Berechnung nur einfach zu lange. Begrenzt ist die Genauigkeit nur durch den Hauptspeicher und die Zeit, die du warten willst, bis das Ergebnis kommt ...

Und was meinst du mit "additivem Teil"?
Die Idee des Heron-Verfahrens ist die: Man fasst den Radikand als Maßzahl der Fläche eines Quadrats auf und versucht, die Seitenlängen dieses Quadrats zu berechnen - das wäre dann das gewünschte Ergebnis.
Dazu setzt man ein Rechteck mit dem gleichen Flächeninhalt an und approximiert in jedem Schritt die Seiten ein Stück mehr in Richtung Quadrat, indem man in jedem Schritt den Mittelwert der beiden Seiten nimmt (ergibt eine der beiden neuen Seiten) und den Flächeninhalt durch diesen Mittelwert dividiert (ergibt die andere Seite).
Nachtrag: Ein Blick auf bzw. in das Rational-Modul klärt die Sache: Um die float-Repräsentation eines Bruchs a/b darzustellen, wird float(a)/float(b) berechnet. Daraus erklärt sich dann auch der Overflow, denn man kann eben nicht beliebig große ints/longs in floats umwandeln.