import "big"
大きな整数の演算を実装しています。
下に示す数値型をサポートしています。
- Int 符号付整数
Int型のすべてのメソッドはレシーバ自身を戻り値として返します。レシーバと、オペランドが同一のときはレシーバが計算結果で上書きされます。(メモリは再利用されます)
メソッドが必ず結果を返すので、連続した操作が可能です。
なるべくbignumパッケージではなく、こちらのbigパッケージを使用してください。bignumは将来推奨されなくなる予定です。
パッケージファイル
arith.go int.go nat.go
GcdInt関数
func GcdInt(d, x, y, a, b *Int)
GcdInt はaとbの最大公約数をdにセットします。aとbには正の値を指定してください。
xとyがにnilでないときはGcdIntはx,yに d = a*x + b*y となるような値をセットします。
もしaかbにマイナス値を指定した場合、d, x, yの3つすべてに0がセットされます。
ProbablyPrime関数
func ProbablyPrime(z *Int, reps int) bool
ProbablyPrimeはミラー-ラビン素数判定法によりzが素数か判定します。trueが返ればzは1 – 1/4^nの確率で素数です。
falseが返ればzは素数ではありません。
Int型
Int型は符号付整数を扱います。
type Int struct {
// contains unexported fields
}
NewInt関数
func NewInt(x int64) *Int
NewIntは新しいIntを作成してxをセットした後、作成したIntを返します。
(*Int) Add関数
func (z *Int) Add(x, y *Int) *Int
Addは z = x + y を計算し、答えを返します。
(*Int) Bytes関数
func (z *Int) Bytes() []byte
Bytesはzの絶対値をビッグエンディアンのバイト配列として返します。
(*Int) Cmp関数
func (x *Int) Cmp(y *Int) (r int)
Cmpはxとyの値を比較します。結果は次のようになります。
-1 if x < y 0 if x == y +1 if x > y
(*Int) Div関数
func (z *Int) Div(x, y *Int) (q, r *Int)
Divはz = x / y を計算し、答えを返します。小数点以下は切捨てられます。
(*Int) Exp関数
func (z *Int) Exp(x, y, m *Int) *Int
Expは z = x**y mod m を計算します。mがnilのときは z = x**y を計算します。
参考書籍:Knuth, volume 2, section 4.6.3
(*Int) Len関数
func (z *Int) Len() int
Lenはzの絶対値のビット長を返します。 ゼロの長さは1とみなされます。
(*Int) Mod関数
func (z *Int) Mod(x, y *Int) (r *Int)
Modは xをyで割った余りを計算し、答えを返します。
(*Int) Mul関数
func (z *Int) Mul(x, y *Int) *Int
Mulは x*y を計算し、答えを返します。
(*Int) Neg関数
func (z *Int) Neg(x *Int) *Int
Negは z = -x を計算し、答えを返します。
(*Int) New関数
func (z *Int) New(x int64) *Int
Newは新しいIntを作成してxをセットした後、作成したIntを返します。
(*Int) Rsh関数
func (z *Int) Rsh(x *Int, n int) *Int
Rshは z = x >> s を計算し、答えを返します。
(*Int) Set関数
func (z *Int) Set(x *Int) *Int
Setはzにxをセットし、zを返します。
(*Int) SetBytes関数
func (z *Int) SetBytes(b []byte) *Int
SetBytesはbを符号なし整数のビッグエンディアンのバイト列として解析し、zに結果をセットします。
(*Int) SetString関数
func (z *Int) SetString(s string, base int) (*Int, bool)
SetString はzにbaseを基数とするsの値をセットします。
baseの値が0のとき、sで数値の前に置かれた文字から基数が判定されます。0xは16進数、0は8進数、それ以外は10進数とみなされます。
(*Int) String関数
func (z *Int) String() string
(*Int) Sub関数
func (z *Int) Sub(x, y *Int) *Int
Subは z = x-y を計算し、答えを返します。
Word型
type Word uintptr
Trackback URL
Leave a comment
Comments