diff options
Diffstat (limited to 'graphs/piscine/handling_complex/complex.c')
| -rw-r--r-- | graphs/piscine/handling_complex/complex.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/graphs/piscine/handling_complex/complex.c b/graphs/piscine/handling_complex/complex.c new file mode 100644 index 0000000..79a10be --- /dev/null +++ b/graphs/piscine/handling_complex/complex.c @@ -0,0 +1,51 @@ +#include "complex.h" + +#include <stdio.h> + +void print_complex(struct complex a) +{ + printf("complex(%.2f ", a.real); + + if (a.img < 0) + { + printf("- %.2fi", -a.img); + } + else + { + printf("+ %.2fi", a.img); + } + printf(")\n"); +} + +struct complex neg_complex(struct complex a) +{ + struct complex z = { -a.real, -a.img }; + return z; +} + +struct complex add_complex(struct complex a, struct complex b) +{ + struct complex z = { a.real + b.real, a.img + b.img }; + return z; +} + +struct complex sub_complex(struct complex a, struct complex b) +{ + return add_complex(a, neg_complex(b)); +} + +struct complex mul_complex(struct complex a, struct complex b) +{ + struct complex z = { a.real * b.real - a.img * b.img, + a.real * b.img + a.img * b.real }; + return z; +} + +struct complex div_complex(struct complex a, struct complex b) +{ + struct complex z = { + (a.real * b.real + a.img * b.img) / (b.real * b.real + b.img * b.img), + (a.img * b.real - a.real * b.img) / (b.real * b.real + b.img * b.img) + }; + return z; +} |
