gpt4 book ai didi

r - 如何增加.Machine 中的$double.xmax?

转载 作者:行者123 更新时间:2023-12-01 13:46:15 25 4
gpt4 key购买 nike

我想计算一个大数。

我的问题是有一个限制。

例如,如果您运行 factorial(170),它会返回:[1] 7.257416e+306

但是一旦您想要计算 factorial(171)(或更大的数字),它就会返回 [1] Inf

那是因为当你运行 .Machine 时你会看到

$double.xmax
[1] 1.797693e+308

所以我的问题是,如何让它变大?例如,我们可以到达 1.797693e+500 吗?

最佳答案

你不能,在 base R 中; R 只能对 32 位整数和 64 位浮点值进行计算。您可以使用 Rmpfr 包:

library(Rmpfr)
factorialMpfr(200)
1 'mpfr' number of precision 1246 bits
## [1] 788657867364790503552363213932185062295135977687173263294742533244359449963403342920304284011984623904177212138919638830257642790242637105061926624952829931113462857270763317237396988943922445621451664240254033291864131227428294853277524242407573903240321257405579568660226031904170324062351700858796178922222789623703897374720000000000000000000000000000000000000000000000000

此值“仅”约为 1e374,但我们可以轻松地使其大于此值,例如

round(log10(factorialMpfr(400)))
869

但是,这样做也有一些缺点:(1)计算速度慢得多; (2) 将这些结果放入现有的 R 工作流程中可能会很复杂。人们经常找到在对数尺度上进行计算的方法(您可以直接使用 lfactorial() 函数计算对数阶乘)

关于r - 如何增加.Machine 中的$double.xmax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58682046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com