日々鍛錬

日本で一番?わかり易い??VTKの落書き帳???を目指し????,日々鍛錬中な元SEさん主婦研究者によるデベロッパとユーザと自分のための雑記帳

複素数の共役を求めるコードを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;

C言語C++ では,標準ライブラリとして

#include <complex.h>   //C言語
#include <complex>      //C++

が用意されている.

早速, Codeを用意して,コンパイル+実行を!・・・・

Visual studioC言語を行なってみる.
...動作しない.・・・

色々キーワードを調べて評価を行うが,どうしても動作しない
動作しない理由を調査する.


教えて!Ziddyちゃん - C言語の複素数についてです。


もしかすると....と思いまして,Visual studioLinux gcc にて
同codeを確認してみる.

なんと,Visual studio 2013では,動作しなかったが,Linuxgccでは動作しました.
しかし,Visual studio 2013 のC++ではきちんと動作しました...

どうやら,Visula studio 2013では,complex.hに定義されたライブラリ,C言語では動作しないぽい.
なんてこった....

class templateでの定義上での利用になっているのだろうか.
#define complexもダメでございました.

visual studio は2013からC99の大半を実装しているらしいのですが,やはりまだ幾つか機能も実装されてないらしい...
ということは,その実装されてないライブラリのひとつとして,complex.hがあるというのだろうかしら.