# マニュアルページ cplx.intro.3

## 名前

         cplx.intro - complex - C++ 複素数数学ライブラリについて

## 形式

         #include <complex.h>
         class complex {
         public:
              complex(double real, double imag= 0.0);
              complex();
              ... // 以下省略
         };

         #include <iostream.h>
         ostream& operator<< (ostream&, const complex&);
         istream& operator>> (istream&, complex&);

## 機能説明

         この複素数クラスおよびライブラリは、USL が提供する複素数数学
         ライブラリに基づいています。したがって、USL のライブラリを使
         用することを前提にしてコーディングされたプログラムは、このラ
         イブラリを使用しても同じように機能するはずです。

         ヘッダファイル <complex.h> で定義されているク ラ ス  complex
         は、数学複素数の代表的な直角座標系を使用します。このクラスに
         は次の関数が含まれます。
         o 極座標と直角座標との間の変換を行う関数。 cartpol(3C++)  を
         参照。
         o 多重定義版の算術演算関数。これらのいくつかは、実数演算と複
         素 数 演 算 と を 組み合わせて行うために最適化されています。
         cplxops(3C++) を参照。
         o 通常の三角関数の多重定義版。 cplxtrig(3C++) を参照。
         o 通常の指数関数および対数関数の多重定義 版。  cplxexp(3C++)
         を参照。
         o ユーザーにより変更が可能なエラー処理関 数。  cplxerr(3C++)
         を参照。
         o 入出力ストリームを介して複素数の読み書 き を 行 う 関 数。
         ios.intro(3C++) を参照。

      コンストラクタ
         complex()
              (0.0, 0.0) に初期化された複素数を作成します。

         complex(x, y)
              ( x, y ) に初期化された複素数を作成します。ここ で、  x
              と  y は数値型です。引数 y は省略できますが、その場合 y
              の値は 0 と見なされます。

      入出力
         このライブラリには、複素数用のデフォルトの入力ルーチンと出力
         ルーチンが用意されています。これらのルーチンの一方または両方
         は、同じ認別記号を使用してコーディングすることで別の関数に置
         き 換 えることができます。デフォルトのルーチンは次のとおりで
         す。

         input_stream >> x
              次の形式で表された複素数を想定します。
                   ( real , imag )
              ここで、 real (実部) および imag (虚部) は、標準の  C++
              形 式の整数または浮動小数点数です。括弧およびコンマの前
              後には任意の数の空白類を置くことができます。最初に検 出
              された非空白類文字が ( でないとき、その文字はストリーム
              に戻され、それ以上の抽出は行われません。それ以 外 の 場
              合、 値の形式が正しくないと判断されれば、ストリームから
              の抽出はその時点で停止し、ストリームは ``failed'' 状 態
              に置かれます (入出力ストリームのドキュメントを参照)。ど
              ちらの場合でも、また他にエラー状態がなければ、複素数 変
              数  x の値は (0,0) となります。入力の書式が適切な場合、
              x の値は指定されたとおりの複素数値になります。

         output_stream << x
              複素数 x の値を、上記の入力関数が想定する書式で出力スト
              リームに書き込みます。

## 関連項目

         cartpol(3C++)、 cplxerr(3C++)、 cplxexp(3C++)、
         cplxops(3C++)、 cplxtrig(3C++)、 ios.intro(3C++)、
         intro(2)、 ieee_values(3)、 perror(3)

## 診断

         一般に、結果の値が大きすぎたり、数学的に未定義であったりする
         と、 (0, 0)、(0, +- HUGE_VAL )、(+- HUGE_VAL , 0)、(+- HUGE_VAL
         , +- HUGE_VAL ) のいずれかの値が返されま す。 定 数  HUGE_VAL
         は、  <complex.h> によって取り込まれるヘッダ <math.h> で定義
         されています。この実装では、無限大に対応する値になり ま す。
         ieee_values(3M) を参照してください。そのようなエラー状態が発
         生すると、外部変数 errno が EDOM または ERANGE に設定され ま
         す。 perror(3C)および intro(2) を参照してください。