浮動小数点数のペアを使用した倍精度演算のエミュレーション
数値機能が制限された組み込みシステムでは、倍精度データ型のエミュレーションが必要になります。特定のアルゴリズム。この記事では、精度を高めるために 2 つの「float」値のタプルを使用して「double」データ型をエミュレートする手法について説明します。
エミュレートされた 2 つの double 間の比較演算は、単純な辞書式順序に従います。ただし、加算演算にはキャリーアウトを検出する必要があるため、課題が生じます。根本的な疑問は、この操作にはどの塩基を使用すべきかということです。 FLT_MAX は潜在的な候補かもしれませんが、さらなる検討が必要です。
加算のエミュレーション
加算をエミュレートするには、個々のコンポーネントの加算だけでなく、持ち出しの可能性も。演算に使用されるベースは、すべての可能なキャリーアウトをキャプチャするのに十分な分解能を提供する必要があります。
1 つのアプローチは、float データ型の 2 つの境界の合計、FLT_MAX と -FLT_MAX をベースとして使用することです。これにより、低位成分の加算によるキャリーアウトが高位成分の加算で確実に考慮されます。
キャリーアウトの検出
キャリーアウトの検出outs では、個々のコンポーネントの追加中にオーバーフローまたはアンダーフローのステータスを監視する必要があります。低位成分の加算でオーバーフローが発生した場合は、キャリーアウトが表示され、高位成分に加算する必要があります。同様に、低位コンポーネントの減算でアンダーフローが発生するとキャリーダウンがトリガーされ、同様に処理できます。
さらなる研究のためのリソース
追加の洞察ダブルフロート技術の分野の研究から得ることができます。 2 つの注目すべき論文は次のとおりです:
これらのリソースは、float-float 演算子の実装とそのパフォーマンスの最適化に関する貴重な情報を提供します。
以上が浮動小数点数のペアを使用して倍精度加算をエミュレートするための最適なベースは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。