Показать сообщение отдельно
Старый 03.06.2013, 04:11   #7
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Ошибка при программировании на Free pascal

Сообщение от JlyHb92=) Посмотреть сообщение
Правда, пришлось искать другой алгоритм возведения в степень)
А старый чем не устроил? Если мне не изменяет память, он-то как раз правильный.
По сути, воткнуть
	if x=0 then Power:=0
   	else if x>0 then 
		Power:=exp(ln(x)*y)
   	else 
		Power:=-exp(ln(abs(x))*y);
вместо

       res := 1;
 
       o := 0;
       while o < abs(deg) do begin
        res := res * num;
        o := o + 1
       end;
 
    if deg < 0 then
        res := 1 / res;
и должно работать (естественно, имена переменных привести в соответствие).
(Offline)
 
Ответить с цитированием