# Complex

## 概要 - Abstract

このライブラリ system.Complex は、complex型の補助機能を提供します。

また、complex型やvarcomplex型がサポートされていない処理系において、float[2]配列やvarfloat[2]配列で複素数演算を行うための機能も提供されます。

## 目次 - Index

const int RE
  float[2]を複素数として扱う場合の実部インデックスを表します。
const int IM
  float[2]を複素数として扱う場合の虚部インデックスを表します。
complex toComplex(float arg[ ])
  float[2] を complex に変換します。
complex[ ] toComplexArray(... complex args[ ])
  complex型の複数の値を、配列にまとめて返します。
varcomplex[ ] toVarcomplexArray(... varcomplex args[ ])
  varcomplex型の複数の値を、配列にまとめて返します。
float[ ] toFloatArray(complex arg)
  complex を float[2] に変換します。
varcomplex toVarcomplex(varfloat arg[ ])
  varfloat[2] を varcomplex に変換します。
varfloat[ ] toVarfloatArray(varcomplex arg)
  complex を float[2] に変換します。
float creal(complex arg)
  複素数の実部を返します。この関数は、System.re( complex ) 関数をそのままラッピングしています。
varfloat creal(varcomplex arg)
  複素数の実部を返します。この関数は、System.re( varcomplex ) 関数をそのままラッピングしています。
float creal(float arg[ ])
  複素数の実部を返します。
varfloat creal(varfloat arg[ ])
  複素数の実部を返します。
float cimag(complex arg)
  複素数の虚部を返します。この関数は、System.im( complex ) 関数をそのままラッピングしています。
varfloat cimag(varcomplex arg)
  複素数の虚部を返します。この関数は、System.im( varcomplex ) 関数をそのままラッピングしています。
float cimag(float arg[ ])
  虚部を返します。
varfloat cimag(varfloat arg[ ])
  虚部を返します。
float[ ] cadd(float a[ ], float b[ ])
  float[2]/varfloat[2]を複素数と見なし、加算値を返します。
varfloat[ ] cadd(varfloat a[ ], varfloat b[ ])
  float[2]/varfloat[2]を複素数と見なし、加算値を返します。
float[ ] csub(float a[ ], float b[ ])
  float[2]/varfloat[2]を複素数と見なし減算値を返します。
varfloat[ ] csub(varfloat a[ ], varfloat b[ ])
  float[2]/varfloat[2]を複素数と見なし減算値を返します。
float[ ] cmul(float a[ ], float b[ ])
  float[2]/varfloat[2]を複素数と見なし、乗算値を返します。
varfloat[ ] cmul(varfloat a[ ], varfloat b[ ])
  float[2]/varfloat[2]を複素数と見なし、乗算値を返します。
float[ ] cdiv(float a[ ], float b[ ])
  float[2]/varfloat[2]を複素数と見なし、除算値を返します。
varfloat[ ] cdiv(varfloat a[ ], varfloat b[ ])
  float[2]/varfloat[2]を複素数と見なし、除算値を返します。

## 構造体 - Structs

- なし - None -

## 変数 - Variables

文法的定義 - Signature | const int RE
変数名 - Name | RE
役割 - Role | float[2]を複素数として扱う場合の実部インデックスを表します。

文法的定義 - Signature | const int IM
変数名 - Name | IM
役割 - Role | float[2]を複素数として扱う場合の虚部インデックスを表します。

## 関数 - Functions

文法的定義 - Signature | complex toComplex(float arg[ ])
関数名 - Name | toComplex
役割 - Role | float[2] を complex に変換します。
引数 - Arguments | 変換する値 :
戻り値 - Return | (complex型) 変換した値

文法的定義 - Signature | complex[ ] toComplexArray(... complex args[ ])
関数名 - Name | toComplexArray
役割 - Role | complex型の複数の値を、配列にまとめて返します。
引数 - Arguments | (...complex[]型) args : 配列にまとめたい値（可変長引数）
戻り値 - Return | (complex[]型) 引数の値をまとめた配列

文法的定義 - Signature | varcomplex[ ] toVarcomplexArray(... varcomplex args[ ])
関数名 - Name | toVarcomplexArray
役割 - Role | varcomplex型の複数の値を、配列にまとめて返します。
引数 - Arguments | (...varcomplex[]型) args : 配列にまとめたい値（可変長引数）
戻り値 - Return | (varcomplex[]型) 引数の値をまとめた配列

文法的定義 - Signature | float[ ] toFloatArray(complex arg)
関数名 - Name | toFloatArray
役割 - Role | complex を float[2] に変換します。
引数 - Arguments | 変換する値 :
戻り値 - Return | (float[]型) 変換した値

