Я знаю, что в 32-разрядной сборке можно вычислить мощность (эквивалент pow(double, double)
в C), используя комбинацию команд x87 FYL2X
, F2XM1
и FSCALE
.
Однако в 64-разрядной сборке я прочитал, что использование математического сопроцессора x87 не рекомендуется и вместо него следует использовать инструкции SSE2. Несмотря на то, что я смог найти инструкции типа ADDSD
, MULSD
и DIVSD
, которые работают с регистрами XMM, я не смог найти ничего, связанного с степенями, экспонентами или логарифмами (единственный близкий, который я нашел, был SQRTSD
но это не очень помогает) это может помочь мне вычислить полномочия.
Так как же можно вычислить полномочия (a ^ b, где a и b - числа с плавающей точкой) с использованием инструкций SSE2? Можно ли это сделать или вам нужно прибегнуть к программным вычислениям или к x87?