Умножение комплексных чисел

Тема в разделе "WASM.BEGINNERS", создана пользователем vital792, 10 июл 2010.

  1. vital792

    vital792 New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2010
    Сообщения:
    3
    Здравствуйте крутые програмеры! У меня такой вопрос - как оптимальнее умножить 2 комплексных числа используя инструкции sse2
    movapd xmm0, qword ptr [eax] ; *p1r | *p1i
    movapd xmm1, qword ptr [eax+ebx*8] ; *p2r | *p2i
    загрузил 2 числа. Далее надо выполнить следующую последовательность действий:
    tr = p1r * p2r - p1i * p2i;
    ti = p1r * p2i + p1i * p2r;

    то есть перемножить числа:
    movapd xmm2, xmm0
    mulpd xmm2, xmm1
    вычесть из младшей половины старшую
    поменять местами старшую и младшую половины xmm1
    опять перемножить
    сложить
    Как это все лучше всего осуществить? или есть более простой способ чем я описал?
     
  2. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    vital792
    SSE3 покатит? Там совсем просто будет.
     
  3. vital792

    vital792 New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2010
    Сообщения:
    3
    можно и sse3. Кстати нигде не нашел документации по sse3 инструкциям - может плохо искал?
     
  4. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    vital792
    http://intel.com
     
  5. vital792

    vital792 New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2010
    Сообщения:
    3
    Спасибо - уже сделал. Причем в 2-х выриантах и с sse2 и sse3 - последний вариант работает почти в 2 раза быстрее (есть такая волшебная команда addsubpd - как раз наверно для этого и создавали)
     
  6. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    vital792
    да там их всего-то не больше десятка.

    Именно :)
    А точнее содрали с 3DNow!+ :):)
    Хотя я не помню точно, но 3днау кажется тоже с чего-то содрали :):):)