[Python-de] type punning

Helmut Büch Helmut at Buech-Gifhorn.de
Mo Feb 4 06:58:04 CET 2013


Am 03.02.2013 14:44, schrieb Christopher Arndt:
> 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
>
Danke Dir!

Helmut


Mehr Informationen über die Mailingliste python-de