Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Denes Raskovalov                     2:5080/169.35  06 May 2001  01:04:10
 To : Stanislav Shwartsman
 Subject : exp(x)
 -------------------------------------------------------------------------------- 
 
 
  SS>  Функции exp в сопроцессоре вообще нет, так что задача переплюнуть
  SS>  функцию, встроенную в стандратную математическую библиотеку языка C.
  SS>  А это IMHO вполне реально.
 
 Лови исходник:
 
 function Exp(x:extended):extended;assembler;
 
         {вычисление экспоненты по формуле: 2**(x*log2(e))}
 
 var     Wc,Wcnew : word;
 
 asm
   fld   [x]             {x=y+z; y-целое, z=0..1}
 
   fstcw [Wc]            {сохранить упр. слово}
 
   { fldl2e}
   db    0CDh, 35h, 0eah {x,log2(e)}
 
   fmul            {x*log2(e)=r+i}
 
   mov   ax,[Wc]
   and   ah,11110011b
   or    ah,00000100b
   mov   [WCnew],ax
 
   fld   st(0)           {x*log2(e),x*log2(e)}
 
   fldcw [WCnew]         {установить округление к -бесконечности}
 
   frndint               {i,x*log2(e)}
 
   fldcw [Wc]            {восстановить упр. слово}
 
   fsub  st(1),st        {i,r}
   { fld1}
   db    0CDh, 35h, 0e8h {1,i,r}
   fscale                {2**i,i,r}
   fstp  st(1)           {2**i,r}
   { fld1}
   db    0CDh, 35h, 0e8h {1,2**i,r}
   fchs                  {-1,2**i,r}
   fxch                  {2**i,-1,r}
   fxch  st(2)           {r,-1,2**i}
   fscale                {r/2,-1,2**i}
   f2xm1                 {2**(r/2)-1,-1,2**i}
   fsubr                 {2**(r/2),2**i}
   fmul  st,st           {2**r,2**i}
   fmul                  {2**(r+i)=exp}
 end;
 
 Bye, Stanislav.
 
 --- Здесь будет город заложен. И тут же продан и сожжен...
  * Origin: Все равно MustDie не брошу, потому что он хороший... (2:5080/169.35)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 exp(x)   Denes Raskovalov   06 May 2001 01:04:10 
 exp(x)   Evgeny Sharandin   14 May 2001 23:27:00 
Архивное /ru.algorithms/39993af4a330.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional