想知道是否有办法在Haskell中计算浮点数的第n个根。我可以尝试编写一个算法,但在此之前,我想知道我是否有一个我找不到的模块或罐头功能。我找到了这个页面:
https://hackage.haskell.org/package/dimensional-1.0.1.0/docs/Numeric-Units-Dimensional.html
提及nroot
功能,但无法告诉如何访问它。它没有进入标准库(当我尝试运行nroot(3,27)
时,它告诉我函数不在范围内)。我尝试通过输入import Numeric.Units.Dimensional
导入Numeric.Units.Dimensional,但被告知无法找到该模块。我可能误解了如何加载像这样的模块。
答案 0 :(得分:3)
请注意,n
根的定义实际上只是n
的倒数的取幂。考虑到这一点,您可能最好写作27 ** (1 / 3)
或27 ** (recip 3)
。如果你真的想要:
nroot :: (Integral a, Floating b) => a -> b -> b
n `nroot` x = n `nroot` x = x ** (1 / fromIntegral n)
那就是说,谨防three exponentiation operators that exist!只有**
适合您。
我应该补充一点,nroot :: (KnownTypeInt n, Floating a) => Proxy n -> Quantity d a -> Quantity (Root d n) a
肯定是而不是你想要的东西。请特别注意,您所使用的根必须是编译时类型级别编号。