В моем коде была ошибка, из-за которой я смог определить определенный цикл for, но теперь я не уверен, как именно вызывается проблема
int linregm(int n, float x[], float y[]){
float denom=1;
sumx = 0.0;
sumx2 = 0.0;
sumxy = 0.0;
sumy = 0.0;
/*
for (i=0;i<n;i++)
{
//sumx = sumx + x[i];
//sumx2 = sumx2 + x[i]*x[i];
//sumxy = sumxy + x[i] * y[i];
//sumy = sumy + y[i];
}
*/
denom = (n * sumx2 - sqr(sumx));
if (denom == 0) {
// singular matrix. can't solve the problem.
pass=1;
return 0;
}
m = (n * sumxy - sumx * sumy) / denom;
pass=0;
return m;
}
Эта функция имеет проблему в том месте, где есть цикл for, даже если я просто запускаю сам цикл без внутреннего содержимого, он все равно выдает ошибку.
m = linregm(sizeof(x)/sizeof(x[0]), x, y);
__IO float Send_float_Data[256];
float x[8] = {1,2,3,4,5,6,7,8};
float y[8];
float m,b;
unsigned int pass;
float sumx,sumx2,sumxy,sumy=0.0;
unsigned int i=0,j;
А это объявления переменных.
Я новичок в C, поэтому я не знаю, есть ли специальные взаимодействия между переменными или что-то, что могло бы испортить мой код, не было никакого предупреждения компилятора, поэтому синтаксис не должен быть проблемой. У вас, ребята, есть есть идеи, что именно я делаю не так? Спасибо.