2012-01-13 24 views
9

What are best practices that you use when writing Objective-C and Cocoa?によると、iPhoneは倍精度の計算を行うことはできません(またはそうではなく、ソフトウェアでエミュレートできます)。残念ながら2009年のリンクは参照:Double vs float on the iPhoneはそのステートメントと直接矛盾します。これらの両方は古いです、3GSがちょうど出てきたときに書かれています。iPhone/iPad倍精度数学

最新のarm7アーキテクチャの話はなんですか? 2番目のリンクが参照する '親指'コンパイラフラグについて心配する必要はありますか?変数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

EDIT:しかしVFPとネオンがARMコアに、オプションの拡張である、皮質-A8のほとんどがそれらを持っているし、iPhoneやiPadで使用されるそれらの全てのものが同様に行います。

+0

申し訳ありませんが、ありがとうございます。それは私がそうしなければならないと思ったものです。アプリケーションドメインはオーディオDSPです。それゆえダブルスに対する私の願望。私はそのような自己矛盾した情報を持ったSOに関する2つの権威ある高い得点の答えを見つけることに驚きました。誰でも「Thumb」フラグにコメントできる場合に備えて、開いたままにしておきます。 –

+0

Thumbコンパイラフラグについて心配する必要はありません。低レベルのアセンブリを作成している場合を除き、最適化レベルに基づいて最適化されます。 – nmjohn

+0

ありがとうございます。私はこれがすべて問題ではないと思った。 –