typedef struct {
double real, imaginary;
} complex;
#define Re(x) ((x).real)
#define Im(x) ((x).imaginary)
complex ComplexMultiply (complex a, complex b)
{
complex product;
Re(product) = Re(a)*Re(b) - Im(a)*Im(b);
Im(product) = Re(a)*Im(b) + Im(a)*Re(b);
return product;
}