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::complexin 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.