+float AnalogSignal::scale() const
+{
+ const float seq[] = {1.0f, 2.0f, 5.0f};
+ const int offset = std::numeric_limits<int>::max() / (2 * countof(seq));
+ const std::div_t d = std::div(
+ (int)(scale_index_ + countof(seq) * offset),
+ countof(seq));
+ return powf(10.0f, d.quot - offset) * seq[d.rem];
+}
+