[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