Muitas das bibliotecas C ++ mais conhecidas na ciência da computação, como Eigen , Trilinos e deal.II, usam o objeto padrão da biblioteca de cabeçalho de modelo C ++ std::complex<>
, para representar números complexos de ponto flutuante.
Na resposta de Jack Poulson a uma pergunta sobre construtores padrão, ele ressalta que ele possui sua própria implementação std::complex
no Elemental "por várias razões". Quais são esses motivos? Quais são as vantagens e desvantagens dessa abordagem?
z
é uma expressão lvalue do tipo cvstd::complex<T>
, em seguida,reinterpret_cast<cv T(&)[2]>(z)
ereinterpret_cast<cv T(&)[2]>(z)[0]
deve designar a parte realz
, ereinterpret_cast<cv T(&)[2]>(z)[1]
deve designar a parte imagináriaz
. Matrizes de números complexos também são abordadas.