std::complex というテンプレート・ライブラリィがある。
#include <complex> using namespace std; // これはお好み |
| 単精度 | complex<float> |
| 倍精度 | complex<double> |
| ?精度 | complex<long double> |
C の a = 1+2i; は、C++ では
a = complex<double>(1,2); |
complex<double> a(1,2); |
虚数単位を使いたい場合は、自分で定義するのかな? complex<double> I(0,1); とか。
(2025/4/27追記)
ChatGPT 様にお伺いしてみたら、C++14 から
using namespace std::complex_literals; |
| test-cpp-complex-1.cpp |
/*
* test-cpp-complex-1.cpp
* g++ test-cpp-complex-1.cpp
*/
#include <iostream>
#include <iomanip> // setprecision()
#include <complex>
#include <cmath>
using namespace std;
int main(void)
{
complex<double> I(0,1), z;
cout << "i=" << I << endl;
cout << "i^2=" << I * I << endl;
cout << setprecision(16) << "sqrt(I)=" << sqrt(I) << endl;
z=1.0+I;
cout << "z=" << z << ", z^2=" << z*z << endl;
return 0;
}
|
| コンパイル&実行例 |
% g++ test-cpp-complex-1.cpp % ./a.out i=(0,1) i^2=(-1,0) sqrt(I)=(0.7071067811865476,0.7071067811865475) z=(1,1), z^2=(0,2) % |
実部、虚部、複素数、共役複素数の例もつけておく。
| test-cpp-complex-3.cpp |
// test-cpp-complex-3.cpp
#include <iostream>
#include <complex>
using namespace std;
int main(void)
{
complex<double> z(1.0, 2.0);
cout << "z=" << z << endl;
cout << "z.real()=" << z.real() << ", real(z)=" << real(z) << endl;
cout << "z.imag()=" << z.imag() << ", imag(z)=" << imag(z) << endl;
cout << "abs(z)=" << abs(z) << endl;
cout << "conj(z)=" << conj(z) << endl;
}
|