2

Mountain Lion の libmath の実装 (/usr/lib/system/libsystem_m.dylib にあります) には、すべての標準 libmath 関数に加えて、それぞれに$fenv_access_offバリエーションがあります。たとえば、 、 、 がありacosますacos$fenv_access_off。(10.8 より前のバージョンであるかどうかを確認するために、他のバージョンの Mac OS をインストールしていません。)

とは$fenv_access_offどういう意味ですか?

これらのいずれにも直接電話をかけないことは理解していますが、それでも興味があります。

4

2 に答える 2

4

fenv_access_off に関する議論を含む、Apple のエンジニアの何人かの間のメーリング リスト スレッドがあります。Apple のエンジニアである Stephen Canon は次のように説明しています。

C99 は、標準で要求されているように、fenv.h を含めて #pragma STDC FENV_ACCESS on を実行したかどうかに基づいて、IEEE フラグを調べているか、丸めモードを変更しているかどうかを認識します。したがって、原則として、実際には 2 つの並列数学ライブラリを使用できます。1 つは時間をかけてフラグを設定し、丸めモードの変更に対する防御を行うもので、もう 1 つはそれを行わないより高速なものです。実際には、これは、数学ライブラリ内のすべてのものに対して $fenv_access_off で装飾されたシンボルの別のセットを持つことによって実装できます

から: man page_fenv

ヘッダーは、浮動小数点環境へのアクセスを提供する型、マクロ、および関数を宣言します。浮動小数点環境は、実装でサポートされている浮動小数点ステータス フラグと制御モードで構成されます。

...

FENV_ACCESS プラグマは、プログラムが浮動小数点環境にアクセスしてステータス フラグをテストしたり、制御モードを変更したりする可能性があることをコンパイラに通知する手段を提供します。

于 2012-10-30T17:36:15.170 に答える
1

これらのシンボルバリアント$....は、下位互換性のためにあります。シンボルバリアントのリリースノートを参照してください。この特定のものは$fenv_access_off、新しいC標準との互換性のために導入されたようです。OpenGroupのWebページでfenv.hを参照してください。

次に、man fenvOSXマシンで実行します。マニュアルページの日付は2011年5月9日です。OSXLionで導入されたと思います。(しかし、私はマウンテンライオンのマシンしか持っていないので、確認できません。)

于 2012-10-29T19:46:20.530 に答える