update_sigma(mu, sigma, i, matches_for_player[i]);
dump_scores(players, mu, sigma, num_players);
} */
- bool any_difference = false;
+
+ float sumdiff = 0.0f;
for (int i = 0; i < num_players; ++i) {
- if (fabs(mu[i] - old_mu[i]) > EPSILON ||
- fabs(sigma[i] - old_sigma[i]) > EPSILON) {
- any_difference = true;
- break;
- }
+ sumdiff += (mu[i] - old_mu[i]) * (mu[i] - old_mu[i]);
+ sumdiff += (sigma[i] - old_sigma[i]) * (sigma[i] - old_sigma[i]);
}
- if (!any_difference) {
+ if (sumdiff < EPSILON) {
fprintf(stderr, "Converged after %d iterations. Stopping.\n", j);
break;
}