La plupart des bibliothèques C ++ les plus connues en science informatique telles que Eigen , Trilinos et deal.II utilisent l'objet de bibliothèque d'en-tête de modèle C ++ standard std::complex<>
, pour représenter des nombres à virgule flottante complexes.
Dans la réponse de Jack Poulson à une question sur les constructeurs par défaut, il souligne qu'il a sa propre implémentation std::complex
dans Elemental "pour un certain nombre de raisons". Quelles sont ces raisons? Quels sont les avantages et les inconvénients de cette approche?
z
est une expression lvalue de type cvstd::complex<T>
alorsreinterpret_cast<cv T(&)[2]>(z)
etreinterpret_cast<cv T(&)[2]>(z)[0]
doit désigner la partie réelle dez
, etreinterpret_cast<cv T(&)[2]>(z)[1]
doit désigner la partie imaginaire dez
. Des tableaux de nombres complexes sont également traités.