タグ

2014年5月4日のブックマーク (3件)

  • 平方数かどうかを高速に判定する方法 - hnwの日記

    平方数とは、ある整数の平方(=二乗)であるような整数のことを言います。つまり、0,1,4,9,16,...が平方数ということになります。 ところで、与えられた整数が平方数かどうかを判定するにはどうすれば良いでしょうか。与えられた整数の平方根の小数点以下を切り捨て、それを二乗して元の数になるかどうか、というのがすぐ思いつく実装です。 <?php function is_square($n) { $sqrt = floor(sqrt($n)); return ($sqrt*$sqrt == $n); } しかし、平方根の計算は比較的重い処理です。もっと高速化する方法は無いのでしょうか。 多倍長整数演算ライブラリGNU MPには平方数かどうかを判定するmpz_perfect_square_p関数が存在します(PHPでもgmp_perfect_square関数として利用できます)。稿ではこの実装

    平方数かどうかを高速に判定する方法 - hnwの日記
  • Python Data Structures are Fast

    tl;dr: Our intuition that Python is slow is often incorrect. Data structure bound Python computations are fast. You may also want to see the companion post, Introducing CyToolz. We think that Python is slow Our intuition says that Python is slow: >>> # Python speeds >>> L = range(1000000) >>> timeit sum(L) timeit np.s100 loops, best of 3: 7.79 ms per loop >>> # C speeds >>> import numpy as np >>>

  • 統計学・機械学習でよく使われる数学記号リスト(主に自分用) - About connecting the dots.

    統計学とか機械学習周りのを読んでいると,何の説明もなくややこしい数学記号が出てきて,そういえばこれはなんだっただろう? と途方に暮れてしまうことが少なくないので,自分用にまとめなおしてみました,というのが今回のエントリ.あくまで自分用なので,全部の数学記号を扱ってるわけではありません*1. 代数学 記号 意味 用例 用例の意味 備考 総和 要するに足し算 総乗 要するにかけ算 クロネッカーのデルタ i=jなら1,それ以外なら0 要するにブーリアン条件 ナブラ *2 3次元ベクトルの微分 要するに各要素の微分 ラプラシアン 3次元ベクトルの2階微分 要するに各要素の2階微分 下限 のとき与式は0になる との違いは,は当該値を含む必要があるが,はないこと 上限 との違いは,は当該値を含む必要があるが,はないこと 関数値が最大となるような定義域の元の集合 を最大にするような がの下にくる場合も