文法的定義 - Signature | varcomplex toVarcomplex(varfloat arg[ ])
関数名 - Name | toVarcomplex
役割 - Role | varfloat[2] を varcomplex に変換します。
引数 - Arguments | 変換する値 :
戻り値 - Return | (varcomplex型) 変換した値

文法的定義 - Signature | varfloat[ ] toVarfloatArray(varcomplex arg)
関数名 - Name | toVarfloatArray
役割 - Role | complex を float[2] に変換します。
引数 - Arguments | 変換する値 :
戻り値 - Return | (varfloat[]型) 変換した値

文法的定義 - Signature | float creal(complex arg)
関数名 - Name | creal
役割 - Role | 複素数の実部を返します。この関数は、System.re( complex ) 関数をそのままラッピングしています。
引数 - Arguments | 複素数の値 : 実部の値 :
戻り値 - Return | (float型)

文法的定義 - Signature | varfloat creal(varcomplex arg)
関数名 - Name | creal
役割 - Role | 複素数の実部を返します。この関数は、System.re( varcomplex ) 関数をそのままラッピングしています。
引数 - Arguments | 複素数の値 : 実部の値 :
戻り値 - Return | (varfloat型)

文法的定義 - Signature | float creal(float arg[ ])
関数名 - Name | creal
役割 - Role | 複素数の実部を返します。
引数 - Arguments | 複素数の値 : 実部の値 :
戻り値 - Return | (float型)

文法的定義 - Signature | varfloat creal(varfloat arg[ ])
関数名 - Name | creal
役割 - Role | 複素数の実部を返します。
引数 - Arguments | 複素数の値 : 実部の値 :
戻り値 - Return | (varfloat型)

文法的定義 - Signature | float cimag(complex arg)
関数名 - Name | cimag
役割 - Role | 複素数の虚部を返します。この関数は、System.im( complex ) 関数をそのままラッピングしています。
引数 - Arguments | 複素数の値 : 虚部の値 :
戻り値 - Return | (float型)

文法的定義 - Signature | varfloat cimag(varcomplex arg)
関数名 - Name | cimag
役割 - Role | 複素数の虚部を返します。この関数は、System.im( varcomplex ) 関数をそのままラッピングしています。
引数 - Arguments | 複素数の値 : 虚部の値 :
戻り値 - Return | (varfloat型)

文法的定義 - Signature | float cimag(float arg[ ])
関数名 - Name | cimag
役割 - Role | 虚部を返します。
引数 - Arguments | 複素数の値 : 虚部の値 :
戻り値 - Return | (float型)

文法的定義 - Signature | varfloat cimag(varfloat arg[ ])
関数名 - Name | cimag
役割 - Role | 虚部を返します。
引数 - Arguments | 複素数の値 : 虚部の値 :
戻り値 - Return | (varfloat型)

文法的定義 - Signature | float[ ] cadd(float a[ ], float b[ ])
関数名 - Name | cadd
役割 - Role | float[2]/varfloat[2]を複素数と見なし、加算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (float[]型) 演算結果

文法的定義 - Signature | varfloat[ ] cadd(varfloat a[ ], varfloat b[ ])
関数名 - Name | cadd
役割 - Role | float[2]/varfloat[2]を複素数と見なし、加算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (varfloat[]型) 演算結果

文法的定義 - Signature | float[ ] csub(float a[ ], float b[ ])
関数名 - Name | csub
役割 - Role | float[2]/varfloat[2]を複素数と見なし減算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (float[]型) 演算結果

文法的定義 - Signature | varfloat[ ] csub(varfloat a[ ], varfloat b[ ])
関数名 - Name | csub
役割 - Role | float[2]/varfloat[2]を複素数と見なし減算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (varfloat[]型) 演算結果

文法的定義 - Signature | float[ ] cmul(float a[ ], float b[ ])
関数名 - Name | cmul
役割 - Role | float[2]/varfloat[2]を複素数と見なし、乗算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (float[]型) 演算結果

文法的定義 - Signature | varfloat[ ] cmul(varfloat a[ ], varfloat b[ ])
関数名 - Name | cmul
役割 - Role | float[2]/varfloat[2]を複素数と見なし、乗算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (varfloat[]型) 演算結果

文法的定義 - Signature | float[ ] cdiv(float a[ ], float b[ ])
関数名 - Name | cdiv
役割 - Role | float[2]/varfloat[2]を複素数と見なし、除算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (float[]型) 演算結果

文法的定義 - Signature | varfloat[ ] cdiv(varfloat a[ ], varfloat b[ ])
関数名 - Name | cdiv
役割 - Role | float[2]/varfloat[2]を複素数と見なし、除算値を返します。
引数 - Arguments | operandA : 演算する値(左側) operandA : 演算する値(右側)
戻り値 - Return | (varfloat[]型) 演算結果