temporal: fix conditional when deciding which log expression to use inside ::superclock_at()

This commit is contained in:
Paul Davis 2022-05-20 11:20:35 -06:00
parent 2129552777
commit 5476a20fc4

View File

@ -503,11 +503,12 @@ TempoPoint::superclock_at (Temporal::Beats const & qn) const
} }
superclock_t r; superclock_t r;
const double log_expr = superclocks_per_quarter_note() * _omega * DoubleableBeats (qn - _quarters).to_double();
if (_omega < -1) { if (log_expr < -1) {
r = _sclock + llrint (log (-(superclocks_per_quarter_note() * _omega * DoubleableBeats (qn - _quarters).to_double()) - 1.0) / -_omega); r = _sclock + llrint (log (-log_expr - 1.0) / -_omega);
} else { } else {
r = _sclock + llrint (log1p (superclocks_per_quarter_note() * _omega * DoubleableBeats (qn - _quarters).to_double()) / _omega); r = _sclock + llrint (log1p (log_expr) / _omega);
} }
if (r < 0) { if (r < 0) {