Комплексные числа. Как предсталять в памяти? Как работать с ними?

Тема в разделе "WASM.A&O", создана пользователем God_Father, 27 фев 2008.

  1. God_Father

    God_Father New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    99
    После долгих поисков, не нашел описания как работать с комплексными числами, и поэтому спрашиваю вас.
    Меня интересует чисто математическая сторона данного вопроса.
    Как программно получать значения выражений типа :
    sqrt(-10)
    log(-10)
    arcsin(-10)
    Меня интересует какие модули под асм есть для работы с комплексными числами?
    Под делфу прошу не предлагать.
     
  2. ant_man

    ant_man New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2004
    Сообщения:
    23
    комплексные числа представляются парой вещественных.
     
  3. God_Father

    God_Father New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    99
    Так что под комплексное число мне память зарезервировать как под два вещественных?
    Не слишком ли большая растрата памяти, особенно когда массивы?
     
  4. ant_man

    ant_man New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2004
    Сообщения:
    23
    Даже не знаю что и сказать...
    Предложите свой вариант хранения двух чисел в памяти, но только чур чтоб места занимали как одно.
     
  5. domov0i

    domov0i New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    74
    спорный вопрос...
    я бы (если С++) создал класс для работы с комплексными числами...
    работал с ними как с данными типа double...
    ...хотя многовато для них памяти получается(double)...
     
  6. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    )
    ant_man 100% прав.

    Модуль процессора SSE3 для таких целей придумали. P.s. и делфа тут непричём.
     
  7. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Код (Text):
    1. #include <complex>
    2. #include <iostream>
    3. #include <math.h>
    4. using namespace std;
    5.  
    6. template <class _T> complex<_T> casin(complex<_T> x)
    7. {
    8.   complex<_T> i(0,1);
    9.   complex<_T> mi1(-1,0); //-1
    10.   complex<_T> pl1(1,0); //1
    11.   return mi1*i*log(i*x+sqrt(pl1-x*x));
    12. }
    13.  
    14. template <class _T> complex<_T> cacos(complex<_T> x)
    15. {
    16.   complex<_T> i(0,1);
    17.   complex<_T> mi1(-1,0); //-1
    18.   complex<_T> pl1(1,0); //1
    19.   return mi1*i*log(x+sqrt(x*x-pl1));
    20. }
    21.  
    22. int main ()
    23. {
    24.      complex<double> ctemp(-10,0.0);
    25.      cout<< "complex sqrt "<< sqrt(ctemp)<<endl;
    26.      cout<< "complex log "<< log(ctemp)<<endl;
    27.      cout<< "complex asin "<< casin(ctemp)<<endl;
    28.      cout<< "complex acos "<< cacos(ctemp)<<endl;
    29. }
     
  8. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
  9. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    УПС. Не по теме выступил.