Я, как правило, пользователь R, но я пытаюсь использовать C для некоторых сумм и умножений более низкого уровня.
Я пытаюсь сгенерировать кумулятивную сумму эта и сохраняю результат в tmp0 .Однако, когда я вывожу tmp0 , это либо дает мне Inf, NaN, либо какое-то произвольно большое число.Я дважды проверил ту же накопленную сумму в R, и она отлично работает;Я не уверен, почему C не справляется с этим.Ниже приведен код, который я использую:
int i,j;
const int p = ncov, n = nin;
double accNum0[n]; //accumulate first part of likelihood sum eta_i
double accNum1[n]; //accumulate the backwards numerator
double accNum2[n]; //acumulate the forward numerator (weighted)
double tmp0 = 0;
double eta[n]; //calculate linear predictor in this step (X %*% beta)
for(i = 0; i < n; i++) {
for (j = 0; j < p; j++)
eta[i] += b[j] * x[n * j + i];
}
for (i = 0; i < n; ++i) {
tmp0 += eta[i];
}
return (tmp0);
Опять же, я довольно новичок в C, поэтому, возможно, я делаю некоторые ошибки новичка и буду очень признателен за любые (и все) предложения!