Autor: Tomek Lisowski (Lisowski.Tomasz_at_sssa.nospam.pl)
Data: Wed 05 Jan 2000 - 12:48:09 MET
Użytkownik Bartek G. <pealoo_at_poczta.onet.pl> w wiadomości do grup
dyskusyjnych napisał:84qnm3$nus$1_at_sunsite.icm.edu.pl...
> > Żaden z procesorów nie wykona ci operacji sinx/x dla x=0. Tu trzeba coś
> > więcej (np. reguły de l'Hospitala i odrobiny umiejętności
różniczkowania).
> > Tak czy inaczej, dla Twojej informacji - wynik wynosi 1.
> To wiem!
> Nie tylko procesor, ale też żaden człowiek nie wykona operacji dzielenia
> przez zero, ale nie o to mi chodziło!!!!
> Pytałem się tylko, czy Cel300A ma zaimplementowaną taką operację.
> Pealoo
Cel300A ma ten sam zestaw rozkazów, co Pentium, więc nie spodziewałbym się
czegoś szczególnego.
Można zaryzykować następujący kod (np. Delphi):
function SinX_X(X:Extended):Extended; assembler; register;
asm
FLD TBYTE PTR [X]
FTST
FSTSW AX
SAHF
JZ @@Zero
FLD ST(0) {ST0=X, ST1=X}
FSIN {ST0=Sin(X), ST1=X}
FDIVRP ST(1),ST(0) {ST0=SinX/X}
JMP @@Koniec
@@Zero:
FSTP ST(0)
FLD1
@@Koniec:
end;
Sprawdziłem w Delphi 4.0 - działa. (dla X=0.0 zwróci wartość 1.0).
Tomasz Lisowski
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 19:32:32 MET DST