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

Вниз

Что за загадочный FPower10?   Найти похожие ветки 

 
Konstantin   (2004-01-12 15:18) [0]

Скажите пожалуйста может кто знает что делает процедура FPower10? В хэлпе её нет, единственное место где она светится это модуль system, но там только заголовок, но что самое интересное она компилируется и запускается...


 
Petrovich   (2004-01-12 15:24) [1]

Вот как раз оттуда:

// This routine generates 10**power with no more than two
// floating point multiplications. Up to 10**31, no multiplications
// are needed.


 
GLFox   (2004-01-12 15:25) [2]

А че? Там все так и написано (дословно):
This routine generates 10**power with no more than two
floating point multiplications. Up to 10**31, no multiplications are needed.


 
Konstantin ©   (2004-01-12 15:31) [3]

А теперь расшифруйте пожалуйста это всё...

... генерирует 10 ... питание не более чем с 2-мя плавающими точками .... Вплоть до 10 ... 31 , ... не трубуется.

Ничё не понятно, это максимум что я перевёл, я правда не особо силён в английском...


 
Petrovich   (2004-01-12 15:35) [4]

power - это степень, но все равно непонятно :-)

По идее 10 в степени, но параметры явно не передаются.

Через вот это:
// -> FST(0) val
// -> EAX Power
// <- FST(0) val * 10**Power


 
VMcL ©   (2004-01-12 15:36) [5]

>>Konstantin © (12.01.04 15:31) [3]

Вообще-то за переводом с англ. не на этот форум.
Но: "Power" = "степень" в данном контексте.


 
Dimka Maslov ©   (2004-01-12 16:00) [6]

Процедура вычисляет 10 в целочисленной степени за не более чем две опраци умножения с вещественными числами. Используется исключительно компилятором.


 
Konstantin ©   (2004-01-15 15:25) [7]

Спасибо, но я не всё понял, во первых как понять используется только компилятором? Во вторых, а что она вычисляет то, если это *процедура* и без параметров?


 
AKul ©   (2004-01-15 16:01) [8]

Функция служит для очень быстрого вычисления выражения
(число)*10**(степень)
Под "Не имеет" параметров здесь имели в виду, что она описана в Delphi, как функция без параметров.
На самом деле параметры ей передаются через регистры:
в EAX - степень
в ST(0) - число, на которое надо умножить 10**степень.
Результат возвращается в ST(0).

На счет того, что функция используется только компилятором Dimka Maslov © [6] не прав.
Функцию можно вызывать из ассемблерной вставки, например так:
...
var Number,Res:single;
...
begin
...
Number:=5; //число
asm
finit
mov eax,1 // степень (можно использовать переменную вместо константы)
fld Number
call FPower10
fstp Res // теперь Res содержит результат
end
....


 
Konstantin ©   (2004-01-15 17:00) [9]

Спасибо большое, теперь разобрался.



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
8-93589
Дмитрий В. Белькевич
2003-09-03 17:48
2004.01.29
Как из TBitmap вытащить plain data


1-93543
Mishenka
2004-01-17 02:39
2004.01.29
Как убрать с экрана панель задач?


1-93528
RustamBek
2004-01-19 10:36
2004.01.29
Межстрочный интервал в TRichEdit


3-93397
kiko
2003-12-30 08:58
2004.01.29
Вопрос о системных таблицах IB


1-93480
maxXP
2004-01-15 17:46
2004.01.29
Как в listbox определить количество существующих элементов?