Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

как правильно использовать данную функцию   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.065 c
15-1167410718
Gero
2006-12-29 19:45
2007.01.21
Песни в хорошем качестве


2-1167822845
vitv
2007-01-03 14:14
2007.01.21
Потеря соединения с СУБД


4-1158071811
Ling
2006-09-12 18:36
2007.01.21
Отправить сообщения в службу


15-1167200077
TUser
2006-12-27 09:14
2007.01.21
Компьютер - зло,


1-1164713739
leksNov
2006-11-28 14:35
2007.01.21
Помогите!!!