(*drv_set_freq)(afreq_ppm);
- dfreq = 1.0e-6 * (afreq_ppm - current_freq_ppm) / (1.0 - 1.0e-6 * current_freq_ppm);
+ dfreq = (afreq_ppm - current_freq_ppm) / (1.0e6 + current_freq_ppm);
LCL_ReadRawTime(&raw);
LCL_CookTime(&raw, &cooked, NULL);
are handled in units of ppm, whereas the 'dfreq' argument is in
terms of the gradient of the (offset) v (local time) function. */
- current_freq_ppm = (1.0 - dfreq) * current_freq_ppm +
- (1.0e6 * dfreq);
+ current_freq_ppm = (1.0 + dfreq) * current_freq_ppm + 1.0e6 * dfreq;
/* Call the system-specific driver for setting the frequency */
(*drv_set_freq)(current_freq_ppm);
/* Work out new absolute frequency. Note that absolute frequencies
are handled in units of ppm, whereas the 'dfreq' argument is in
terms of the gradient of the (offset) v (local time) function. */
- current_freq_ppm = (1.0 - dfreq) * old_freq_ppm +
- (1.0e6 * dfreq);
+ current_freq_ppm = (1.0 + dfreq) * old_freq_ppm + 1.0e6 * dfreq;
#ifdef TRACEON
LOG(LOGS_INFO, LOGF_Local, "old_freq=%.3fppm new_freq=%.3fppm offset=%.6fsec",
double old_seconds_fast, old_gain_rate;
new_freq = 1.0e-6 * afreq_ppm;
- old_freq = (new_freq - dfreq) / (1.0 - dfreq);
+ old_freq = (new_freq - dfreq) / (1.0 + dfreq);
for (i=0; i<n_samples; i++) {
UTI_DiffTimevalsToDouble(&elapsed, cooked, system_times + i);