mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 09:48:45 -05:00
libfreedv: do not taek comp_prim.h from Codec2 library
This commit is contained in:
parent
d3030b37eb
commit
7d9d53c4f0
@ -26,6 +26,7 @@ set(freedv_HEADERS
|
||||
codec2_ofdm.h
|
||||
cohpsk_defs.h
|
||||
cohpsk_internal.h
|
||||
comp_prim.h
|
||||
defines.h
|
||||
fdmdv_internal.h
|
||||
fdv_arm_math.h
|
||||
|
@ -42,7 +42,7 @@
|
||||
#include "cohpsk_internal.h"
|
||||
#include "fdmdv_internal.h"
|
||||
#include "pilots_coh.h"
|
||||
#include "codec2/comp_prim.h"
|
||||
#include "comp_prim.h"
|
||||
#include "kiss_fft.h"
|
||||
#include "linreg.h"
|
||||
#include "rn_coh.h"
|
||||
|
149
libfreedv/comp_prim.h
Normal file
149
libfreedv/comp_prim.h
Normal file
@ -0,0 +1,149 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
|
||||
FILE........: comp_prim.h
|
||||
AUTHOR......: David Rowe
|
||||
DATE CREATED: Marh 2015
|
||||
|
||||
Complex number maths primitives.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
Copyright (C) 2015 David Rowe
|
||||
|
||||
All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License version 2.1, as
|
||||
published by the Free Software Foundation. This program is
|
||||
distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __COMP_PRIM__
|
||||
#define __COMP_PRIM__
|
||||
|
||||
#include <math.h>
|
||||
#include "codec2/comp.h"
|
||||
|
||||
namespace FreeDV
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
|
||||
FUNCTIONS
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
inline static COMP cneg(COMP a)
|
||||
{
|
||||
COMP res;
|
||||
|
||||
res.real = -a.real;
|
||||
res.imag = -a.imag;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
inline static COMP cconj(COMP a)
|
||||
{
|
||||
COMP res;
|
||||
|
||||
res.real = a.real;
|
||||
res.imag = -a.imag;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
inline static COMP cmult(COMP a, COMP b)
|
||||
{
|
||||
COMP res;
|
||||
|
||||
res.real = a.real*b.real - a.imag*b.imag;
|
||||
res.imag = a.real*b.imag + a.imag*b.real;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
inline static COMP fcmult(float a, COMP b)
|
||||
{
|
||||
COMP res;
|
||||
|
||||
res.real = a*b.real;
|
||||
res.imag = a*b.imag;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
inline static COMP cadd(COMP a, COMP b)
|
||||
{
|
||||
COMP res;
|
||||
|
||||
res.real = a.real + b.real;
|
||||
res.imag = a.imag + b.imag;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
inline static float cabsolute(COMP a)
|
||||
{
|
||||
return sqrt(pow(a.real, 2.0) + pow(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;
|
||||
}
|
||||
|
||||
} // FreeDV
|
||||
|
||||
#endif
|
@ -41,7 +41,7 @@
|
||||
|
||||
#include "fdmdv_internal.h"
|
||||
#include "codec2_fdmdv.h"
|
||||
#include "codec2/comp_prim.h"
|
||||
#include "comp_prim.h"
|
||||
#include "rn.h"
|
||||
#include "rxdec_coeff.h"
|
||||
#include "test_bits.h"
|
||||
|
@ -54,7 +54,7 @@
|
||||
#include "libfreedv.h"
|
||||
#include "freedv_api_internal.h"
|
||||
#include "freedv_vhf_framing.h"
|
||||
#include "codec2/comp_prim.h"
|
||||
#include "comp_prim.h"
|
||||
#include "freedv_filter.h"
|
||||
|
||||
#include "codec2_ofdm.h"
|
||||
|
@ -70,7 +70,7 @@
|
||||
#include <math.h>
|
||||
|
||||
#include "fsk.h"
|
||||
#include "codec2/comp_prim.h"
|
||||
#include "comp_prim.h"
|
||||
#include "kiss_fftr.h"
|
||||
#include "modem_probe.h"
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
#include <math.h>
|
||||
|
||||
#include "linreg.h"
|
||||
#include "codec2/comp_prim.h"
|
||||
#include "comp_prim.h"
|
||||
|
||||
namespace FreeDV
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user