vcvt_s32_f32 組み込みの丸めモードを制御する関数はありますか? 負の無限大に向かって丸めるのではなく、偶数に向かって丸めたいです。
ありがとう。
vcvt_s32_f32 組み込みの丸めモードを制御する関数はありますか? 負の無限大に向かって丸めるのではなく、偶数に向かって丸めたいです。
ありがとう。
いいえ、丸めモードを変更することはできません。
NEON は精度よりもパフォーマンスを重視して設計されているため、VFP に比べて制限があります。VFP とは異なり、完全な IEEE 754 実装ではなく、特定の設定にハードワイヤードされています - ARM ARM からの引用:
- 非正規化された数値はゼロにフラッシュされます
- デフォルトの NaN のみがサポートされています
- 四捨五入*丸めモードが選択されている
- すべての浮動小数点例外に対して選択されたトラップされない例外処理
浮動小数点から整数への変換の特定のケースはVCVT
、この場合 (VFP と NEON の両方) の命令の動作が、選択された丸めモードを無視し、常にゼロに向かって丸められるという点で若干異なります。選択した丸めモードを使用するVCVTR
命令は、VFP でのみ使用できます。
ARMv8 アーキテクチャでは、特定の丸めモードを使用するための丸めおよび変換命令が多数導入されましたが、この特定のケースではあまり役に立たないと思います。ARMv7 以前で別の丸めモードで変換を行いたい場合は、VFP (利用可能な場合) を使用するか、ビットハッキングを手動で実装する必要があります。
* ARM ARM は IEEE 754-1985 用語を使用するため、より正確には、これは最も近いものに丸められ、偶数に結び付けられます