Erlang会有数学函数的bignum吗?
为什么Erlang不包含数学函数的任意精度?我最近不得不使用Erlang会有数学函数的bignum吗?,erlang,bignum,Erlang,Bignum,为什么Erlang不包含数学函数的任意精度?我最近不得不使用math:pow(24333),它抛出了一个错误。为什么Erlang不使用像GMP这样的库?是否有计划将其纳入标准库?(Haskell使用它,[strike],甚至Java也有bignums[strike]) 谢谢 更新: 为了增加更多的视角,我知道可以使用NIFs来完成。我在解决hackerrank的问题,其中输入使用了更大的数字。pow/2可以很容易地用Erlang编写,并且可以工作,但是对于较大的计算,它会很慢。 Java为pow
math:pow(24333)
,它抛出了一个错误。为什么Erlang不使用像GMP这样的库?是否有计划将其纳入标准库?(Haskell使用它,[strike],甚至Java也有bignums[strike])
谢谢
更新:
为了增加更多的视角,我知道可以使用NIFs来完成。我在解决hackerrank的问题,其中输入使用了更大的数字。pow/2可以很容易地用Erlang编写,并且可以工作,但是对于较大的计算,它会很慢。Java为
pow
返回double,因此它不适用于Math.pow(2,1024)
,它给出无穷大
Erlang对整数有bignum,但使用64位IEEE标准浮点数。因此,虽然您可以愉快地使用整数计算阶乘(10000)
,但默认情况下数学库使用浮点,因此数学:pow(24333)
不起作用。Erlang对整数有bignums,但使用64位IEEE标准浮点数。因此,虽然您可以愉快地使用整数计算factorial(10000)
,但默认情况下math
库使用浮点,因此math:pow(24333)
不起作用。加密
模块使用整数并定义加密:mod_pow/3
,如果它适合您的需要,您可以使用它来代替数学:pow/2
。这个答案根本无法回答问题。因为对于Erlang的大多数用途来说,它并不有趣。如果你想进行认真的数值计算,你可以从Erlang调用一个合适的包。crypto
模块使用整数并定义crypto:mod_pow/3
,如果它适合你的需要,你可以使用它来代替math:pow/2
。这个答案没有回答问题,一点也不喜欢。因为对于Erlang的大多数用法来说,它并不有趣。如果您想进行认真的数值计算,可以从Erlang调用合适的包。