Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Внизкак правильно использовать данную функцию Найти похожие ветки
← →
Chort © (2006-12-28 22:51) [0]Подскажите как правильно использовать данную функцию(возведение в степень)
interface
type
EPowerException = class(Exception)
end;
implementation
function Power(X, N: real): extended;
var
t: longint;
r: real;
isInteger: boolean;
begin
if N = 0 then
begin
result := 1.0;
exit;
end;
if X = 1.0 then
begin
result := 1.0;
exit;
end;
if X = 0.0 then
begin
if N > 0.0 then
begin
result := 0.0;
exit;
end
else
raise EPowerException.Create("Результат - бесконечность");
end;
if (X > 0) then
try
result := exp(N * ln(X));
exit;
except
raise
EPowerException.Create("Результат - переполнение или потеря значимости");
end;
{ X - отрицательный, но мы все еще можем вычислить результат, если n целое. }
{ пытаемся получить целую часть n с использованием типа longint, вычисление }
{ четности n не займет много времени }
try
t := trunc(n);
if (n - t) = 0 then
isInteger := true
else
isInteger := False;
except
{ Лишний бит может вызвать переполнение или потерю значимости }
r := int(n);
if (n - r) = 0 then
begin
isInteger := true;
if frac(r / 2) = 0.5 then
t := 1
else
t := 2;
end
else
isInteger := False;
end;
if isInteger then
begin
{n целое}
if odd(t) then
{n нечетное}
try
result := -exp(N * ln(-X));
exit;
except
raise
EPowerException.Create("Результат - переполнение или потеря значимости");
end
else
{n четное}
try
result := exp(N * ln(-X));
exit;
except
raise
EPowerException.Create("Результат - переполнение или потеря значимости");
end;
end
else
raise EPowerException.Create("Результат невычисляем");
end;
← →
Palladin © (2006-12-28 22:53) [1]не нужно ее использовать
← →
TUser © (2006-12-28 22:56) [2]ПОсмотри - в модуле math стандартная есть.
← →
Gero © (2006-12-28 23:28) [3]> [0] Chort © (28.12.06 22:51)
> как правильно использовать данную функцию
Ее можно использовать только в паре с функцией IncDay.
← →
Chort © (2006-12-29 22:43) [4]
> TUser © (28.12.06 22:56) [2]
Спасибо! Намного понятнее и проще
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c