Ich arbeite derzeit mit sehr kleinen Zahlen in meinem Python-Programm, z.
%Vor% Eine Lösung besteht darin, mit logarithmischen Werten zu arbeiten, die den Bereich meines Gleitkommawerts erhöhen würden. Das Problem ist, dass ich mit diesen Werten auch ein fft machen muss, und daher ist die Verwendung des logarithmischen Ansatzes nicht verwendbar (und das Decimal
-Modul auch nicht zu verwenden). Gibt es einen anderen Weg, um dieses Problem zu lösen?
Bearbeiten: Mein Problem mit dem decimal
Modul ist: Wie kann ich mit imaginären Werten umgehen? Ich probierte a = Decimal(1e-26)+Decimal(1e-26*1j)
und a = Decimal(1e-26)+Decimal(1e-26)*1j
, und beide Wege scheiterten (Fehler auf Anfrage).
Ziehen Sie das mpmath
-Paket in Betracht.
Größtenteils genau und kann komplexe Zahlen verarbeiten. Weitere Details finden Sie in der Dokumentation .
Während numpy
mehr Dezimaltypen (und auch komplexe Versionen) unterstützt, helfen sie nicht:
Der Grund ist hier erklärt : Intern, numpy
verwendet 80 Bits, was 63 Bits Mantisse bedeutet, die nur 63/3 = 21 Ziffern unterstützt.
Was Sie brauchen, ist ein echter 128bit Float-Typ wie der von Boost .
Probieren Sie das Modul Boost.Python
aus, mit dem Sie auf diesen Typ zugreifen können . Wenn das nicht funktioniert, müssen Sie Ihre eigene Wrapper-Klasse in C ++ schreiben als erklärt hier .
Tags und Links python