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

Вниз

extended   Найти похожие ветки 

 
elf   (2003-08-26 01:49) [0]

Люди подскажите, как мне возвести число h в степень. Я пытаюсь использовать extended;
var
h:extended
i,j:integer;
begin
i:=2;
j:=2;
h:=ie+j;
end;
Не работает! А как надо?


 
default ©   (2003-08-26 01:58) [1]

вот юзай

function Degree(const DegBasis, DegParam: Extended): Extended;
asm
// Вход: DegBasis, DegParam --> в стеке
// Выход: Result --> ST(0)
// Примечание:
// В случае некорректных данных в ST(0) возвращается DegParam

XOR EDX, EDX
FLD DegParam
FTST
FNSTSW AX
SAHF
JNZ @@DegParam_is_not_0
FFREE ST
FLD1
JMP @@exit
@@DegParam_is_not_0:
JC @@DegParam_is_less_than_0
JMP @@cmp_DegBasis_to_0
@@DegParam_is_less_than_0:
OR EDX, 1
@@cmp_DegBasis_to_0:
FLD DegBasis
FTST
FNSTSW AX
SAHF
JNZ @@DegBasis_is_not_0
TEST EDX, 1
JZ @@DegParam_is_greater_than_0
FSTP ST
JMP @@exit
@@DegParam_is_greater_than_0:
FSTP ST(1)
JMP @@exit
@@DegBasis_is_not_0:
TEST BYTE PTR DegBasis + 9, 80H
JZ @@DegBasis_is_greater_than_0
FABS
FXCH
OR EDX, 2
FLD ST
FRNDINT
FSUB ST, ST(1)
FTST
FNSTSW AX
SAHF
FSTP ST
JZ @@DegParam_is_integer
FLD1
FDIV ST, ST(1)
FABS
FLD1
FCOMP
FNSTSW AX
SAHF
JC @@1_div_Abs_DegParam_greater_or_equal_to_1
JZ @@1_div_Abs_DegParam_greater_or_equal_to_1
FSTP ST
FSTP ST(1)
JMP @@exit
@@1_div_Abs_DegParam_greater_or_equal_to_1:
FISTP QWORD PTR @@Int_64
TEST BYTE PTR @@Int_64, 1
JNZ @@continue
FSTP ST(1)
JMP @@exit
@@DegParam_is_integer:
FLD ST
FISTP QWORD PTR @@Int_64
TEST BYTE PTR @@Int_64, 1
JNZ @@continue
XOR EDX, EDX
@@continue:
FXCH
@@DegBasis_is_greater_than_0:
FYL2X
FLD ST
FRNDINT
FSUB ST(1), ST
FXCH ST(1)
F2XM1
FLD1
FADD
FSCALE
FSTP ST(1)
TEST EDX, 2
JZ @@exit
FCHS
JMP @@exit
@@Int_64:
DQ 0
@@exit:
FWAIT

end;


берёт корни типа -8^(1 / 3) = -2
правда я чуть позже буду оптимизировать ещё эту версию но она и щас лучще Math.Power-а


 
elf   (2003-08-26 02:36) [2]

А что нибудь полегче нет?


 
VMcL ©   (2003-08-26 02:46) [3]

OFF: М-да............


 
default ©   (2003-08-26 02:57) [4]

elf
смотри тогда Power в модуле Math



Страницы: 1 вся ветка

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-24482
Alecs
2003-08-27 12:29
2003.09.08
Как скрыть родительские property в Object Inspectore?


14-24692
Dimaxx
2003-08-11 23:38
2003.09.08
Чёт странно...


3-24309
Suharew
2003-08-19 13:05
2003.09.08
Query1.Locate


6-24585
MGA
2003-05-05 18:37
2003.09.08
Контроль печати сетевого принтера - КАК ?


14-24635
kaif
2003-08-20 19:34
2003.09.08
О фамилиях футболистов и политиков