[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.11 複素数

GNU C は複素数型をサポートしている。整数の複素数型も浮動小数点数の 複素数型もどちらも使うことができる。これには、__complex__ という 予約語を使う。

例えば、‘__complex__ double x;’ と宣言すると、x は、 実数部も虚数部も double 型の変数になる。 ‘__complex__ short int y;’ と宣言すると y は、 実数部も虚数部も short int 型になる。後者の方は あまり役にたちそうもないが、複素数型は一通り全部揃っていることを 表している。

複素数型の定数は、サフィックス ‘i’ か ‘j’ をつけて書く (どちらか一つで、どちらでも同じである)。 例えば、2.5fi という定数は __complex__ float 型で、 3i__complex__ int 型になる。 このように書いた整数は、常に純虚数値になるが、これを実定数に足せば、 望みの複素数値を作ることができる。

複素数値を持つ式 exp から実数部を取り出すには、__real__ exp と書く。同様に、虚数部を取り出すには、__imag__ を使う。

演算子 ‘~’ を複素数型の値に使うと、複素共役を取る。

GNU CC は複素数型の自動変数は連続的には確保しない。 実数部はレジスタに取り、虚数部の方はスタック上に取る(あるいはその逆) ことさえ可能である。 GNU CC が現在サポートしているデバッグ情報形式で、このような非連続的な 確保を表現する手段を持っているものはない。このため、GNU CC は 非連続的に確保された複素変数を、あたかも複素数型でない二つの独立した 変数であるかのように記述する。 実際の変数名が foo であれば、疑似的な二つの変数名は、 foo$realfoo$imag になる。 このような疑似的な変数は、デバッガから値を調べたり設定したりすることが 可能である。

GDB は将来、このような変数の組を認識し、一個の複素数型変数として 扱えるようになるだろう。


This document was generated using texi2html 1.78.