Chiedo consiglio a chi è certamente più esperto di me per migliorare il codice di questa a funzione rendendola il più possibile effeciente in quanto mi ritrovo a doverla richiamare milioni di volte (quindi volendo se ci sono suggerimenti per migliorare anche sotto questo aspetto sono ben accetti). La funzione è la seguente:
codice:#define PI 3.1415926535898 #define PI_2 1.5707963267949 void distance( complex <double> &Z, double &Z_dist, const complex <double> &D ) { double theta = 0; if( !Z.real() ) { if( Z.imag() > 0 ) theta += PI_2; else theta -= PI_2; } else if( Z.real() < 0 ) theta += atan( Z.imag() / Z.real() ) + PI; else theta += atan( Z.imag() / Z.real() ) + 2*PI; double temp = pow(Z_dist, exponent); Z = complex <double> ( temp * cos(theta*exponent) + D.real(), temp * sin(theta*exponent) + D.imag() ); Z_dist = sqrt( Z.real()*Z.real() + Z.imag()*Z.imag() ); }
Sostituire gli oggetti complex con delle apposite strutture può essere un'idea, ma quanto effettivamente renderebbe più efficiente la funzione? E a discapito di cosa?
Grazie.

Rispondi quotando
)porterebbe un guadagno di prestazioni a mio parere.
