2012-01-13 26 views
9

La respuesta aceptada a esta pregunta Wiki de la comunidad: What are best practices that you use when writing Objective-C and Cocoa? dice que los iPhones no pueden hacer doble precisión matemática (o más bien, pueden, pero solo se emulan en software). Desafortunadamente el enlace de 2009 proporciona una referencia: Double vs float on the iPhone contradice directamente esa afirmación. Ambos son viejos, se escriben cuando acaba de salir el 3GS.iPhone/iPad doble precisión matemática

¿Cuál es la historia con la última arquitectura de arm7? ¿Debo preocuparme por el indicador del compilador 'thumb' al que hace referencia el segundo enlace? ¿Puedo usar de manera segura las variables double? Estoy teniendo flashbacks desagradables a días oscuros de 386SX y DX y 'coprocesadores matemáticos'. Dime que es 2012 y hemos avanzado.

Respuesta

6

En todos los iPhones, no hay ninguna razón por la que la doble precisión no sea compatible. Todos usan la arquitectura Cortex-A8 con el coprocesador cp15 (que admite flotación IEEE y cálculos dobles en hardware).

http://www.arm.com/products/processors/technologies/vector-floating-point.php

Así que sí, se puede usar de forma segura dobles y no debería ser emulado en software de los iPhones. Aunque esto se hace en hardware, aún puede tomar más ciclos realizar doble aritmático frente a sencillo (flotante). Además de usar el doble, yo verificaría para asegurarme de que la precisión sea apropiada para su aplicación.

Como nota al margen, si el procesador admite el conjunto de instrucciones NEON, los dobles y los flotantes se pueden calcular más rápido que con el coprocesador.

http://pandorawiki.org/Floating_Point_Optimization#Compiler_Support

EDIT: Aunque VFP y neón son extensiones opcionales al núcleo ARM, la mayor parte de la corteza A8-ellos tienen y todas ellas las utilizadas en el iPhone y el iPad también lo hacen.

+0

Muy bien, gracias. Eso es lo que pensé que debía ser. El dominio de la aplicación es DSP de audio; de ahí mi deseo de dobles. Me sorprendió encontrar esas dos respuestas autorizadas de alto puntaje en SO con tanta información autocontradictoria. Dejando abierto en caso de que alguien pueda comentar sobre el indicador 'Thumb'. –

+0

No necesita preocuparse por el indicador del compilador de pulgar, a menos que esté escribiendo ensamblado de bajo nivel, todo estará optimizado en función de su nivel de optimización y de si desea optimizarlo en tiempo o espacio. – nmjohn

+0

Gracias. Pensé que esto probaría ser un no problema. –

Cuestiones relacionadas