Doppio vs float su iPhone

Ho appena sentito che l’iphone non può fare il doppio in modo nativo, rendendolo molto più lento del normale float.

È vero? Prova?

Sono molto interessato al problema perché il mio programma richiede calcoli di alta precisione e dovrò scendere a compromessi sulla velocità.

L’iPhone può fare aritmetica sia singola che doppia precisione nell’hardware. Sul 1176 (iPhone e iPhone3G originali), funzionano all’incirca alla stessa velocità, anche se è ansible inserire più dati di precisione singola nelle cache. Su Cortex-A8 (iPhone3GS, iPhone4 e iPad), l’aritmetica a precisione singola viene eseguita sull’unità NEON anziché su VFP ed è sostanzialmente più veloce.

Assicurati di distriggersre la modalità pollice nelle impostazioni di compilazione per armv6 se stai facendo un calcolo a virgola mobile intensivo.

Questa presentazione mostra il motivo per cui non esiste un buon punto in virgola mobile e perché esiste (l’unità in virgola mobile vettoriale). Apparentemente, è importante controllare la “modalità pollice” che influenza se il supporto a virgola mobile è attivo o no. Questo non è sempre un miglioramento. Mostra come trovare le giuste istruzioni nel codice assembly.

Dipende anche da quale versione del telefono si desidera eseguire il codice. La più recente sembra “più capace” nel fare matematica in virgola mobile.

EDIT: ecco una lettura interessante sulle ottimizzazioni in virgola mobile su ARM con VFP e NEON SSE.

Il manuale ARM1176JZF-S afferma che supporta numeri in virgola mobile a doppia precisione. Dovresti essere in buona forma. Ecco un link alla documentazione PDF. Gli iPhone successivi sono chip Cortex e certamente non dovrebbero essere meno capaci.