• ベストアンサー

ライブラリにない関数の定義

誤差関数erfと相補誤差関数erfc がライブラリになく プログラムが組めなくて困っています。 どこかにソースがうpされているとか関数のソースを持っている方とかヘッダファイルを提供してくださる方、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#11920
noname#11920
回答No.5

「C言語による最新アルゴリズム事典」 (ISBN4-87408-414-1) のpp227-230にigamma.cとしてソースがあります。 サポートページからソースはダウンロードできますが、 この手のアルゴリズム本はプログラマには必須です。 TO 運営スタッフの方 この本に「プログラムは自由にお使いいただいてかまわない」 とあるので、ここに紹介しました。 問題があれば削除してください。

参考URL:
http://oku.edu.mie-u.ac.jp/~okumura/algo/

その他の回答 (4)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

erfもerfcもC99から標準規格に導入された関数です。したがって、C++やC95以前の処理系ではサポートしていなくても仕方ありません。 これらのソースはいくつか公開されていますが、Newlib(http://sources.redhat.com/newlib/)またはMinGW Runtime(http://sourceforge.net/projects/mingw/)のものが手っ取り早いかと思います。 なお、C99ではerfやerfcの複素数版(cerfおよびcerfc)は任意実装ですので、必ずしもサポートされるわけではありません。(つまり、complex.hやtgmath.hを探してもない可能性があります)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

math.h (C++ なら cmath) で定義されているような気がします.

strikeout
質問者

補足

math.hでコンパイルするとエラーがでたので、math.hにはありません。 cmathを使う場合 #include<cmath> でよろしいのでしょうか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ANSI C に対応している (hosted な) 処理系なら erf とか erfc は持っていないといけないんですけど, どんな処理系 (コンパイラなど) を使われているんでしょうか?

strikeout
質問者

補足

VC6++です。 今日いろいろ調べてみたら complex.hという新標準ヘッダファイルにあるようなのですが、 #include<complex>//.hがいらない のように使うということを知りました、いままで、complex.hでつかっていてエラーが出ていたので、 これで上手くいくことを願います。

  • angband
  • ベストアンサー率51% (86/168)
回答No.1

MATLABを持ってない場合は、Scilabで代用できると思います。 フランス産ですが、自由に配布、使用できるライセンスで、 日本語の資料もあります。 Scilabには erf(),erfc(),erfcx()も含まれています。 UNIX,Windows,MACで動作します。

参考URL:
http://www.geocities.jp/rui_hirokawa/scilab/

関連するQ&A