# 5.5 `math` -- 数学関数

このモジュールはいつでも利用できます。標準 C で定義されている数学関数に アクセスすることができます。

これらの関数で複素数を使うことはできません。複素数に対応する必要がある ならば、 `cmath` モジュールにある同じ名前の関数を使ってくだ さい。ほとんどのユーザーは複素数を理解するのに必要なだけの数学を勉強し たくないので、複素数に対応した関数と対応していない関数の区別がされてい ます。これらの関数では複素数が利用できないため、引数に複素数を渡される と、複素数の結果が返えるのではなく例外が発生します。その結果、プログラ マは、そもそもどういった理由で例外がスローされたのかに早い段階で気づく 事ができます。5.1

このモジュールでは次の関数が用意されています。 特に明示的に指定されていなければ、戻り値は全て浮動小数点数となります:

`acos`( | x)

  x の逆余弦を返します。

`asin`( | x)

  x の逆余弦を返します。

`atan`( | x)

  x 逆余弦を返します。

`atan2`( | y, x)

  `atan(y / x)` の逆正接を返します。

`ceil`( | x)

  x 以上の最も小さい整数をfloat型で返します。

`cos`( | x)

  x の余弦を返します。

`cosh`( | x)

  x の双曲線余弦を返します。

`degrees`( | x)

  角 x をラジアンから度数に変換します。

`exp`( | x)

  `e**x` を返します。

`fabs`( | x)

  x の絶対値を返します。

`floor`( | x)

  x 以下の最も大きい整数をfloat型で返します。

`fmod`( | x, y)

  プラットフォームの C ライブラリで定義されている `fmod(x, y)` を返します。 Python の `x % y` という式が同じ結果を返さないかもしれないことに注意してください。

`frexp`( | x)

  x の仮数と指数を `(m, e)`のペアとして返します。 `x == m * 2**e` というように、mはfloat型でeはint型です。 x がゼロの場合は、 `(0.0, 0)`を返し、それ以外の場合は、 `0.5 <= abs(m) < 1` です。

`hypot`( | x, y)

  ユークリッド距離(`sqrt(x*x + y*y)`)を返します。

`ldexp`( | x, i)

  `x * (2**i)` を返します。

`log`( | x[, base])

  x の自然対数を返します。 base を底とした x の対数を返します。base を省略した場合 x の自然対数を返します。 バージョン2.3 以降で変更された 仕様: base argument added

`log10`( | x)

  x の10を底とした対数を返します。

`modf`( | x)

  xの小数部分と整数部分を返します。 両方の結果は xの符号を受け継ぎます。 整数部はfloat型で返されます。

`pow`( | x, y)

  `x**y`を返します。

`radians`( | x)

  角 x を度数からラジアンに変換します。

`sin`( | x)

  xの正弦を返します。

`sinh`( | x)

  xの双曲線正弦を返します。

`sqrt`( | x)

  x の平方根を返します。

`tan`( | x)

  x の正接を返します。

`tanh`( | x)

  x の双曲線正接を返します。

`frexp()`と `modf()` は C のものとは異なった呼び出し/返し パターンを持っていることに注意してください。引数を1つだけ受け取り、1組のペアに なった値を返すので、2つ目の戻り値を`出力引数'(Python にそのようなものはありません) 経由で返したりはしません。

このモジュールでは2つの数学定数も定義されています。

`pi`
  数学定数 pi。

`e`
  数学定数 e。

注意: `math` モジュールは、ほとんどが実行プラットフォームにおける C 言語の数学ライブラリ関数に対する薄いラッパでできています。 例外的な場合での挙動は、 C 言語標準ではおおさっぱにしか定義されておらず、 さらに Python は数学関数におけるエラー報告機能の挙動をプラットフォームの C 実装から受け継いでいます。その結果として、エラーの際 (およびなんらか の引数がとにかく例外的であると考えられる場合) に送出される特定の例外に ついては、プラットフォーム間やリリースバージョン間を通じて有意なものと なっていません。例えば、 `math.log(0)` が `-Inf` を返すか `ValueError` または `OverflowError` を送出するかは不定であり、 `math.log(0)` が `OverflowError` を送出する場合において `math.log(0L)` が `ValueError` を送出するときもあります。

参考資料:

`cmath`モジュール:
  これらの多くの関数の複素数版。.

... 事ができます。5.1
  訳注：例外が発生しないで、計算結果が返えってし まうと、計算結果がおかしい事から、原因が複素数を渡したせいである事に プログラマが気づくのがおくれる可能性があります。