moved isqrt to filter.h

This commit is contained in:
Alessandro Mauri 2026-05-15 21:31:21 +02:00
parent 288aa914e9
commit 546178c700
2 changed files with 21 additions and 20 deletions

View file

@ -345,26 +345,6 @@ static inline void pwm_set(uint16_t pulse_width)
}
// Integer square root (binary search)
// https://en.wikipedia.org/wiki/Integer_square_root
static inline uint16_t isqrt(uint32_t x)
{
uint16_t l = 0; // lower bound of the square root
uint16_t r = x + 1; // upper bound of the square root
while (l != r - 1) {
uint32_t m = (l + r) / 2; // midpoint to test
if (m * m <= x) {
l = m;
} else {
r = m;
}
}
return l;
}
// Input: temperature difference
// Output: duty-cycle 0-max_duty
uint16_t pid(int16_t delta, int16_t max_duty)