log2(Inf) [1] Inf Rgames> log2(as.bigz(Inf)) [1] 8000 这里发生了什么?还是 gmp -6ren">
gpt4 book ai didi

r - R-gmp 包如何处理 "Inf"?

转载 作者:行者123 更新时间:2023-12-04 02:44:08 24 4
gpt4 key购买 nike

R 运行 gmp 时,我注意到以下内容:

Rgames> log2(Inf)
[1] Inf
Rgames> log2(as.bigz(Inf))
[1] 8000

这里发生了什么?还是 gmp 语言(或 gmp::log2.bigz 方法)不支持“Inf”的概念?

编辑:Josh 的评论是正确的:它不是 log2 函数本身,而是 as.bigz 似乎转换 Inf 的事实到 2^8000 作为 bigz 整数。更改标题以匹配。

顺便说一句,还有这个:

Rgames> log2(-Inf)
[1] NaN
Warning message:
NaNs produced
Rgames> log2(as.bigz(-Inf))
[1] NaN

编辑:那是愚蠢的。 log2(negative_anything)NaN

但是,

Rgames> log2(-as.bigz(-Inf))
[1] 8000

符合 Josh 的回答。

最佳答案

根据要求发布 Josh 为他做的侦探工作:

如果您下载 gmp 的源代码,并在 $gmp-HOME$/src/bigintegerR.cc 中搜索“Inf”,您将找到以下内容行:

/// New: numeric '+- Inf' give +- "Large" instead of NA

稍后

else { // dj is +- Inf : use LARGE ( = +- 2 ^ 80000 -- arbitrarily )

我的猜测是,由于 GMP 库没有 Inf 的概念/表示,R 包作者必须就如何传递用户提供的 Inf 做出一些决定 值到外部库。看起来他们以前将 Inf 转换为 NA,现在他们将其转换为 2^80000

关于r - R-gmp 包如何处理 "Inf"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19224403/

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