From: baobrien Date: Sun, 4 Dec 2016 08:52:48 +0000 (+0000) Subject: Moved complex helper functions from fsk.c to comp_prim.h X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=e544ebb6a16a502184dd75913073f951fdb0426d;p=freetel-svn-tracking.git Moved complex helper functions from fsk.c to comp_prim.h git-svn-id: https://svn.code.sf.net/p/freetel/code@2920 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/src/comp_prim.h b/codec2-dev/src/comp_prim.h index af402c14..4d130bc4 100644 --- a/codec2-dev/src/comp_prim.h +++ b/codec2-dev/src/comp_prim.h @@ -89,4 +89,53 @@ inline static float cabsolute(COMP a) return sqrtf(powf(a.real, 2.0) + powf(a.imag, 2.0)); } +/* + * Euler's formula in a new convenient function + */ +inline static COMP comp_exp_j(float phi){ + COMP res; + res.real = cosf(phi); + res.imag = sinf(phi); + return res; +} + +/* + * Quick and easy complex 0 + */ +inline static COMP comp0(){ + COMP res; + res.real = 0; + res.imag = 0; + return res; +} + +/* + * Quick and easy complex subtract + */ +inline static COMP csub(COMP a, COMP b){ + COMP res; + res.real = a.real-b.real; + res.imag = a.imag-b.imag; + return res; +} + +/* + * Compare the magnitude of a and b. if |a|>|b|, return true, otw false. + * This needs no square roots + */ +inline static int comp_mag_gt(COMP a,COMP b){ + return ((a.real*a.real)+(a.imag*a.imag)) > ((b.real*b.real)+(b.imag*b.imag)); +} + +/* + * Normalize a complex number's magnitude to 1 + */ +inline static COMP comp_normalize(COMP a){ + COMP b; + float av = cabsolute(a); + b.real = a.real/av; + b.imag = a.imag/av; + return b; +} + #endif diff --git a/codec2-dev/src/fsk.c b/codec2-dev/src/fsk.c index 700437bf..ef64b67e 100644 --- a/codec2-dev/src/fsk.c +++ b/codec2-dev/src/fsk.c @@ -84,54 +84,6 @@ \*---------------------------------------------------------------------------*/ -/* - * Euler's formula in a new convenient function - */ -static inline COMP comp_exp_j(float phi){ - COMP res; - res.real = cosf(phi); - res.imag = sinf(phi); - return res; -} - -/* - * Quick and easy complex 0 - */ -static inline COMP comp0(){ - COMP res; - res.real = 0; - res.imag = 0; - return res; -} - -/* - * Quick and easy complex subtract - */ -static inline COMP csub(COMP a, COMP b){ - COMP res; - res.real = a.real-b.real; - res.imag = a.imag-b.imag; - return res; -} - -/* - * Compare the magnitude of a and b. if |a|>|b|, return true, otw false. - * This needs no square roots - */ -static inline int comp_mag_gt(COMP a,COMP b){ - return ((a.real*a.real)+(a.imag*a.imag)) > ((b.real*b.real)+(b.imag*b.imag)); -} - -/* - * Normalize a complex number's magnitude to 1 - */ -static inline COMP comp_normalize(COMP a){ - COMP b; - float av = sqrtf((a.real*a.real)+(a.imag*a.imag)); - b.real = a.real/av; - b.imag = a.imag/av; - return b; -} #ifdef USE_HANN_TABLE /*