Next: , Previous: , Up: Floating-point Functions   [Index]


7.2 代入関数

この代入関数は新しい値を,初期化済みの浮動小数点数 (see Initializing Floats)に代入するためのものです。

Function: void mpf_set (mpf_t rop, const mpf_t op)
Function: void mpf_set_ui (mpf_t rop, unsigned long int op)
Function: void mpf_set_si (mpf_t rop, signed long int op)
Function: void mpf_set_d (mpf_t rop, double op)
Function: void mpf_set_z (mpf_t rop, const mpz_t op)
Function: void mpf_set_q (mpf_t rop, const mpq_t op)

ropopの値を代入します。

Function: int mpf_set_str (mpf_t rop, const char *str, int base)

文字列strから変換してropに値を代入します。文字列は‘M@N’という表現形式か,10以下の基数であれば‘MeN’という形式に対応しています。‘M’は仮数部,‘N’は指数部を表わします。仮数部は常に指定された基数baseを使います。指数部は指定基数か,baseが負数であれば10進と判断して扱います。小数点は現在のロケールに依存したものが使用でき,localeconvで設定できます。

引数baseは2以上62以下の値が設定できます。-62 以上 -2以下の負数であれば,指数部は10進数であると判断します。

36以下の基数であれば,大文字小文字の区別はせずに同じ値とみなします。37以上62以下であれば,大文字は10~35,小文字は36~61を表現しているものとみなします。

同様の機能を持つmpz関数とは異なり,baseがゼロであっても先頭文字で基数を判断したりはしません。従って,‘0.23’のような小数を8進数とは解釈しません。

ホワイトスペースが文字列に入っていても単純に無視されます。[というのは完全には正しくない。文字列の先頭や仮数部の中に入ったホワイトスペースは確かに無視されるが,その他の場所,例えばマイナス記号の後や,指数部の中に入った場合は別。この関数の定義を変えて,入力値にホワイトスペースが入ることを厳禁するようにしたいと考えているので,ご意見をお寄せ頂きたい。"3 14"を314と解釈してもいいと思う?]

この関数は,文字列全体が正しい基数baseの数として表現されていればゼロを返し,失敗した時には-1を返します。

Function: void mpf_swap (mpf_t rop1, mpf_t rop2)

rop1rop2の値と精度を素早く交換します。