Salve a tutti ho trovato un problema che mi sta mandando in pappa, sto cercando errori simili da una buona oretta su internet ma a quanto pare nessuno ne ha scritto.
Sto scrivendo una classe che gestisca i numeri complessi e per l'esponenziale ho bisogno delle funzioni seno e coseno: questo è il codice di quel metodo
codice:
Complex Complex::exponentiation(const int &exponent) const
{
    //c^n = norm^n *(cos(n*fi)+ i sin(n*fi) ) <- questa è la formula

//this->norm() torna la norma del numero complesso
//ovvero sqrt(reale^2 + img^2)
    double normTo_n = pow(this->norm(),exponent);
    double newReal = cos(exponent*this->angleRadians())*normTo_n;
    //double newImg = sin(exponent*this->angleRadians())*normTo_n; //<-diventava 1.22

    double a = this->angleRadians();
    double fi = exponent*a;
    double seno = sin(fi);
    double newImg = seno*normTo_n;
    double pi = (2.0*asin(1.0));
    double senoDipi = sin(pi);
//<- qui ho messo lo step del debug
    return Complex(newReal, newImg);
}

//newReal e newImg sono i nuovi valori da assegnare alle componenti reale ed immaginaria di Complex
So che non ho bisogno di tutte queste variabili, le ho inserite solo perchè elevando (0+i) al quadrato la funzione non tornava -1+0i ma un risultato sbagliato, così ho distinto tutte le operazioni possibili ed ho eseguito il debug, ebbenne ho scoperto che il seno di pigreco torna 1.2!!
A parte il fatto che dovrebbe tornare 0, il risultato è maggiore di 1, quindi è doppiamente sbagliato!
Questi sono i risultati del debug facendo entrare:
Complex c= 0+i1;
exponent = 2;
codice:
Name    | Value   | Type
a           1.570     double
exponent 2           int
fi           3.141     double
newImg  1.224      double
newReal  -1         double
normTo_n 1          double
pi          3.141      double
seno      1.2246    double
senoDipi  1.2246   double
Non so che fare.. io non penso di aver fatto errori di sintassi, i valori calcolati sono tutti esatti [il complesso 0+i infatti ha un angolo di 90°, che moltiplicato per l'esponente (2) fa 180° che in radianti è piGreco (3.14)]
è proprio che il sin(piGreco) torna 1.22eccetera.
Vi è mai capitato?
Mi tocca riscrivere la funzione seno?
Consigli?
Magari qualcuno se lo può incollare sul proprio compilatore e dirmi se da lo stesso risultato?