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