# complex

複素数を計算する.

## 呼び出し手順

                c=complex(a)
                c=complex(a,b)

## 引数

a

  1行1列またはn行m列の倍精度実数行列, 実部. `a` が虚部を有する場合, エラーが発生します.

b

  1行1列またはn行m列の倍精度実数行列, 虚部 (デフォルト b=0). `b` が虚部を有する場合, エラーが発生します.

c

  n行m列の倍精度複素行列, 複素数.

## 説明

c=complex(a) は, `a`を実部, 0 を虚部とする複素数を作成します.

c=complex(a,b) は実部`a` , 虚部`b`の複素数を作成します.

この関数は, 特に複素数演算が`%inf` または`%nan` のような特定の浮動小数点数と競合する場合に, `a+%i*b`のような式の代替手段となります.

## 例

以下の例では,実部と虚部から複素数を生成します.

    complex(1,2)
    complex([1 2],[3 4])

`a` のみが指定された場合, 虚部は0に設定されます.

    complex([1 2 3])

`a` がスカラーで `b` が 行列の場合, 結果 `c` は, `b`と同じ大きさとなります. 同様に, `b` がスカラーで `a` が行列の場合, 結果 `c` は `a`と同じ大きさになります.

    c = complex([1 2 3], 4)
    c = complex(1, [2 3 4])

`a` と `b` が 異なる大きさの行列の場合,以下のセッションのような エラーが発生します.

    -->complex(ones(2,3),ones(4,5))
     !--error 10000
    complex: Incompatible input arguments #1 and #2: Same sizes expected.
    at line      33 of function complex called by :
    complex(ones(2,3),ones(4,5))

`complex` 関数の目的は,NaNや無限大のような IEEE 浮動小数点数を管理することです. 以下の例では,複素数演算を使用する場合, 実部と虚部が複合体となる複素数を作成するのは 容易ではないことを示します. これは,`%i` と `%inf`の積が `(0+%i) * (%inf+%i*0)`と評価されるためです. この結果は,中間式`0*%inf`,つまり, `%nan`となります.

    -->%inf+%i*%inf
     ans  =
        Nan + Inf

この問題の解決策は `complex`関数を使用することです.

    -->complex(%inf,%inf)
     ans  =
        Inf + Inf

## 参照

- imult