/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S N O M B R E S C O M P L E X E S : */ /* */ /* */ /* Author of '$xrC/complexes.01$vv$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20130727095802). */ /* */ /*************************************************************************************************************************************/ typedef struct complexe { double reelle; double imaginaire; } complexe; #define Reelle(z) (z.reelle) #define Imaginaire(z) (z.imaginaire) #define Cinit(z,x1,y1) \ { \ Reelle(z) = x1; \ Imaginaire(z) = y1; \ } #define Cegal(z,z1) \ { \ Reelle(z) = Reelle(z1); \ Imaginaire(z) = Imaginaire(z1); \ } #define Csomme(z,z1,z2) \ { \ Reelle(z) = ADD2f(Reelle(z1),Reelle(z2)); \ Imaginaire(z) = ADD2f(Imaginaire(z1),Imaginaire(z2)); \ } #define Cproduit(z,z1,z2) \ { \ Reelle(z) = SOUSf(MUL2f(Reelle(z1),Reelle(z2)),MUL2f(Imaginaire(z1),Imaginaire(z2))); \ Imaginaire(z) = ADD2f(MUL2f(Reelle(z2),Imaginaire(z1)),MUL2f(Reelle(z1),Imaginaire(z2))); \ } #define Cmodule2(z) \ ADD2f(MUL2f(Reelle(z),Reelle(z)),MUL2f(Imaginaire(z),Imaginaire(z))) #define PETIT 1.0e-16 #define GRAND 1.0e32 #define deborde(x) \ { \ if (((x) < -PETIT) || ((x) > PETIT)) \ { \ if ((x) < -GRAND) \ { \ x = -GRAND; \ } \ else \ { \ if ((x) > GRAND) \ { \ x = GRAND; \ } \ else \ { \ } \ } \ } \ else \ { \ x = 0.0; \ } \ } #define Cdeborde(z) \ { \ deborde(Reelle(z)); \ deborde(Imaginaire(z)); \ }