gpt4 book ai didi

c - 回收 `rbinom` 输入的代码在哪里?

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:42 25 4
gpt4 key购买 nike

根据文档,rbinom 采用三个参数,nsizeprobthis question的答案声明如果 prob 是一个 vector ,它将被回收直到达到 n。我想找到那个代码!

R 源代码立即调用 C 函数:

> rbinom
function (n, size, prob)
.Call(C_rbinom, n, size, prob)
<bytecode: 0x113526220>
<environment: namespace:stats>

在 Github 镜像中搜索 R gets me the this rbinom C function , 但它只需要两个参数。 n 在哪里? probn长度的回收在哪里?我在这个函数定义中找不到它。

double rbinom(double nin, double pp)
{
...
}

正在搜索 all C files containing rbinom ,我找到的唯一其他看似相关的 C 文件 is this one ,但我不明白。这是回收发生的地方,还是我遗漏了另一个函数定义?

最佳答案

在 stack overflow 的帮助指导下,我成功地回答了这个问题。我不确定细节,但这里是:

> rbinom

调用这条线

rbinom <- function(n, size, prob) .Call(C_rbinom, n, size, prob)

位于第149行 /src/library/stats/R/distn.R

这反过来会调用

static R_INLINE SEXP random2(SEXP sn, SEXP sa, SEXP sb, ran2 fn, SEXPTYPE type)

sn=n , sa=size , sb=probfn=rbinom .

在该函数中,您需要的代码位于 185:rx = fn(ra[i % na], rb[i % nb]);这表明 rbinom 被称为回收 size 和 prob 参数。

random2 和 rbinom 之间的连接是通过预处理器在与函数 random2 相同的文件中建立的。

DEFRAND2_INT(rbinom)
#define DEFRAND2_INT(name) \
SEXP do_##name(SEXP sn, SEXP sa, SEXP sb) { \
return random2(sn, sa, sb, name, INTSXP); \
}

关于c - 回收 `rbinom` 输入的代码在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55462254/

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