oldexamplecode
Dependencies: mbed
complexmath.cpp@0:6863633bf8a4, 2017-03-24 (annotated)
- Committer:
- rik
- Date:
- Fri Mar 24 11:22:30 2017 +0000
- Revision:
- 0:6863633bf8a4
oldexamplecode;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rik | 0:6863633bf8a4 | 1 | |
rik | 0:6863633bf8a4 | 2 | #include "complexmath.h" |
rik | 0:6863633bf8a4 | 3 | |
rik | 0:6863633bf8a4 | 4 | // Complex adition and multiplication |
rik | 0:6863633bf8a4 | 5 | complex_num complex_add(complex_num A, complex_num B){ |
rik | 0:6863633bf8a4 | 6 | A.imaginary += B.imaginary; |
rik | 0:6863633bf8a4 | 7 | A.real += B.real; |
rik | 0:6863633bf8a4 | 8 | return A; |
rik | 0:6863633bf8a4 | 9 | } |
rik | 0:6863633bf8a4 | 10 | complex_num complex_multiply(complex_num A, complex_num B){ |
rik | 0:6863633bf8a4 | 11 | complex_num C; |
rik | 0:6863633bf8a4 | 12 | C.real = A.real*B.real - A.imaginary*B.imaginary; |
rik | 0:6863633bf8a4 | 13 | C.imaginary = A.imaginary*B.real + A.real*B.imaginary; |
rik | 0:6863633bf8a4 | 14 | return C; |
rik | 0:6863633bf8a4 | 15 | } |
rik | 0:6863633bf8a4 | 16 | |
rik | 0:6863633bf8a4 | 17 | // Retrieve the phase and magnitude of a complex number (polar form) |
rik | 0:6863633bf8a4 | 18 | float complex_phase(complex_num A){ |
rik | 0:6863633bf8a4 | 19 | return(lut_cos(A.imaginary)/lut_sin(A.real)); |
rik | 0:6863633bf8a4 | 20 | } |
rik | 0:6863633bf8a4 | 21 | float complex_magnitude(complex_num A){ |
rik | 0:6863633bf8a4 | 22 | return sqrt(A.real*A.real + A.imaginary*A.imaginary); |
rik | 0:6863633bf8a4 | 23 | } |
rik | 0:6863633bf8a4 | 24 | |
rik | 0:6863633bf8a4 | 25 | // Transform polar form to a complex number |
rik | 0:6863633bf8a4 | 26 | complex_num complex_transform(float phase, float magnitude){ |
rik | 0:6863633bf8a4 | 27 | complex_num A; |
rik | 0:6863633bf8a4 | 28 | A.real = magnitude*lut_cos(phase); |
rik | 0:6863633bf8a4 | 29 | A.imaginary = magnitude*lut_sin(phase); |
rik | 0:6863633bf8a4 | 30 | return A; |
rik | 0:6863633bf8a4 | 31 | } |
rik | 0:6863633bf8a4 | 32 | |
rik | 0:6863633bf8a4 | 33 | // Complex conjugate |
rik | 0:6863633bf8a4 | 34 | complex_num complex_conjugate(complex_num A){ |
rik | 0:6863633bf8a4 | 35 | A.imaginary = -A.imaginary; |
rik | 0:6863633bf8a4 | 36 | return A; |
rik | 0:6863633bf8a4 | 37 | } |