- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有兴趣准确理解 R 包的 C 代码。但我遇到过 RANDIN
、RANDOUT
、UNIF
、EPS
等代码(它们是宏吗?)我不知道在哪里可以找到实现/定义。
我在哪里可以找到这些大写“表达式”的代码(以及解释,如果有的话)?
一个例子是“class”R 包中的 VR_onlineSOM
函数。此函数有以下用 C 语言编写的代码:
void
VR_onlineSOM(double *data, double *codes, double *nhbrdist,
double *alpha, double *radii,
Sint *pn, Sint *pp, Sint *pncodes, Sint *rlen)
{
int n = *pn, p = *pp, ncodes = *pncodes;
int i, j, k, nearest = 0 /* -Wall */, nind;
double dm, dist, tmp;
unsigned int cd; /* avoid spurious warning from gcc pre-4.3.0 */
RANDIN;
for (k = 0; k < *rlen; k++) {
/* pick a random data point */
i = (int)(n * UNIF);
/* find the nearest code 'near' */
nind = 0; dm = DOUBLE_XMAX;
for (cd = 0; cd < ncodes; cd++) {
dist = 0.0;
for (j = 0; j < p; j++) {
tmp = data[i + j*n] - codes[cd + j*ncodes];
dist += tmp * tmp;
}
if (dist <= dm * (1 + EPS)) {
if (dist < dm * (1 - EPS)) {
nind = 0;
nearest = cd;
} else {
if(++nind * UNIF < 1.0) nearest = cd;
}
dm = dist;
}
/* update all codes within radii[k] of 'nearest' */
for (cd = 0; cd < ncodes; cd++) {
if(nhbrdist[cd + ncodes*nearest] > radii[k]) continue;
for(j = 0; j < p; j++)
codes[cd + j*ncodes] += alpha[k] *
(data[i + j*n] - codes[cd + j*ncodes]);
}
}
}
RANDOUT;
}
最佳答案
是的,它们是在 class.c 的开头定义的一些宏和常量.
#define EPS 1e-4 /* relative test of equality of distances */
#define RANDIN GetRNGstate()
#define RANDOUT PutRNGstate()
#define UNIF unif_rand()
关于c - 阅读为 R 包编写的 C 代码。在哪里可以找到 RANDIN、UNIF、EPS 等的定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20151383/
我正在努力弄清楚类型推断是如何实现的。特别是,我不太明白“统一”的繁重工作在何处/为何发挥作用。 我将在“伪 C#”中举一个例子来帮助阐明: 最简单的做法是这样的: 假设您将程序“解析”成一个表达式树
鉴于这些事实: pos(a,1). pos(b,2). pos(c,3). 我想找到一个角色的位置。例如,pos(b,P) P=2。 将这些事实转换为列表并进行成员资格检查是否更好,如下所示: mem
我刚刚开始使用 R 中的 Rcpp 包,我的学习受到了 Hadley Wickham 的 Advanced R 类(class)的启发。 在 R studio 中,我有以下 .cpp 文件。这个问题更
我开始与 Haskell 合作,但我试图进行的这种平等检查没有成功。 我有一个函数,countLetter a [b] c , 其中 a是一个字符,b是一个字符列表和 c是一个整数。 (类型声明通过很
我在 haskell 中有以下结构,它实现了一些打印机制并调用了统一器。我从 main 得到以下错误: 0 =/= int 似乎认为0是一个数字而不是一个变量。以下是完整的实现。 data CTyp
我有兴趣准确理解 R 包的 C 代码。但我遇到过 RANDIN、RANDOUT、UNIF、EPS 等代码(它们是宏吗?)我不知道在哪里可以找到实现/定义。 我在哪里可以找到这些大写“表达式”的代码(以
我是一名优秀的程序员,十分优秀!