2.3 複素数の場合

exflib のサイトでは、 C++ のテンプレート・ライブラリィと exflib は協調して動くように書いてある。

test-cpp-complex-2.cpp

// test-cpp-complex-2.cpp

#include <iostream>
#include <iomanip> // setprecision()
#include <complex>
#include <math.h>

#define PRECISION 50
#include <exfloat.h>

using namespace std;

int main(void)
{
  complex<exfloat> I(0,1), z, one;
  one = 1;
  cout << "I=" << I << endl;
  cout << "I^2=" << I * I << endl;
  cout << setprecision(PRECISION+10) << "sqrt(I)=" << sqrt(I) << endl;
  cout << "sqrt(I)の自乗=" << sqrt(I)*sqrt(I) << endl;
  z=one+I;
  cout << "z=" << z << ", z^2=" << z*z << endl;
  return 0;
}
[katsurada:~/study-c-c++-2010] mk% g++ test-cpp-complex-2.cpp -lexfloat
[katsurada:~/study-c-c++-2010] mk% ./a.out
I=(0,1)
I^2=(-1,0)
sqrt(I)=(0.70710678118654752440084436210484903928483593768847,0.70710678118654752440084436210484903928483593768847)
sqrt(I)=(0,1)
z=(1,1), z^2=(0,2)
[katsurada:~/study-c-c++-2010] mk%

sqrt() のような関数もちゃんと動くのは大したものだ (少し驚いた)。

桂田 祐史
2017-09-13