
Ubuntu日本語フォーラム
ログインしていません。
複素数の計算をしようとしています。今までWindows環境下のBorlandを使用してきたのですが、Ubuntuについているgccでできないものかと考えました。何かこの辺を紹介されているページなどありますか。
現時点で分からないのは
includeすべきファイル(例えばcomplex.hをインクルードする必要ある?)は何か。
虚数部の定数を表すときにどう記述すればよいか。(例えばI*0.5など)
複素関数のリスト(例えば cexp()など)
複素型の定義の仕方(例えば、double _Complex z )
です。非常に初歩的な話なのですがよろしくお願いいたします。
最後の編集者: ken92 (2007-11-28 17:08:09)
オフライン
以下のURLのドキュメントは参考になりませんか?
http://www.alab.t.u-tokyo.ac.jp/~bond/doc/complex.html
オフライン
さっそくありがとうございます。
紹介いただいたページのサンプルをコンパイルすると
test.cc: In function ‘int main()’:
test.cc:14: error: ‘crealf’ was not declared in this scope
test.cc:14: error: ‘cimagf’ was not declared in this scope
test.cc:17: error: ‘conj’ was not declared in this scope
とエラーを吐きます。おそらく初歩的な話だとは思うのですが。
gccのバージョンは以下のとおりです。
$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
コンフィグオプション: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.1.3 --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
スレッドモデル: posix
gcc バージョン 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
オフライン
test.ccではなくtest.cとしてコンパイルしてください。gcc組み込みの
複素数処理はCでのみ有効です。
で、もしもC++で使うもしくは移植性が必要であれば、complex.hをincludeして
ください。
オフライン
ありがとうございます。
動くようですが、警告は出ます。
test.c: In function ‘main’:
test.c:14: 警告: incompatible implicit declaration of built-in function ‘crealf’
test.c:14: 警告: incompatible implicit declaration of built-in function ‘cimagf’
test.c:17: 警告: incompatible implicit declaration of built-in function ‘conj’
--------------------------------------------------
$ ./a.out
a=15.2530 + 50.2350 I
b=2 + 3 I
c=15.2530 + -50.2350 I
a+b:30.5060 + 0.0000 I
a*c:2756.2092 + 0.0000 I
a/c:-0.8312 + 0.5560 I
オフライン
その警告は移植性に対するものです。gccの組み込み関数を使うと
出力されるものです。読んで字のごとく、という感じです。
移植を行わないのであれば無害です。
オフライン