Главная страница
    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.46 MB
Время: 0.01 c
1-93429
werr
2004-01-16 15:25
2004.01.29
Как перенести каталог?


3-93350
sergg
2004-01-03 14:02
2004.01.29
Указание пути для ADO-таблиц


3-93363
Vick
2003-12-31 11:44
2004.01.29
Экспорт из DataSet в Excel


3-93387
alextov
2003-12-29 15:28
2004.01.29
При вводе ключевого поля не отображаются некоторые лукапные поля


3-93402
guest123
2003-12-29 17:18
2004.01.29
Дистрибутив InterBase 5.0-5.5





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский