<C言語>
C99規格から、_Complex 型の他、_Imaginary 型が導入される。
マクロは、complex, _Complex_I, I の他、imaginary, _Imaginary_I が定義されている。
_Complex_Iは、0.0+1.0i の値を持つ const float _Complex 型の複素数定数とのこと。
#include <complex.h>
float _Complex (変数名);
double _Complex (変数名);
long double _Complex (変数名);
Visual C++ は、<complex.h>の関数はサポートするが、_Complex 型はサポートしない、という状態らしい。
Visual Studio 2015 における Visual C++ の新機能で、Cランタイムライブラリ - C99 への準拠とあるが、「Visual C++ コンパイラでまだサポートされていないコンパイラ機能に依存するライブラリ機能は除きます」ともあるので・・・。
Wisdows SDK 10.0.17763.0 以降は<complex.h>が<ccomplex>にリダイレクトされるようになっているらしく、解除するにはインクルード前に _CRT_USE_C_COMPLEX_H を定義する必要があるとのこと。
<C++>
struct complex は、STL(Standard Template Library)に含まれている。
#include <complex>
std::complex<T>
以下の関数と演算子が定義されている。
T abs(const complex<T>& x);
T arg(const complex<T>& x);
complex<T> polar(const T& rho, const T& theta = 0);//theta = 0 はデフォルト引数
complex<T> conj(const complex<T>& x);
T real(const complex<T>& x);
T imag(const complex<T>& x);
T norm(const complex<T>& x);//ノルム = 絶対値の2乗
その他の関数は、<cmath>の関数に対するオーバーロードであり、C言語の<complex.h>の関数とは別である。
<C#>
struct Complex は、.NET Framework 4で追加されたとのこと。
using System.Numerics;
の記述とともに、System.Numerics.dllへの参照を追加する必要がある。
Windows 7 標準搭載は、.NET Framework 3.5(Windows 8 以降では既定で無効化)
Windows 8 標準搭載は、.NET Framework 4.5
Windows 10 標準搭載は、.NET Framework 4.6
Visual Studio 2010 で、.NET Framework 4 に対応
<参考>
seclan のほえほえルーム:プログラミング言語 C の新機能
山本昌志:C言語の学習 数学関数 3 複素数と複素関数
D-poppoのページ:雑記帳 Visual C++ での C99 complex
cpprefjp C++日本語リファレンス:complex
総武ソフトウェア推進所:複素数型
Wikipedia:.NET Framework
C99規格から、_Complex 型の他、_Imaginary 型が導入される。
マクロは、complex, _Complex_I, I の他、imaginary, _Imaginary_I が定義されている。
_Complex_Iは、0.0+1.0i の値を持つ const float _Complex 型の複素数定数とのこと。
#include <complex.h>
float _Complex (変数名);
double _Complex (変数名);
long double _Complex (変数名);
Visual C++ は、<complex.h>の関数はサポートするが、_Complex 型はサポートしない、という状態らしい。
Visual Studio 2015 における Visual C++ の新機能で、Cランタイムライブラリ - C99 への準拠とあるが、「Visual C++ コンパイラでまだサポートされていないコンパイラ機能に依存するライブラリ機能は除きます」ともあるので・・・。
Wisdows SDK 10.0.17763.0 以降は<complex.h>が<ccomplex>にリダイレクトされるようになっているらしく、解除するにはインクルード前に _CRT_USE_C_COMPLEX_H を定義する必要があるとのこと。
<C++>
struct complex は、STL(Standard Template Library)に含まれている。
#include <complex>
std::complex<T>
以下の関数と演算子が定義されている。
T abs(const complex<T>& x);
T arg(const complex<T>& x);
complex<T> polar(const T& rho, const T& theta = 0);//theta = 0 はデフォルト引数
complex<T> conj(const complex<T>& x);
T real(const complex<T>& x);
T imag(const complex<T>& x);
T norm(const complex<T>& x);//ノルム = 絶対値の2乗
その他の関数は、<cmath>の関数に対するオーバーロードであり、C言語の<complex.h>の関数とは別である。
<C#>
struct Complex は、.NET Framework 4で追加されたとのこと。
using System.Numerics;
の記述とともに、System.Numerics.dllへの参照を追加する必要がある。
Windows 7 標準搭載は、.NET Framework 3.5(Windows 8 以降では既定で無効化)
Windows 8 標準搭載は、.NET Framework 4.5
Windows 10 標準搭載は、.NET Framework 4.6
Visual Studio 2010 で、.NET Framework 4 に対応
<参考>
seclan のほえほえルーム:プログラミング言語 C の新機能
山本昌志:C言語の学習 数学関数 3 複素数と複素関数
D-poppoのページ:雑記帳 Visual C++ での C99 complex
cpprefjp C++日本語リファレンス:complex
総武ソフトウェア推進所:複素数型
Wikipedia:.NET Framework