Я работаю над реализацией алгоритма FFT в сборке на 8-битном микроконтроллере (HCS08) для развлечения.Когда алгоритм будет завершен, у меня будет массив из 8-битных вещественных / мнимых пар, и я хочу найти величину каждого из этих значений.То есть, если x является сложным, я хочу найти
|x| = sqrt(Re{x}^2 + Im{x}^2)
Теперь у меня есть 16-битный регистр и 8-битный регистр.Я думал о том, чтобы просто возвести их в квадрат, сложить и взять квадратный корень из результата, но это создает проблему: максимально возможное значение суммы квадратов двух 8-битных чисел составляет ~ 130k, что больше, чеммаксимальное значение, которое может содержать 16-битный регистр (65,5 КБ).
Я придумал подпрограмму, которая вычисляет целочисленный квадратный корень из 16-битного числа, который, кажется, работает хорошо, но, очевидно, я не гарантирую, что буду работать со значениями, которые уместятся в 16 бит.Сейчас я думаю, что есть алгоритм, который будет приближаться к тому, что мне нужно, но я не могу ничего найти.Любые идеи очень приветствуются.
Подводя итог: скажем, у меня есть вектор с двумя 8-битными компонентами, и я хочу найти длину вектора.Как я могу приблизить это без фактического вычисления квадратов и квадратных корней?
Спасибо!