[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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$real
と foo$imag
になる。
このような疑似的な変数は、デバッガから値を調べたり設定したりすることが
可能である。
GDB は将来、このような変数の組を認識し、一個の複素数型変数として 扱えるようになるだろう。
This document was generated
using texi2html 1.78.