インテル® oneAPI DPC++/C++ コンパイラーには、高度に最適化された正確な数学関数を含む数値計算ソフトウェア・ライブラリーが含まれています。これらの関数は、科学やグラフィック・アプリケーションに広く使用されます。同様に、浮動小数点演算を多用するプログラムにも使用されます。C99 _Complex データ型のサポートを含めるには、[Q]std=c99 コンパイラー・オプションを使用してください。
インテルの数学ライブラリーの多くのルーチンは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより最適化されます。
mathimf.h ヘッダーファイルには、インテルの数学ライブラリー関数のプロトタイプが含まれています。
インテルの math.h ヘッダーファイルは、gcc の libm と互換性がありますが、gcc の数学ライブラリーにリンクしません。ソースは、gccまたは icx でビルドできます。icx でビルドするとインテルの数学ライブラリーがリンクされます。インテルの数学ライブラリーのヘッダーファイル mathimf.h には、インテルの数学ライブラリー固有の追加の関数が含まれています。ソースのビルドには、インテル® oneAPI DPC++/C++ コンパイラーとライブラリーを使用する必要があります。
expl や logl のようなインテルの数学ライブラリーの long double 型の関数は、Microsoft* ライブラリーと ABI 互換ではありません。インテルのコンパイラーとライブラリーは、80 ビットの long double 型をサポートしています (Qlong-double オプションの説明を参照)。互換性を保持するため、インテルの数学ライブラリーと一緒に math.h や mathimf.h ヘッダーファイルを使用します。
アプリケーションにリンクされる数学ライブラリーは、指定されたコンパイルまたは参照オプションに依存します。
ライブラリー |
説明 |
---|---|
libimf.a |
デフォルトのスタティック数学ライブラリー |
libimf.so |
デフォルトの共用数学ライブラリー |
アプリケーションにリンクされる数学ライブラリーは、指定されたコンパイルまたは参照オプションに依存します。
ライブラリー |
オプション |
説明 |
---|---|---|
libm.lib |
|
デフォルトのスタティック数学ライブラリー |
libmmt.lib |
/MT |
マルチスレッドのスタティック数学ライブラリー |
libmmd.lib |
/MD |
ダイナミック・リンク数学ライブラリー |
libmmdd.lib |
/MDd |
デバッグ用ダイナミック・リンク数学ライブラリー |
libmmds.lib |
|
/MD オプションでコンパイルされたスタティック・バージョン |
現在、oneAPI は OpenCL 数学関数の ULP 精度 (英語) の決定に OpenCL 仕様を使用しています。単精度関数と倍精度関数の表を含む精度に関する詳細は、Khronos* OpenCL* 仕様の「ULP 相対誤差」 (英語) セクションを参照してください。
数学関数は、デバイスによって精度のレベルが異なります。OpenCL* 仕様では、最大 ULP 誤差の制限が設定されています (該当する場合) が、個々のデバイスはより高精度の実装を提供している場合がります。OpenCL* 実装が CPU 向けに最適化されている場合、同じコードを GPU デバイスで使用しても動作しない場合があります。