2009-09-03 9 views
10

Cosa potrebbe causare questo strano comportamento di Python?Comportamento strano di Python sulla macchina con CPU ARM

Python 2.6.2 (r262:71600, May 31 2009, 03:55:41) 
[GCC 3.3.4] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> .1 
1251938906.2350719 
>>> .1 
0.23507189750671387 
>>> .1 
0.0 
>>> .1 
-1073741823.0 
>>> .1 
-1073741823.0 
>>> .1 
-1073741823.0 
>>> 

Dà la stessa uscita per 0.1, 0.5, 5.1, 0.0, ecc .. I numeri interi sono echeggiate verso di me in modo corretto, ma qualsiasi cosa con un punto decimale mi dà i numeri folli.

Questo è un binario python compilato per ARM, installato tramite Optware su una Synology DiskStation 101j.

Qualcuno ha mai visto qualcosa di simile?

+0

non l'ho visto prima, anzi è strano! – Mohamed

+0

molto strano! come sta succedendo? – Xolve

+0

Controlla la homepage di Optware. Ho trovato un articolo sui problemi di Perl con lib di fp. – zxcat

risposta

8

Forse è compilato per la versione errata VFP.

O il tuo ARM non ha VFP e ha bisogno di usare l'emulazione software, ma il binario python prova a usare l'hardware.


EDIT

La build DS-101j su FW IXP420 BB cpu, che è Intel XScale (armv5b) (link). Non ha supporto hardware in virgola mobile. E "b" in armv5b sta per Big Endian. Alcune persone hanno problemi di costruzione, perché gcc genera codice little endian per impostazione predefinita. Forse questo è il problema del tuo software FP lib. Controlla this search per maggiori informazioni.

0

Come ha detto zxcat, questo suona come si sta eseguendo su un braccio con nessun punto di hardware-floating e una biblioteca soft-float sballato. Una rapida ricerca non ha mostrato quale variante ARM è nel DS101j; qualcuno sa?

+0

Non lo so, ma di certo non mi aspetto di vedere un FP hardware su un NAS box. – bobince

+3

Se si desidera solo per commentare una soluzione, quindi aggiungere un commento, piuttosto che una nuova soluzione. –