| 15 | void set_rand_seed(uint64_t seed) { rand_seed = seed; g_lehmer64_state = seed; } |
| 16 | |
| 17 | void linear_regression(double* x, double* y, int n, double* slope, double* intercept) { |
| 18 | double sum_x = 0, sum_y = 0, sum_xy = 0, sum_xx = 0; |
| 19 | |
| 20 | // Calculate sums |
| 21 | for (int i = 0; i < n; i++) { |
| 22 | sum_x += x[i]; |
| 23 | sum_y += y[i]; |
| 24 | sum_xy += x[i] * y[i]; |
| 25 | sum_xx += x[i] * x[i]; |
| 26 | } |
| 27 | |
| 28 | // Calculate slope and intercept |
| 29 | *slope = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x); |
| 30 | *intercept = (sum_y - *slope * sum_x) / n; |
| 31 | } |