#include <stdio.h>
typedef struct
{
double real, imag;
} complex;
complex cadd(complex a, complex b)
{
complex add;
add.real = a.real + b.real;
add.imag = a.imag + b.imag;
return add;
}
complex csub(complex a, complex b)
{
complex sub;
sub.real = a.real - b.real;
sub.imag = a.imag - b.imag;
return sub;
}
complex cmul(complex a, complex b)
{
complex mul;
mul.real = a.real * b.real - a.imag * b.imag;
mul.imag = a.real * b.imag + a.imag * b.real;
return mul;
}
complex cdiv(complex a, complex b)
{
complex div;
div.real = (a.real * b.real + a.imag * b.imag) / (b.real * b.real + b.imag * b.imag);
div.imag = (a.imag * b.real - a.real * b.imag) / (b.real * b.real + b.imag * b.imag);
return div;
}
int main(void)
{
complex a={1.3, 2.5}, b={-2.7, -0.3}, add, sub, mul, div;
printf("a = %g + %gi\n", a.real, a.imag);
printf("b = %g + %gi\n", b.real, b.imag);
add = cadd(a, b);
sub = csub(a, b);
mul = cmul(a, b);
div = cdiv(a, b);
printf("a+b = %g + %gi\n", add.real, add.imag);
printf("a-b = %g + %gi\n", sub.real, sub.imag);
printf("a*b = %g + %gi\n", mul.real, mul.imag);
printf("a/b = %g + %gi\n", div.real, div.imag);
return 0;
}