kykyryky
@kykyryky

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

Если можно, пример. В книгах есть всё - но кроме хотя бы одного примера, расписывающего как же происходит эта итерация.
  • Вопрос задан
  • 2254 просмотра
Решения вопроса 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 после шага квадрирования, тогда вы увидите, что получается.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы