Ceci est une ancienne révision du document !
Utilisation des nombres complexes
sur nemo, penser à choisir la dernière version du compilateur:
nemo-henry% module load ss12
La doc du compilateur C++ et des librairies fournies est ici
On peut partir de l'exemple, et pour compiler:
#include <stdio.h>
#include <complex>
#include <iostream>
int
main()
{
typedef std ::complex < float >complex;
complex z(1, 2), zz(3, 4), I(0, 1);
complex zzz = z + zz;
//cout << zzz << std::endl;
//ne marche pas avec CC, l 'operateur << n' a pas ete surcharge.
std::cout << real(zzz) << std::endl;
std::cout << imag(zzz) << std::endl;
std::cout << norm(zzz) << std::endl;
std::cout << abs(zzz) << std::endl;
std::cout << I * I << std::endl;
std::cout << sqrt(complex(-1.)) << std::endl;
std::cout << " OK !" << std::endl;
}
nemo-henry% CC -m64 -library=stlport4 -library=complex comp.C
nemo-henry% ldd comp
libstlport.so.1 => /opt/studio12/SUNWspro/lib/stlport4/amd64/libstlport.so.1
librt.so.1 => /lib/64/librt.so.1
libCrun.so.1 => /usr/lib/64/libCrun.so.1
libm.so.2 => /lib/64/libm.so.2
libc.so.1 => /lib/64/libc.so.1
libaio.so.1 => /lib/64/libaio.so.1
libmd.so.1 => /lib/64/libmd.so.1
ou bien, avec gcc:
nemo-henry% g++ -m64 comp.C -lm -o comp
nemo-henry% ldd comp
libstdc++.so.6 => /usr/sfw/lib/amd64/libstdc++.so.6
libm.so.2 => /lib/64/libm.so.2
libgcc_s.so.1 => /usr/sfw/lib/amd64/libgcc_s.so.1
libc.so.1 => /lib/64/libc.so.1