2011-10-19 1 views
6

Je veux représenter sqrt(-1) en C++, parce que j'essaie d'implémenter un algorithme FFT. Existe-t-il un bon moyen de représenter cela?Comment représenter sqrt (-1) en programmation?

+1

Il est intéressant de savoir pourquoi vous voudriez écrire une routine FFT vous-même plutôt que d'utiliser quelque chose comme [FFTW] (http://www.fftw.org /)? – Flexo

+0

juste je lis l'introduction de livres d'algorithme aux algorithmes (MIT presse), donc juste la formation plus –

+0

Vous pouvez toujours demander [Marvin] (http://kasmana.people.cofc.edu/MATHFICT/mfview.php?callnumber=mf458) (voir le dernier gros texte encadré en jaune au bas de la page) – Skizz

Répondre

17

Je suppose que vous êtes à la recherche #include <complex> par exemple:

std::complex<double> num(0,1); 

Vous pouvez réellement utiliser std::sqrt avec ce type complex pour calculer sqrt(-1):

#include <complex> 
#include <iostream> 

int main() { 
    const std::complex<double> result = std::sqrt(std::complex<double>(-1,0)); 
    std::cout << result << std::endl; 
} 

Pour wn=exp((2*pi*i)/n) vous pouvez faire:

const double pi = std::acos(-1.0); 
const std::complex<double> i(0,1); 

std::complex<double> wn = std::exp((2*pi*i)/double(n)); 
+0

Et 'complex i (0, 1);' est la valeur désirée. – Joren

+1

@Joren: Je pense qu'il a déjà dit que ... –

+0

une question que nous savons que, dans la méthode FFT wn = exp ((2 * pi * i)/n) alors comment serait-il? –