![・](/pl-c.png)
今回の C 言語から複素数演算のための便利な表記法が導入されました。それに利用されるのが _Complex 型と _Imaginary 型です。まずは _Complex 型から説明しましょう。
_Complex 型は規格を満たしている C 言語処理系であるならいつでも使える型で(ただし freestanding 用の実装は除く)、実際は次の型の総称です。
float _Complex / double _Complex / long double _Complex
さて、複素数は実数部(real part)と虚数部(imaginary part)の二つの部分からなっています。したがって、これを計算機で扱うためには、実数部と虚数部にそれぞれ浮動小数点型を割り当てて、実数部と虚数部をまとめて管理するのが最も簡潔な方法です。各型の _Complex の前についている浮動小数点型がその各部の実際の型を表しています。例えば、double _Complex 型なら、実数部は double 型、虚数部も double 型です。
実数部と虚数部の管理の方法も決まっています。二つの要素を持った実数型の align された配列として管理します。始めの要素が実数部、残りが虚数部を示しています。例えば、double _Complex 型なら、typedef double double_Complex[2]; で、double_Complex dc; の時、dc[0] が実数部、dc[1] が虚数部ということです(実際は dc[1] の様にはアクセスできません)。
次にキャストについて説明します。浮動小数点数を _Complex 型にキャストする場合には、_Complex 型の実数部がその浮動小数点数に、虚数部が 0 になります。また _Complex 型の変数を浮動小数点型にキャストする場合には、_Complex 型の変数の虚数部が捨てられて、実数部が取り出されます。
次回は、_Imaginary 型について説明します。
_Complex 型は規格を満たしている C 言語処理系であるならいつでも使える型で(ただし freestanding 用の実装は除く)、実際は次の型の総称です。
float _Complex / double _Complex / long double _Complex
さて、複素数は実数部(real part)と虚数部(imaginary part)の二つの部分からなっています。したがって、これを計算機で扱うためには、実数部と虚数部にそれぞれ浮動小数点型を割り当てて、実数部と虚数部をまとめて管理するのが最も簡潔な方法です。各型の _Complex の前についている浮動小数点型がその各部の実際の型を表しています。例えば、double _Complex 型なら、実数部は double 型、虚数部も double 型です。
実数部と虚数部の管理の方法も決まっています。二つの要素を持った実数型の align された配列として管理します。始めの要素が実数部、残りが虚数部を示しています。例えば、double _Complex 型なら、typedef double double_Complex[2]; で、double_Complex dc; の時、dc[0] が実数部、dc[1] が虚数部ということです(実際は dc[1] の様にはアクセスできません)。
次にキャストについて説明します。浮動小数点数を _Complex 型にキャストする場合には、_Complex 型の実数部がその浮動小数点数に、虚数部が 0 になります。また _Complex 型の変数を浮動小数点型にキャストする場合には、_Complex 型の変数の虚数部が捨てられて、実数部が取り出されます。
次回は、_Imaginary 型について説明します。
by seclan