diff options
Diffstat (limited to 'rushs/tinyprintf/handling_complex')
| -rw-r--r-- | rushs/tinyprintf/handling_complex/complex.c | 51 | ||||
| -rw-r--r-- | rushs/tinyprintf/handling_complex/complex.h | 20 |
2 files changed, 71 insertions, 0 deletions
diff --git a/rushs/tinyprintf/handling_complex/complex.c b/rushs/tinyprintf/handling_complex/complex.c new file mode 100644 index 0000000..79a10be --- /dev/null +++ b/rushs/tinyprintf/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; +} diff --git a/rushs/tinyprintf/handling_complex/complex.h b/rushs/tinyprintf/handling_complex/complex.h new file mode 100644 index 0000000..c562810 --- /dev/null +++ b/rushs/tinyprintf/handling_complex/complex.h @@ -0,0 +1,20 @@ +#ifndef COMPLEX_H +#define COMPLEX_H + +struct complex +{ + float real; + float img; +}; + +// Print +void print_complex(struct complex a); + +// Operations +struct complex neg_complex(struct complex a); +struct complex add_complex(struct complex a, struct complex b); +struct complex sub_complex(struct complex a, struct complex b); +struct complex mul_complex(struct complex a, struct complex b); +struct complex div_complex(struct complex a, struct complex b); + +#endif /* !COMPLEX_H */ |
