多倍長演算実装記
多倍長演算について前、調べたことを忘れないうちにメモしておこうと思う。
日本語で詳しく書かれた書籍については
http://www.amazon.co.jp/exec/obidos/ASIN/4906240216/studiokingyo-22
その他、Webサイトやソースコードについては
- アセンブラを使わないC++による多倍長計算 公式サイト http://hp.vector.co.jp/authors/VA018507/ よりダウンロードできるSN Library (LGPL)
- Rubyのソースコード (GPL) http://ruby-lang.org/ja/
- google:boost/bigint.hpp] [google:boost bigint (boost license)
- 小さな多倍長演算ライブラリ (GPL) http://www.mit.msn.to/software/tiny_mp/tiny_mp.html
- google:多倍長演算
- google:多倍長 ライブラリ
- google:タイムカプセル暗号のソースコード
- http://www.eskimo.com/~weidai/cryptlib.html よりダウンロードできるgoogle:Crypto++のinteger.cpp および integer.hのソースコード
- 64bit整数の加算についてのソースを逆アセンブルして見てみたら加算する所の命令にADCが使われていた
いろんな多倍長演算をするソースコードを見てきたが多倍長のデータ表現方式をビットいっぱいいっぱいにする場合、文字列から多倍長データの表現にどう直すのかが難しそうと感じた。
SSE2とかを使えば非常に高速な演算ができると感じた。
多倍長データを32byteでalingするとか?