Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Вычислить арктангенс2 комплексного числа на ассемб


Автор: VAB 6.2.2013, 08:26
Приветствую!

Такая задача: 

В одном из регистров группы XMM (128-битный регистр для операций над парами чисел блока SSE2 P4 и выше) находится комплексное число.
Мне необходимо вычислить арктангенс2 по нему, т.е. найти угол: 
arg = atan(Im/Re);
Im и Re лежат в младших и старших 64 битах регистра XMM соответственно.
Какими командами это можно сделать?
Команды для нахождения аргумента для SSE2 я не нашел. 

Есть идея использовать математический сопроцессор, тогда получается:

FLD       (младшие 64 бита XMM0, мнимая часть) 
FLD       (старшие 64 бита XMM0, действительная часть) 
FPATAN  (какой-то 64-битный регистр)    

Но тут две проблемы:
1) я не знаю какие 64 битные регистры выбрать для частей и результата и как туда загрузить эти части из XMM0 
2) возможно, сопроцессор может не понять, что это тип double.

Помогите, пожалуйста, решить задачу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)