These are *not* equivalent in floating point, of course. The first is better.
Even better:
for (i = 1; i <= n; i++)
{
m_x += (x[i * xstride] - m_x) / i;
m_y += (y[i * ystride] - m_y) / i;
}
Keith
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Serhiy Lisovenko
Sent: 22 November 2007 11:34
To: [email protected]
Subject: Not clear to understand :)
in file fit/linear.c
for (i = 0; i < n; i++)
{
m_x += (x[i * xstride] - m_x) / (i + 1.0);
m_y += (y[i * ystride] - m_y) / (i + 1.0);
}
and other same...
code equivalent to
for (i = 0; i < n; i++)
{
m_x +=x[i * xstride];
m_y +=y[i * ystride];
}
m_x/=(double)n;
m_y/=(double)n;
But the second code is more clear and some faster (no extra divisions).