在Haskell中获取平方根的整数部分

时间:2014-02-01 00:17:56

标签: math haskell static-libraries arbitrary-precision square-root

假设我有类型Integer的整数。是否存在库函数(在Prelude或其他地方),当给定Integer X 时,将返回 X 的平方根的整数部分作为Integer

2 个答案:

答案 0 :(得分:7)

您可以通过CReal

isqrt :: Integer -> Integer
isqrt = floor . (sqrt :: CReal -> CReal) . fromInteger

答案 1 :(得分:4)

arithmoi包有一个名为Integer的{​​{1}}平方根函数,适用于任何integerSquareRoot实例。

它还有专门化规则,因此您可以在普通Integral上使用它,并通过双打上的sqrt函数计算根。