kykyryky
@kykyryky

Как происходят итерации квадрирования в методе Лобачевского?

Если можно, пример. В книгах есть всё - но кроме хотя бы одного примера, расписывающего как же происходит эта итерация.
  • Вопрос задан
  • 2257 просмотров
Решения вопроса 1
gbg
@gbg
Любые ответы на любые вопросы
//Младший коэффициент возводится в квадрат
        coeff[l][0]=coeff[1-l][0]*coeff[1-l][0];
//Старший коэффициент возводится в квадрат
        coeff[l][prox->power()]=coeff[1-l][prox->power()]*coeff[1-l][prox->power()];
//для всех коэффициентов, кроме старшего и младшего
        for(idx i=1;i<prox->power();i++)
        {
            const idx d=std::min(prox->power()-i,i);
//коэффициент с индексом i возводится в квадрат
            coeff[l][i]=coeff[1-l][i]*coeff[1-l][i];
//и домножается на дополнительный набор коэффициентов
            for(idx j=1;j<=d;j++)
            {
                idx k=(((1+j)%2)*2-1)<<1;
                coeff[l][i]+=k*coeff[1-l][i-j]*coeff[1-l][i+j];
            }
        }


Вот это ругательство:
idx k=(((1+j)%2)*2-1)<<1;

Равно 2 на четных j и -2 на нечетных.

Математические подробности тут на странице 31.

Допишите в исходник печать массива coeff после шага квадрирования, тогда вы увидите, что получается.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы