Код: Выделить всё
<...>
var
k,q,l,ff,k1:longint;
w,u:extended;
x1:extended;
//x1:=1111; k1:=512;
w:=trunc(exp(ln(x1)*k1)) mod 931; //round пробовал, то же не помогает :(
form1.Memo4.Lines.Add(inttostr(w));
Код: Выделить всё
<...>
var
k,q,l,ff,k1:longint;
w,u:extended;
x1:extended;
//x1:=1111; k1:=512;
w:=trunc(exp(ln(x1)*k1)) mod 931; //round пробовал, то же не помогает :(
form1.Memo4.Lines.Add(inttostr(w));
А не могли бы вы указать ссылку, где можно взглянуть на вашу реализацию?Naeel Maqsudov писал(а):Максимальная степень в которую Вы сможете возмести 1111 — это 101. Получится 4,14114038172942E+307 Это предел для используемых тут типов.
Если нужно возводить именно в степень 512, то Вам придётся реализовывать свою собственную арифметику с большей разрядностью, чем Extended.
Проще будет реализовать целочисленную арифметику и возведение в степень умножением.
Как-то раз я реализовывал "неограниченную" разрядность. Просто написал алгоритмы основных арифметических операций для чисел, которые хранятся в WideString: сложение разрядов, переносы, заёмы… Всё как в начальной школе. Нормально работало. К сожалению, ничего не сохранилось.
Прочитайте еще раз последнюю фразу поста.bilymo писал(а):А не могли бы вы указать ссылку, где можно взглянуть на вашу реализацию?