インテル® MKL 11.3 ユーザーズガイド

C/C++ での複素数型の使用

インテル® Visual Fortran コンパイラーの「アプリケーションのビルド」で説明しているように、C/C++ では Fortran 型 COMPLEX(4) および COMPLEX(8) を直接実装していません。 しかし、等価の構造を記述することはできます。型 COMPLEX(4) は、2 つの 4 バイト浮動小数点からなります。 最初の浮動小数点は実数コンポーネントで、2 つ目の浮動小数点は虚数コンポーネントです。型 COMPLEX(8) は、2 つの 8 バイト浮動小数点を含むことを除けば、COMPLEX(4) と同じです。

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

例えば、C++ コードで以下の定義を使用できます。

#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>"
        

関連情報