关于C#:iPhone / iPad双精度数学

iPhone/iPad double precision math

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

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


在所有的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中使用。