Next: Assigning Integers, Previous: Integer Functions, Up: Integer Functions [Index]
多倍長整数演算を行う関数群は,全ての多倍長整数型のオブジェクトが初期化されているものとして扱います。下記のようにmpz_init
関数を使うことで初期化が実行できます。
{ mpz_t integ; mpz_init (integ); … mpz_add (integ, …); … mpz_sub (integ, …); /* Unless the program is about to exit, do ... */ mpz_clear (integ); }
上記の例で分かる通り,一度初期化した多倍長整数オブジェクトには何度でも新しい値を代入することができます。
多倍長整数xを初期化し,値をゼロにセットします。
NULL文字を終端とするmpz_t
型変数のリストを初期化し,全ての変数の値をゼロにセットします。
n bit長のxを初期化し,値をゼロにセットします。mpz_init
関数やmpz_inits
関数で一度初期化した変数に対しては,必要に応じて値を保持するために必要となる領域再確保を,GMP側で自動で行いますので,この関数を呼び出す必要はありません。
この関数によって初期化時に確保されたn bit長の変数xについても,足りなくなれば値保持に必要なだけ自動的に領域再確保を行いますが,最大長があらかじめ分かっている場合は領域再確保を避けることができます。
GMPでは演算準備段階で,1リム以上の領域を確保することがあります。これを避けたいのであれば,xに対して,nに1リム(mp_limb_t
)分のビット数を加えておく必要があります。
xが確保していた領域を解放します。どんな手段で確保されたmpz_t
型変数であっても利用可能です。
NULL文字を終端とするmpz_t
型変数のリストが保持する領域全てを解放します。
変数x用にn bit分のメモリ領域を再確保します。xが保持する値が代入できる長さであればそのまま保持されますが,足りない時にはゼロがセットされます。
GMPは必要に応じて自動的にメモリ領域の再確保を行いますので,この関数は基本的に不要なものです。繰り返し再領域確保が行われるようであったり,不要なメモリ領域をヒープに戻したいような状況でのみ有用な関数です。