< 目次

C/C++ で複素数タイプを使用

C/C++ は Fortran の COMPLEX(4) および COMPLEX(8) タイプを直接実装していません。ただし、同等の構造を記述することは可能です。COMPLEX(4) タイプは、2 つの 4 バイト浮動小数点からなります。最初は実数成分であり、2 番目は虚数成分です。COMPLEX(8) タイプは、2 つの 8 バイト浮動小数点を含むことを除けば、COMPLEX(4) と同じです。

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) では、複素数タイプ MKL_Complex8 および MKL_Complex16 を提供しています。これらの構造は、Fortran の複素数タイプ COMPLEX(4) および COMPLEX(8) と等価です。MKL_Complex8 および MKL_Complex16 タイプは、mkl_types.h ヘッダーファイルで定義されています。これらのタイプを使用して、複素数データを定義できます。mkl_types.h ヘッダーファイルをインクルードする前に、独自のタイプを再定義することもできます。タイプを定義するときに必要なのは、Fortran 複素数レイアウトとの互換性を保つことです。つまり、複素数タイプは実部と虚部の値を含む実数のペアでなければなりません。

たとえば、次のコマンドで依存関係収集を実行します。

#define MKL_Complex8 std::complex<float>

および

#define MKL_Complex16 std::complex<double>

詳細は、複素レベル 1 BLAS 関数の C++ からの呼び出し例を参照してください。

コマンドラインでこれらのタイプを定義することもできます。

-DMKL_Complex8="std::complex<float>"
-DMKL_Complex16="std::complex<double>"
        

関連情報