Начальная точка в алгоритме CORDIC

Я пытаюсь уменьшить количество итераций, необходимых для вычисления умножения с использованием алгоритма CORDIC, потому что я использую этот алгоритм в непрерывной функции для вычисления квадратной функции. Вот алгоритм, предполагающий -1<x<1'

function z=square(x)
 y=x;
 z=0;
  for i=1:15
    if (x > 0)
      x = x - 2^(-i);
      z = z + y*2^(-i);
    else
      x = x + 2^(-i);
      z = z - y*2^(-i);
    end
  end
return
end

Я уже знаю значение, близкое к результату умножения (из предыдущего результата (назовите его pr)) и стоимость x (значение х непрерывно) . Помогает ли это в любом случае уменьшить количество итераций?

1 ответ

Если вы умножаете дважды на одну и ту же константу, скажем, a.x а также a.x', то вы можете умножить и добавить с дельтой a.(x' - x), который имеет менее значимые цифры.

В случае, если оба фактора различаются, вы все равно можете использовать

x'.y' = (x'- x).(y' - y) + x.(y' - y) + (x' - x).y + x.y

где, может быть, первый термин является невосполнимым.

Для квадрата

x'² = (x'- x)² + 2.x.(x' - x) + x²
Другие вопросы по тегам