Molte delle librerie C ++ più note nella scienza computazionale come Eigen , Trilinos e deal.II usano l'oggetto libreria standard C ++ template header std::complex<>
, per rappresentare numeri a virgola mobile complessi.
Nella risposta di Jack Poulson a una domanda sui costruttori predefiniti, sottolinea che ha una sua implementazione di std::complex
in Elemental "per una serie di ragioni". Quali sono questi motivi? Quali sono i vantaggi e gli svantaggi di questo approccio?
z
è un'espressione lvalue di tipo cvstd::complex<T>
poireinterpret_cast<cv T(&)[2]>(z)
ereinterpret_cast<cv T(&)[2]>(z)[0]
designa la parte reale diz
, ereinterpret_cast<cv T(&)[2]>(z)[1]
designa la parte immaginariaz
. Vengono anche indirizzate le matrici di numeri complessi.