複素数の共役を求めるコードをCにて記述する
学生さんからのコード記述における質問にて,
C言語で複素共役を求めるコードの記述を行いたい.
色々わかったことがあったので,メモ書き
サンプルコードはこちらのサイトを介して勉強しました.
C言語関数辞典 - conj, conjf, conjl
こちらのコードを利用する.
/* header files */ #include <stdio.h> #include <stdlib.h> #include <complex.h> /* main */ int main(void) { double complex z = 3.0 + 2.0 * I; double complex conjugate; /* 共役複素数を取得 */ conjugate = conj(z); printf("共役複素数: %.1f + %.1fi\n", creal(conjugate), cimag(conjugate)); return EXIT_SUCCESS;
#include <complex.h> //C言語 #include <complex> //C++
が用意されている.
早速, Codeを用意して,コンパイル+実行を!・・・・
Visual studioでC言語を行なってみる.
...動作しない.・・・
色々キーワードを調べて評価を行うが,どうしても動作しない
動作しない理由を調査する.
もしかすると....と思いまして,Visual studio と Linux gcc にて
同codeを確認してみる.
なんと,Visual studio 2013では,動作しなかったが,Linuxのgccでは動作しました.
しかし,Visual studio 2013 のC++ではきちんと動作しました...
どうやら,Visula studio 2013では,complex.hに定義されたライブラリ,C言語では動作しないぽい.
なんてこった....
class templateでの定義上での利用になっているのだろうか.
#define complexもダメでございました.
visual studio は2013からC99の大半を実装しているらしいのですが,やはりまだ幾つか機能も実装されてないらしい...
ということは,その実装されてないライブラリのひとつとして,complex.hがあるというのだろうかしら.