非常に多くの平方根の天井をGMPで見つけたいのですが。Cでは、ceil(sqrt(n))
。
整数のGMP平方根は結果を切り捨てるため、10の平方根は3として報告されます。浮動小数点の平方根は期待どおりに機能しますが、次に大きい整数を取得する必要があります。mpf_get_d
ゼロに向かって丸めますが、それ以外の場合は私が望むことを行います。多数の平方根の天井を取得するにはどうすればよいですか?
これが手っ取り早いトリックです:
ceil( sqrt(n) ) = trunc_sqrt(n - 1) + 1
ここで、trunc_sqrt(n)
は現在使用しているGMPの整数平方根関数です。
これはすべての整数で機能するはずn > 0
です。
使用しない特別な理由はありますmpf_ceil()
か?私が何かを逃さない限り、私にはmotsの論理的なステップのように聞こえます。
編集:質問を読み直した後、数値を浮動小数点上の整数として扱う理由はありますか?