2009-07-21 13 views

答えて

5

注:mathモジュールは、プラットフォームC mathライブラリ関数に対する薄いラッパで主に構成されています。例外的な場合の動作はC標準によって緩やかに規定されており、Pythonはプラットフォームの実装からのmath -functionエラー報告の動作の多くを継承しています。その結果、エラーの場合に発生する特定の例外(および一部の引数が例外的であるとみなされるかどうかも)は、有用なクロスプラットフォームまたはクロスリリースの方法では定義されません。たとえば、math.log(0)-Infを返すか、ValueErrorまたはOverflowErrorを発生させるかは定義されておらず、OverflowErrorが発生した場合は、が発生する可能性があります。

少なくとも1つのargsがNaNの場合、すべての関数は静かなNaNを返します。シグナリングNaNは例外を発生させます。例外タイプはまだプラットフォームとlibmの実装に依存します。 EDOMの場合は通常ValueErrorerrno ERANGEの場合はOverflowErrorです。

バージョン2.6で変更:以前のバージョンのPython NaNでの動作の結果では、入力は、プラットフォームとlibm実装に依存しています。

+0

これはPythonが現在のプラットフォームのmath.hの実装を使用していることを意味しますか? – Paradius

+1

と仮定します。http://svn.python.org/projects/python/trunk/Include/pymath.h – SilentGhost

+0

@paradiusと考えられる関連するコードは、プラットフォームCの数学ライブラリの周りに薄いラッパーを置くことができます「異なる」とは現在のプラットフォームの実装を使用する」...? –

2

Pythonはリンク先のCライブラリを使用します。 Windowsでは、「プラットフォームCライブラリ」はありません。実際、どのバージョンでも、複数のバージョンのMicrosoftCRunTimeLibrary(MSCRT)が存在します。

関連する問題