Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-24436
MadGhost
2003-08-25 18:28
2003.09.08
Как в Memo1 добавлять строку?


7-24714
OlegL
2003-06-24 14:55
2003.09.08
Название папки


14-24708
ossa
2003-08-19 07:01
2003.09.08
Файлы, почему при работе с FindFirst, FindNext, CopyFile ,если


6-24605
miguel1
2003-07-02 17:28
2003.09.08
Ошибка в кодировке при отправке E-Mail с помощью INDY


4-24744
Shluz
2003-07-02 12:24
2003.09.08
wm_SetText





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский