[Python-de] type punning

Christopher Arndt chris at chrisarndt.de
So Feb 3 14:44:25 CET 2013


Hallo Helmut,

ich antworte mal an die Liste, dann haben alle was davon.

On 03.02.2013 11:01, Helmut Büch wrote:
> Ja, das kommt der Sache schon nahe. Dies ist die Aufgabe:
> http://www5.in.tum.de/lehre/vorlesungen/konkr_math/SS_12/prog/NumPro_SS12_Programmieraufgabe_1.pdf,
> 
> die ich in Python3 lösen möchte.
> 
> In FreePascal habe ich eine union (record with variants). Damit erfolgt
> die Uminterpretation der single-Bitfolge (IEEE 754) implizit.

Anbei die Umsetzung der fast Inverse Square Root Funktion nach dem Code
von Wikipedia in Python. Die zentrale Stelle mit der
Typ-Neuinterpretation ist in den folgenden Zeilen:

    i  = struct.unpack('i', struct.pack('f', number))[0]

und

    y  = struct.unpack('f', struct.pack('i', i))[0]


Wie man an dem kleinen Benchmark sehen kann, den ich unten eingefügt
habe, ist die Funktion in Python aber nur minimal schneller als "1 /
math.sqrt(x)". Wenn es auf Geschwindigkeit ankommt, würde ich die
Funktion in C belassen und via Cython einbinden.


Chris
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : fisr.py
Dateityp    : text/x-python
Dateigröße  : 1463 bytes
Beschreibung: nicht verfügbar
URL         : <http://mail.python.org/pipermail/python-de/attachments/20130203/2e02232d/attachment.py>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 1059 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://mail.python.org/pipermail/python-de/attachments/20130203/2e02232d/attachment.pgp>


Mehr Informationen über die Mailingliste python-de