Что-то последнее время всем понадобилось возвадить числа в степени. Ответ на твой опрос уже есть в существующих темах, тем не менее. Смотри f2xm1, все тривиально.
f2xm1 вроде как возводит в степень от -1.0 до +1.0 Если нужно быстрее fscale, то - целочисленные методы с последующей загрузкой в FPU (варианты есть у Агнера Фога в pentopt.pdf)
По теме "Скорость+оптимизация" накатал процедурку: QPower proc lpValue,lpPower,lpRes <ol type=1>finit mov eax,lpPower fld qword ptr [eax] fchs fld1 mov eax,lpX fld qword ptr [eax] fdivp st(1),st fyl2x fld st frndint fsub st(1),st fxch st(1) f2xm1 fld1 fadd fscale fstp st(1) mov eax,lpRes fst qword ptr [eax] ret</ol> QPower endp Все бы хорошо, только вот fscale уж очень долго работает - аж половину времени работы всей процедуры. Вот я и думаю, как его заменить. Нет ли у fpu что-нибудь типа shl? NoName, что ты там говорил про целочисленные методы с последующей загрузкой в FPU? Может пример приведешь, или выписку сделаешь?
QPower proc lpX,lpPower,lpRes fninit mov ecx,lpPower mov ecx,[ecx] dec ecx mov eax,lpX fld qword ptr [eax] fld qword ptr [eax] p: fmul st,st(1) dec ecx jnz p mov eax,lpRes fst qword ptr [eax] ret QPower endp У меня это посчитало 2<sup>32</sup> быстрее(чуть-чуть) чем твой вариант 2<sup>3</sup>, да и обычнычный mul должен быть быстрее, а результат всегда можно запихнуть в регистр fpu
dr_dred > "что ты там говорил про целочисленные методы с последующей загрузкой в FPU?" Самому слабо поискать ? На тебе Агнер Фог на русском в переводе Aquila. Раздел 26.10 FSCALE и экпоненциальная функция (все процессоры). А то вдруг не найдешь