iPhone/iPad双精度数学

Tim*_*Tim 9 floating-point arm objective-c ios

社区Wiki问题的接受答案:在编写Objective-C和Cocoa时,您使用的最佳实践是什么?说iPhone不能做双精度数学(或者更确切地说,它们可以,但只能在软件中模拟.)不幸的是它提供的2009年链接作为参考:iPhone上的Double vs float直接与该声明相矛盾.这些都是旧的,在3GS刚刚问世的时候写的.

那么最新的arm7架构的故事是什么?我是否需要担心第二个链接引用的'thumb'编译器标志?我可以安全地使用double变量吗?对于386SX和DX以及"数学协处理器"的黑暗日子,我有令人讨厌的闪回.告诉我这是2012年,我们继续前进.

小智 6

在所有的iPhone中,没有理由不支持双精度.它们都使用Cortex-A8架构和cp15协处理器(支持IEEE浮点和硬件双倍计算).

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

所以,是的,您可以安全地使用双打,它不应该是在iPhone上模拟的软件.虽然这是在硬件中完成的,但执行双重数学算术与单一(浮点)可能仍需要更多周期.除了使用double之外,我还会检查以确保精度适合您的应用程序.

另外,如果处理器支持NEON指令集,则可以比使用协处理器更快地计算双精度和浮点数.

http://pandorawiki.org/Floating_Point_Optimization#Compiler_Support

编辑:虽然VFP和Neon是ARM Core的可选扩展,但大多数cortex-A8都有它们,所有这些都在iPhone和iPad中使用.