Next: Rational Arithmetic, Previous: Initializing Rationals, Up: Rational Number Functions [Index]
opをdouble
型に変換し,必要があれば打ち切ります(つまり,ゼロへの丸めを実行する)。
指数部が double
型の範囲を超えたものになるときの挙動はシステムによります。無限大がサポートされていれば,大きすぎる場合には無限大が返ってきますし,小さすぎるときには0.0に変換されます。ハードウェアのオーバーフロー,アンダーフロー,非正規化エラーは設定次第で発生したりしなかったりします。
opの値をropに代入します。正確に変換できる場合は丸めは発生しません。
opを,基数baseの文字列に変換します。基数は2以上36以下で設定できます。文字列は‘num/den’という形式になりますが,分母が1の時は‘num’と表現されます。
strがNULL
の時は,変換結果を格納するメモリ領域を現在のメモリ割り当て関数を使って確保して格納されます(see Custom Allocation)。領域はstrlen(str)+1
バイト確保され,ここに文字列とNULL終端子が入ります。
strがNULL
でなければ,結果を格納するのに十分なメモリブロックが確保されていなければなりません。つまり
mpz_sizeinbase (mpq_numref(op), base) + mpz_sizeinbase (mpq_denref(op), base) + 3
だけ必要になります。
余分に3バイト必要になるのは,マイナス符号,スラッシュ,NULL終端子を格納するためです。
返り値は変換結果を格納する文字列へのポインタで,新たに確保された所か,既に確保されているstrになります。