お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2007-11-28 17:07:38

ken92
メンバ
登録日: 2007-10-11

gccで複素数と複素関数

 複素数の計算をしようとしています。今までWindows環境下のBorlandを使用してきたのですが、Ubuntuについているgccでできないものかと考えました。何かこの辺を紹介されているページなどありますか。

現時点で分からないのは

includeすべきファイル(例えばcomplex.hをインクルードする必要ある?)は何か。
虚数部の定数を表すときにどう記述すればよいか。(例えばI*0.5など)
複素関数のリスト(例えば cexp()など)
複素型の定義の仕方(例えば、double _Complex z )

です。非常に初歩的な話なのですがよろしくお願いいたします。

最後の編集者: ken92 (2007-11-28 17:08:09)

オフライン

 

#2 2007-11-28 17:12:41

hito
管理者
登録日: 2007-03-18

Re: gccで複素数と複素関数

以下のURLのドキュメントは参考になりませんか?
http://www.alab.t.u-tokyo.ac.jp/~bond/doc/complex.html

オフライン

 

#3 2007-11-28 17:19:32

ken92
メンバ
登録日: 2007-10-11

Re: gccで複素数と複素関数

さっそくありがとうございます。

紹介いただいたページのサンプルをコンパイルすると
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)

オフライン

 

#4 2007-11-28 17:35:06

hito
管理者
登録日: 2007-03-18

Re: gccで複素数と複素関数

test.ccではなくtest.cとしてコンパイルしてください。gcc組み込みの
複素数処理はCでのみ有効です。

で、もしもC++で使うもしくは移植性が必要であれば、complex.hをincludeして
ください。

オフライン

 

#5 2007-11-29 08:10:21

ken92
メンバ
登録日: 2007-10-11

Re: gccで複素数と複素関数

ありがとうございます。

動くようですが、警告は出ます。

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

オフライン

 

#6 2007-11-29 09:51:14

hito
管理者
登録日: 2007-03-18

Re: gccで複素数と複素関数

その警告は移植性に対するものです。gccの組み込み関数を使うと
出力されるものです。読んで字のごとく、という感じです。

移植を行わないのであれば無害です。

オフライン

 

Board footer

Powered by FluxBB