oldexamplecode

Dependencies:   mbed

Committer:
rik
Date:
Fri Mar 24 11:22:30 2017 +0000
Revision:
0:6863633bf8a4
oldexamplecode;

Who changed what in which revision?

UserRevisionLine numberNew 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 }