-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcomplex.c
85 lines (71 loc) · 2.12 KB
/
complex.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* complex.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: znichola <znichola@student.42lausanne.ch> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/27 09:46:01 by znichola #+# #+# */
/* Updated: 2022/12/01 15:17:54 by znichola ### ########.fr */
/* */
/* ************************************************************************** */
#include "fractol.h"
// c1 + c2 = (a1 + a2) + (b1 + b2)i
t_complex c_addition(t_complex c1, t_complex c2)
{
t_complex c;
c.a = c1.a + c2.a;
c.b = c1.b + c2.b;
return (c);
}
// c1 * c2 = (a1*a2 - b1*b2) + (a1*b2 + b1*a2)i
t_complex c_multiplication(t_complex c1, t_complex c2)
{
t_complex c;
c.a = c1.a * c2.a - c1.b * c2.b;
c.b = c1.a * c2.b + c1.b * c2.a;
return (c);
}
// c1 ^ 2 = (a1*a1 - b1*b1) + (a1*b1 + b1*a1)i
// c1^2 = (a^2 - b^2) + (2*a*b)i
t_complex c_power2(t_complex c1)
{
t_complex c;
c.a = c1.a * c1.a - c1.b * c1.b;
c.b = 2 * c1.a * c1.b;
return (c);
}
double c_length(t_complex c)
{
double ans;
ans = sqrt(c.a * c.a + c.b * c.b);
return (ans);
}
t_complex c_abs(t_complex c1)
{
t_complex c;
c.a = fabs(c1.a);
c.b = fabs(c1.b);
return (c);
}
// for later, this is some heavy math
// https://android.googlesource.com/
// platform/bionic/+/refs/heads/master/
// libm/upstream-freebsd/lib/msun/src/s_cpow.c
// double c_absa(t_complex c)
// {
// return (fabs(c_length(c)));
// }
// t_complex c_pow_n(t_complex c1, int pow)
// {
// double r;
// double theta;
// double absa;
// double arga;
// t_complex c;
// absa = c_absa(c1);
// if (absa = 0.0)
// return (ftc(fpoint(0.0, 0.0)));
// arga =
// r = c_length(c1);
// }