#Complex Number exercice (C TRACK)
9 messages · Page 1 of 1 (latest)
#include <stdio.h>
#include <math.h>
typedef struct {
double a;
double b;
} complex_t;
complex_t c_add(complex_t z1, complex_t z2);
complex_t c_sub(complex_t a, complex_t b);
complex_t c_mul(complex_t a, complex_t b);
complex_t c_div(complex_t a, complex_t b);
double c_abs(complex_t x);
complex_t c_conjugate(complex_t x);
double c_real(complex_t x);
double c_imag(complex_t x);
complex_t c_exp(complex_t x);
complex_t c_add(complex_t z1, complex_t z2)
{
complex_t result;
result.a = z1.a + z2.a;
result.b = z1.b + z2.b;
return result;
}
complex_t c_sub(complex_t z1, complex_t z2)
{
complex_t result;
result.a = z1.a - z2.a;
result.b = z1.b - z2.b;
return result;
}
//Il faut utiliser la formule de multiplicaton (a+ib)(c+id)=(ac−bd)+i(ad+bc)
complex_t c_mul(complex_t z1, complex_t z2)
{
complex_t result;
result.a = (z1.a * z2.a) - (z1.b * z2.b);
result.b = (z1.a * z2.b) + (z1.b * z2.a);
return result;
}
//Y'a aussi une formule pour la division
complex_t c_div(complex_t z1, complex_t z2)
{
complex_t result;
double denom = z2.a * z2.a + z2.b * z2.b;
result.a = (z1.a * z2.a) + (z1.b * z2.b) / denom;
result.b = (z1.b * z2.a) - (z1.a * z2.b) / denom;
return result;
}
double c_abs(complex_t x)
{
return sqrt(x.a*x.a + x.b*x.b);
}
complex_t c_conjugate(complex_t x)
{
complex_t result;
result.a = x.a;
result.b = x.b;
return result;
}
double c_real(complex_t x)
{
return x.a;
}
double c_imag(complex_t x)
{
return x.b;
}
complex_t c_exp(complex_t x)
{
complex_t result;
result.a = exp(x.a) * cos(x.b);
result.b = exp(x.a) * sin(x.b);
return result;
}
This is all the functions i did
Do the tests pass? If not, what fails?
There is too much line
Maybe it's because I changed the default variable names?
The tests expect a struct called complex_t with at least two fields called real and imag. No test would pass if you have anything else
Lol i have to change everything