Варианты алгоритма возведения в степень: повышение точности и ускорение
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: налоги и налогообложение, план дипломной работы
| Добавил(а) на сайт: Gershel'man.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
// - да и перегрузку функций для другого типа аргумента так делать удобнее.
end;
procedure Core_Exp2; //На вершине стека FPU находится аргумент
var i:integer; //Сюда получим индекс в массиве
asm
fld st //Копируем аргумент
fadd st,st //st(1)=x, st(0)=2x
fistp i //Достаем i (индекс равен trunc(2x)); st(0)=x
fild i //Полагаемся на т.н. Store-Forwarding: округленное значение передается сразу инструкции
// fild, не ожидая, пока данные будут записаны в память; st(1)=x, st(0)=trunc(2x)
mov eax,i
fld1 //st(2)=x, st(1)=trunc(2x), st(0)=1
lea eax,[eax*4] //То есть eax:=i*4
add eax,eax // *2
add eax,1 // +1 = i*8+1 (далее при доступе к массиву используется eax*4, то есть i*32+4,
// т.к. каждая строка по 4*8=32 байта и заполнитель в начале – 4 байта.
// Если бы не было заполнителя, последнюю инструкцию нужно было бы убрать.
fadd st,st
fld1
fdivrp //=0.5
fmulp //st(1)=x, st(0)=0.5*trunc(2x)
fsubp //st(0)=dx
//Подсчет по схеме Горнера. Мне казалось, что можно сделать это быстрее,
//пустив параллельно несколько цепочек вычислений, но пока это не удалось сделать.
fld qword ptr coeffspow[4*eax]
Рекомендуем скачать другие рефераты по теме: педагогические рефераты, реферат машини.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата