このモジュールはいつでも利用できます。標準 C で定義されている数学関数に アクセスすることができます。
これらの関数で複素数を使うことはできません。複素数に対応する必要がある ならば、 cmath モジュールにある同じ名前の関数を使ってくだ さい。ほとんどのユーザーは複素数を理解するのに必要なだけの数学を勉強し たくないので、複素数に対応した関数と対応していない関数の区別がされてい ます。これらの関数では複素数が利用できないため、引数に複素数を渡される と、複素数の結果が返えるのではなく例外が発生します。その結果、プログラ マは、そもそもどういった理由で例外がスローされたのかに早い段階で気づく 事ができます。6.1
このモジュールでは次の関数を提供しています。 明示的な注記のない限り、戻り値は全て浮動小数点数になります。
以下は整数論および数表現にまつわる関数です:
x) |
x) |
x) |
x, y) |
fmod(x, y)
を返します。
Python の x % y
という式は必ずしも同じ結果を
返さないということに注意してください。
C 標準の要求では、fmod は除算の結果が x と同じ符号に
なり、大きさがabs(y)
より小さくなるような整数 n に
ついてはfmod(x, y)
が厳密に
(数学的に、つまり限りなく高い精度で) x - n*y
と等価であるよう求めています。
Python の x % y
は、y と同じ符号の結果を
返し、浮動小数点の引数に対して厳密な解を出せないことがあります。
例えば、 fmod(-1e-100, 1e100)
は -1e-100
ですが、
Python の-1e-100 % 1e100
は 1e100-1e-100
になり、
浮動小数点型で厳密に表現できず、ややこしいことに1e100
に
丸められます。このため、一般には浮動小数点の場合には関数 fmod()、
整数の場合にはx % y
を使う方がよいでしょう。
x) |
(m, e)
のペアとして返します。
mはfloat型で、eは厳密にx == m * 2**e
であるような整数型です。
x がゼロの場合は、 (0.0, 0)
を返し、それ以外の場合は、
0.5 <= abs(m) < 1
を返します。これは浮動小数点型の内部表現
を可搬性を保ったまま "分解する (pick apart)" するためです。
x, i) |
x * (2**i)
を返します。
x) |
frexp()と modf() は C のものとは異なった呼び出し/返し パターンを持っていることに注意してください。引数を1つだけ受け取り、1組のペアに なった値を返すので、2つ目の戻り値を `出力用の引数' 経由で返したりはしません (Python には出力用の引数はありません)。
ceil()、floor()、およびmodf() 関数に
ついては、非常に大きな浮動小数点数が全て 整数そのものになるという
ことに注意してください。通常、Python の浮動小数点型は 53 ビット以上の
精度をもたない (プラットフォームにおける C double 型と同じ) ので、
結果的にabs(x) >= 2**52
であるような浮動小数点型x は
小数部分を持たなくなるのです。
以下は指数および対数関数です:
x) |
e**x
を返します。
x[, base]) |
x) |
x, y) |
x**y
を返します。
x) |
以下は三角関数です:
x) |
x) |
x) |
y, x) |
atan(y / x)
の逆正接をラジアンで返します。
戻り値は -pi
から pi
の間になります。この角度は、
極座標平面において原点から (x, y)
へのベクトル
が X 軸の正の方向となす角です。atan2() のポイントは、
入力 x, y の両方の符号が既知であるために、位相角の
正しい象限を計算できることにあります。例えば、atan(1)
と
atan2(1,1)
はいずれも pi/4
ですが、atan2(-1, -1)
は -3*pi/4
になります。
x) |
x, y) |
sqrt(x*x + y*y)
)を返します。
x) |
x) |
以下は角度に関する関数です:
x) |
x) |
以下は双曲線関数です:
x) |
x) |
x) |
このモジュールでは以下の 2つの数学定数も定義しています:
math.log(0)
が -Inf
を返すか ValueError
または OverflowError を送出するかは不定であり、
math.log(0)
が OverflowError を送出する場合において
math.log(0L)
が ValueError を送出するときもあります。
参考: