Next: , Previous: , Up: Rational Number Functions   [Index]


6.1 初期化関数と代入関数

Function: void mpq_init (mpq_t x)

xを初期化して0/1を代入します。変数は一度だけ普通に初期化・消去(mpq_clear)しておく必要があります。

Function: void mpq_inits (mpq_t x, ...)

NULL文字終端子を持つmpq_t変数のリストを初期化し,それぞれに0/1をセットします。

Function: void mpq_clear (mpq_t x)

xが確保していた領域を解放します。一度使ったすべてのmpq_t変数に対してこの関数を呼び出して消去したことを確認して下さい。

Function: void mpq_clears (mpq_t x, ...)

NULL文字終端子を持つmpq_t変数のリストが確保していた領域を消去します。

Function: void mpq_set (mpq_t rop, const mpq_t op)
Function: void mpq_set_z (mpq_t rop, const mpz_t op)

opの値をropに代入します。

Function: void mpq_set_ui (mpq_t rop, unsigned long int op1, unsigned long int op2)
Function: void mpq_set_si (mpq_t rop, signed long int op1, unsigned long int op2)

op1/op2ropにセットします。op1op2に共通因子がある場合は,ropを使った演算を実行する前にmpq_canonicalize関数を呼び出しておく必要があります。

Function: int mpq_set_str (mpq_t rop, const char *str, int base)

NULL終端子のある文字列strを,base進数として解釈し,ropにセットします。

例えば“41”という整数や,“41/152”という表記の有理数が使えます。有理数は標準形であることを想定していますので,そうでないときにはmpq_canonicalize関数で標準化しておきます。

分子と(必要があれば)分母はmpz_set_str関数と同様の処理を行って読み取りされます (see Assigning Integers)。ホワイトスペースが文字列に入っていても単に無視されます。baseは2以上62以下で設定できますし,他のやり方としては,文字列の先頭が0ならば8進数, 0x もしくは 0Xならば16進数,0b もしくは 0Bならば2進数,それ以外は10進数として解釈できます。分母と分子の基数は独立に設定でき, 0xEF/100 は 239/100, 0xEF/0x100 は 239/256と解釈されます。

文字列全体が正常に変換できれば0を返します。不正文字列の場合は-1を返します。

Function: void mpq_swap (mpq_t rop1, mpq_t rop2)

rop1rop2の値を高速に交換します。