Re[4]: std::complex
От: m.a.smirnoff  
Дата: 07.11.07 19:04
Оценка:
Здравствуйте, Erop, Вы писали:

E>AFAIK сейчас таких реализаций, которые несовместимы с представлением как пара double не бывает. Но никто не мешает им быть...

E>Ну а про фиг там или не фиг, так это я про то, что на платформе комплексное число может быть представлено как-то так, что поля "вещественная часть" может и не быть в явном виде.
E>Вдруг, например, порядки будут храниться в такой реализиции отдельно, а мантисы отдельно?

Даже если предположить существование аппаратной платформы, поддерживающей на уровне железа работу с комплексными числами, и даже ежели представление у них не декартово, я не вижу ни каких преимуществ текущей реализации перед реализацией с двумя перегруженными методами, как я предлагал выше, особенно если учесть, что класс и функции окружения разрабатывались именно для работы с декартовым представлением.

E>>>Хотя, стоит, ИМХО, попробовать во что таки компилируется
E>>>template<typename T> set_imag( std::complex<T>& dst,  T imag )
E>>>{
E>>>    dst = std::complex( dst.real(), imag );
E>>>}

E>>>Очень может быть, что оно хорошо компилируется и real часть не переписывает лишний раз...

MAS>>Что-то мне подсказывает что врядли, однако лезть в получивший ся бинарь счас не очень хочется. Может когда времени будет побольше посмотрю, что из этого безобразия получается.


E>Ну в целом можешь подумать во что это таки скомпилируется...

E>ИМХО во что-то типа такого:
E>
[псевдокод]
E>загрузить в регистр 1 из dst.re
E>загрузить в регистр 2 из imag
E>записать из регистра 1 в dst.re
E>записать из регистра 2 в dst.im
E>[/псевдокод]


E>Казалось бы, не такая уж нереальная задачка для оптимизатора выбросить выделенные строки...


Это все гадание на кофейной гуще, и очень сильно зависит от оптимизатора и целевой платформы. Чего бы мне как раз не хотелось.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.