複素数を扱う

何かC言語複素数を扱わないといけなくなりました。確かCでは複素数は1×2の配列で定義されてるんだよなあ。結構面倒くさいことになってた気がする。Fortranだともっと楽に使えた気がするんだけどなあ。ちょっと調べてみるかなあ。C++では実装されてるんで、Cっぽい書き方にして、.cppにしてgccコンパイルすれば良いのかなあ。何かちゃんぽんだな。美しくないな。まあしょうがないかな。
そしてどうやらg++とかいうコンパイラで、普通にコンパイルしたら通りました。どうやらC++では複素数は構造体として定義されてるみたいです。まあ言ってる本人は全然理解してないんですけど。そしてiostreamをつかったときのファイル操作の方法とかも良く分かんなかったりします。あーやることが多くて嫌になる。っつーかいっそのこと複素数使うときは環境をCからC++にした方が良いのかなあと思ってみたりして。
因に下のページを参考にしました。っつーかインターネッツって凄いっすね♪

http://www.uopmu.ees.osakafu-u.ac.jp/~yabu/soft/c-cal.html

そういえば複素数が入ってくるときって計算はどうするんだろうか。どうせ俺が使うのなんてeiωtくらいで、虚数単位しか使わないんだよなあ。変数は全部複素数として定義しないといけないんだろうか。謎だ。取り敢えずやってみよう。
あとは、複素数の使い方は、

#indclude <iostream.h>
#include <math.h>
#include <complex.h>

int main () {
  complex <double> z1, z2;

  z1 = complex <double> (1, 1);
  z2 = complex <double> (1, -1);

  cout << z1 << endl;
  cout << z1*z2 << endl;

  return 0;
}

って書いて、これを、hoge.cppとして保存して、

g++ hoge.c -o hoge -lm

コンパイルして計算するとまあ複素数のかけ算が結果として出てきます。なのでまあ普通の変数みたくして暑かっていいのだろう。と思ってみたりする。