iPhone / iPad双精度数学

时间:2012-01-13 16:39:28

标签: objective-c ios floating-point arm

社区维基问题的接受答案:What are best practices that you use when writing Objective-C and Cocoa?表示iPhone不能进行双精度数学运算(或者更确切地说,它们可以,但只能在软件中模拟。)不幸的是,它提供的2009年链接作为参考:Double vs float on the iPhone直接与该陈述相矛盾。这些都是旧的,在3GS刚刚问世的时候写的。

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

1 个答案:

答案 0 :(得分: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中使用。