manual: handle failed robust regression

This commit is contained in:
Miroslav Lichvar 2017-07-25 09:31:04 +02:00
parent 0c54cf316d
commit 6ec3dc1650

View file

@ -108,32 +108,26 @@ estimate_and_set_system(struct timespec *now, int offset_provided, double offset
int found_freq; int found_freq;
double slew_by; double slew_by;
b0 = offset_provided ? offset : 0.0;
b1 = freq = 0.0;
found_freq = 0;
if (n_samples > 1) { if (n_samples > 1) {
for (i=0; i<n_samples; i++) { for (i=0; i<n_samples; i++) {
agos[i] = UTI_DiffTimespecsToDouble(&samples[n_samples - 1].when, &samples[i].when); agos[i] = UTI_DiffTimespecsToDouble(&samples[n_samples - 1].when, &samples[i].when);
offsets[i] = samples[i].offset; offsets[i] = samples[i].offset;
} }
RGR_FindBestRobustRegression(agos, offsets, n_samples, if (RGR_FindBestRobustRegression(agos, offsets, n_samples, 1.0e-8,
1.0e-8, /* 0.01ppm easily good enough for this! */ &b0, &b1, &n_runs, &best_start)) {
&b0, &b1, &n_runs, &best_start); /* Ignore b0 from regression; treat offset as being the most
recently entered value. (If the administrator knows he's put
an outlier in, he will rerun the settime operation.) However,
/* Ignore b0 from regression; treat offset as being the most the frequency estimate comes from the regression. */
recently entered value. (If the administrator knows he's put freq = -b1;
an outlier in, he will rerun the settime operation.) However, found_freq = 1;
the frequency estimate comes from the regression. */
freq = -b1;
found_freq = 1;
} else {
if (offset_provided) {
b0 = offset;
} else {
b0 = 0.0;
} }
b1 = freq = 0.0; } else {
found_freq = 0;
agos[0] = 0.0; agos[0] = 0.0;
offsets[0] = b0; offsets[0] = b0;
} }