2019年6月18日火曜日

Pythonのimport mathのfactorial(階乗)

Pythonのimport mathでfactorial(階乗)が使えるのですが、その中身はどういうコードになっているのか調べてました。

ローカルの中では、
mathmodule.c

に書かれていました。

githubでソースを見ると・・
cpython\Modules\mathmodule.c

という場所にあります。

n! の計算 factorial は
binary split という計算方法のようです。

http://www.luschny.de/math/factorial/binarysplitfact.html
がオリジナル?

ビットをカウントしている部分の解説
http://www.mwsoft.jp/programming/java/java_lang_integer_bit_count.html

すごいテクい(死語?)んですけど・・・。
勉強になったけど自分では書けないですね〜。

0 件のコメント:

コメントを投稿