【问题标题】:iPhone/iPad double precision mathiPhone/iPad 双精度数学
【发布时间】:2012-02-09 20:36:53
【问题描述】:

这个社区 Wiki 问题的公认答案:What are best practices that you use when writing Objective-C and Cocoa? 说 iPhone 不能进行双精度数学运算(或者更确切地说,它们可以,但只能在软件中模拟。)不幸的是,它提供了 2009 年链接作为参考:@ 987654322@ 直接与该声明相矛盾。这两个都是旧的,是在 3GS 刚出来的时候写的。

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

【问题讨论】:

    标签: objective-c ios floating-point arm


    【解决方案1】:

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

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

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

    附带说明,如果处理器支持 NEON 指令集,则计算双精度和浮点数可能比使用协处理器更快。

    http://pandorawiki.org/Floating_Point_Optimization#Compiler_Support

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

    【讨论】:

    • 好的,谢谢。这就是我认为必须的。应用领域为音频DSP;因此我渴望双打。我很惊讶地发现这两个关于 SO 的权威、高分答案具有如此自相矛盾的信息。保持打开状态,以防任何人对“拇指”标志发表评论。
    • 您无需担心 Thumb 编译器标志,除非您正在编写低级程序集,否则这将根据您的优化级别以及您是否希望它针对时间或空间进行优化而进行优化.
    • 谢谢。我认为这一切都会被证明不是问题。
    • NEON 仅是单精度(在您提供的第二个链接中提到)
    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多