特殊目的の関数この節で述べる関数は,様々な特殊な目的のために用意されています。普通はアプリケーションで利用することはないでしょう。fixed_num_bits)この関数は廃止予定です。new_alloc)integer用のメモリ空間をnew_allocリムに変更します。intergerに入っている値はそのまま保持されますが,メモリ空間が足りないようなら0になります。返り値は無用のものなので無視しましょう。この関数を使うよりはmpz_realloc2関数の方がいいでしょう。mpz_realloc2関数もこの_mpz_realloc関数も同じようにメモリ空間の付け替えが可能ですが,_mpz_realloc関数の方は,リムのサイズの指定ができます。n)opのn番目のリムを返します。opの符号は無視され,絶対値だけを使用します。最小有効リムは0番目です。mpz_size関数を使うと,opが何リムから構成されているか分かります。nが0以上mpz_size(op)-1リムの範囲外にある時には,mpz_getlimbn関数はゼロを返します。op)opを構成するリム数を返します。opがゼロであれば,返り値もゼロになります。x)xの絶対値を構成するリム配列へのポインタを返します。mpz_size(x)で分かります。この関数は読み取りしかできません。n)書き込み可能なリム配列へのポインタを返します。配列は必要に応じて,nリム分入るように再確保されます。0でなければなりません。mpz_limbs_modify関数はxの古い絶対値はそのまま残しつつ,再確保されたポインタを返します。mpz_limbs_write関数の場合は古い値は破壊され,何が入っているか分からない配列へのポインタを返します。s)xの内部サイズフィールドの値を書き換えます。mpz_limbs_write関数やmpz_limbs_modify関数でリム配列を書き換えた後にこの関数を適用し,書き換え処理を完了します。この配列にはabs(s)分の有効リムが確保されてxの絶対値が書きこまれ,xの符号にはsの符号が格納されます。この関数はxを再確保しませんので,リムポインタはそのまま使用できます。xs)既存のリム配列とそのサイズを使用してxを初期化します。xは書き込み不可として扱わなければなりません。他のmpz関数への入力値として安全な渡し方ができるものなので,出力先としては使用しないで下さい。xpは最低でも読み込み可能なリムが一つ以上で,abs(xs)個分のものとします。返り値はxですが,定数ポインタ型にキャストして返されます。xs)このマクロはmpz_t変数への代入を行う初期化関数として展開されます。リム配列xpは少なくとも読み取り可能なリムへのポインタでなければならず,mpz_roinit_n関数とはこの点が異なります。配列は正規化,つまり,xsが非ゼロであれば,xp[abs(xs)-1]も非ゼロでなければなりません。このマクロは定数値となりますので,非定数値に対して適用するのであればC99をサポートするCコンパイラが必要となります。