ПРЕДУПРЕЖДЕНИЕ
Перед выполнением этого
фрагмента кода нужно убедиться, что биты управления округлением в слове
управления FPU установлены в режим округления к нулю. В Delphi это проще
всего сделать при помощи функции SetRoundMode (модуль Math):
SetRoundMode(rmTruncate);
|
ПРИМЕЧАНИЕ
Так как на процессорах
Intel Pentium IV последовательное многократное переключение между двумя (но
не более) состояниями слова управления FPU выполняется гораздо быстрее, чем
на ранних моделях, можно рассчитывать, что даже в тех ситуациях, когда
придется перемежать вызов этого фрагмента кода с действиями, требующими иного
режима округления, при работе на современной технике это не приведет к
чрезмерным дополнительным временным затратам. Подробности см., например, в
[3].
|
Полный код работоспособной функции на Object Pascal
выглядит так:
function _Power(const x,y:FLOATTYPE):FLOATTYPE; //x>0!
asm
fld y
fld x
fyl2x
fld st(0)
frndint
fsubr st(0),st(1)
f2xm1
fld1
faddp
fscale
fxch st(1)
fstp st
end;
|
СОВЕТ
Имеет смысл создать
перегруженные версии функции для различных типов аргументов FLOATTYPE, так
как на практике часто главным недостатком встроенной функции является то, что
она (как и все вызываемые ею функции) принимает в качестве аргументов
действительные числа типа Extended, что приводит к весьма существенным затратам
на конвертирование форматов при загрузке в стек FPU.
|
Чего мы достигли?
Эксперименты показали, что предложенный вариант
функции возведения в степень повышает точность вычислений на один-два знака
после запятой. Так как автору было несколько лень писать медленный код для
сверхточного возведения в степень с целью проверки точности предложенного
алгоритма, то эксперимент заключался в сравнении результатов со значением, получающемся в стандартном калькуляторе Windows. Если верить его справочной службе, вычисления в нем производятся с точностью до 32 десятичных знаков после
запятой, что позволяет полагаться на него как на источник эталонных значений.
Рекомендуем скачать другие рефераты по теме: педагогические рефераты, реферат машини.
Предыдущая страница реферата |
1
2
3
4
5
6
7
8
9
10
11 |
Следующая страница реферата