#include <stdio.h>
struct data {
double x;
double y;
};
static struct data data[] = {
{1.1, 1.0},
{2.0, 2.1},
{3.2, 3.0},
{4.0, 4.1},
{5.1, 5.0},
{6.0, 6.1},
{7.1, 7.0},
{8.0, 8.1},
{-1, -1} /* sentinel */
};
int main() {
int i, n;
double a, b;
double x, y;
double sum_xy = 0.0, sum_x = 0.0, sum_y = 0.0, sum_x2 = 0.0;
for (i = 0; data[i].x > 0.0; i++) {
x = data[i].x;
y = data[i].y;
sum_xy += x * y;
sum_x += x;
sum_y += y;
sum_x2 += x * x;
}
n = i;
a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x * sum_x);
b = (sum_x2 * sum_y - sum_xy * sum_x) / (n * sum_x2 - sum_x * sum_x);
printf("a = %f\n", a);
printf("b = %f\n", b);
return 0;
}