Liczby zespolone w assemblerze

0

Witam

Czy ktoś z was spotkał sie z gotowymi procedurami lub funkcjami Asemblerowymi wykonujacymi operacje (sumowanie, mnożenie, odejmowanie, exp) na liczbach zespolonych, zależy mi aby były one bardzo szybkie. Będę wdzieczny za wszelką pomoc.

Pozdrawiam

// napisałem takowe fuknkcje ale zwątpilem w ich sluszność, choć muszę przyznać że widzę już jakieś postępy, jak dojdę do czegoś konkretnego to postaram się to zamieścić na stronce

Oto jedna fukcja która mnoży dwie liczby zespolone:
przy czym zmienna typu TComplex np. "z" to
z.x --> część rzeczywista
z.y --> część urojona

Function FCMult(Const za,zb:  TComplex):  TComplex;
var
a,b,c,d,e,f :Double;
Begin
   a := za.x;
   b := za.y;
   c := zb.x;
   d := zb.y;

   asm
     finit
     //------- X
     fld b  {a.y}  {5}
     fld d  {b.y}  {4} ; fmul ST(0),ST(1) {wynik mnożenia}
     fld a  {a.x}  {3}
     fld c  {b.x}  {2} ; fmul ST(0),ST(1)  ; fsub ST(0),ST(2)
     fst e  {result.x ze stosu}
     //------  y
     fld d  {b.y}  {1} ; fmul ST(0),ST(2) {a.x * b.y}
     fld c  {b.x}  {0} ; fmul ST(0),ST(5) {a.y * b.x}
     fadd ST(0),ST(1)  {Suma}
     fstp f  {result.y  ze stosu}
   end;

RESULT.x := e;
RESULT.y := f;
End ;
0

Heh... nie ma takich :).. (mówimy o 8086)

Jeśli masz wzory na te działania (a pewnie masz) to przecież żaden problem napisać samemu takie procedury...

// no tak.. przepraszam :-/

0

Heh... nie ma takich :).. (mówimy o 8086)

AndRew - chyba nie do końca zrozumiałeś pytanie. Seba nie pyta o instrukcje Assemblera do takich operacji ale o

gotowe procedury
. Jest ciekaw, czy może ktoś wcześniej napisał optymalne funkcje w Assemblerze do obslugi liczb zespolonych.

Uff, no dobra. Wracając do sedna - ja się z takimi funkcjami nie spotakałem z bardzo prostej przyczyny - nigdy takich nie potrzebowałem ani nie szukałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1