In welchen Fällen ist Python komplexe Potenzierung ein OverflowError Stack-Überlauf werfen

Ein Blick auf die Quelle für komplexe Potenzierung zeigt, dass Python für Überlauf erst am Ende der Berechnung überprüft. Außerdem gibt es einen Sonderfall für kleine ganze Exponenten, die Potenzierung verwendet durch Quadrierung, die komplexe Multiplikation beinhaltet.







Dies ist die Formel für komplexe Multiplikation. Beachten Sie Folgendes:

Wenn A und B sehr groß sind, wird diese Gleitkommazahlen infinity minus Gleitkommazahlen Unendlichkeit, die nan ist. Die nan Ergebnisse verbreiten, und nach einigen Operationen, ist das Ergebnis (nan + nanj). Py_ADJUST_ERANGE2 nur setzt errno wenn es eine Unendlichkeit sieht, so fehlt es den Überlauf und geht auf den Weg gebracht.

Ok, ich bin mir ziemlich sicher, dass ich das herausgefunden.

Zuerst bemerkte ich etwas, das etwas lächerlich schien:

Noch interessanter. Mal sehen, was von 1e309 und 1e308 Python meint:







Kurz gesagt, stoppen Zahlen überfüllt schließlich, und starten Sie inf zurück. Berechnungen mit inf sind einfach, aber Berechnungen mit Zahlen nahe daran sind nicht! Deshalb 1e309 ** 2 Werke während 1e308 ** 2 nicht. Wenn mit komplexen Zahlen gepaart, diese (aus irgendeinem Grund) gibt (nan + nanj). Ich fand nur dies aus, indem mit der Konsole zu spielen - ich würde gerne eine gründlichere Erklärung zu sehen!

Als Randbemerkung, fand ich dieses lustige:

Python ganzzahlige Werte können für beliebige Genauigkeit eine lange Autopromote:

Gleitkommawerten Überlauf aufgrund der Begrenzung des IEEE-Gleitkomma:

Die Komponente eines komplexen Python ist eine Klasse von float, unterliegen den gleichen Überlauf:

Nehmen Sie die üblichen max Wert mit doppelter Genauigkeit:

Haben die meisten Schritte, die diesen Wert im Bereich des Floating-Point-Bereich erhöhen und Sie erhalten inf:

Wenn außerhalb der FP-Fenster, die mantisa und Exponenten nicht ändern:

Überlauf ist zu sehen:

Aber wie in den Dokumenten angegeben. es ist inkonsequent angewendet:

Wegen der fehlenden Standardisierung von in C-Punkt Ausnahme floating Handhabung, auch die meisten Gleitkomma-Operationen werden nicht überprüft.

Die hier zu sehen ist:







In Verbindung stehende Artikel