标签: math haskell static-libraries arbitrary-precision square-root
假设我有大类型Integer的整数。是否存在库函数(在Prelude或其他地方),当给定Integer X 时,将返回 X 的平方根的整数部分作为Integer?
Integer
答案 0 :(得分:7)
您可以通过CReal。
CReal
isqrt :: Integer -> Integer isqrt = floor . (sqrt :: CReal -> CReal) . fromInteger
答案 1 :(得分:4)
arithmoi包有一个名为Integer的{{1}}平方根函数,适用于任何integerSquareRoot实例。
integerSquareRoot
它还有专门化规则,因此您可以在普通Integral上使用它,并通过双打上的sqrt函数计算根。
Integral