Updated Windows liquid-dsp binaries to master using GCC 9.30

This commit is contained in:
vsonnier 2020-04-14 19:05:28 +02:00
parent d2f9333523
commit 60fa038549
15 changed files with 4901 additions and 4767 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2007 - 2019 Joseph Gaeddert
* Copyright (c) 2007 - 2020 Joseph Gaeddert
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@ -50,7 +50,7 @@ extern "C" {
//
// Compile-time version numbers
//
//
// LIQUID_VERSION = "X.Y.Z"
// LIQUID_VERSION_NUMBER = (X*1000000 + Y*1000 + Z)
//
@ -75,7 +75,7 @@ int liquid_libversion_number(void);
#define LIQUID_CONCAT(prefix, name) prefix ## name
#define LIQUID_VALIDATE_INPUT
/*
/*
* Compile-time complex data type definitions
*
* Default: use the C99 complex data type, otherwise
@ -95,7 +95,7 @@ int liquid_libversion_number(void);
LIQUID_DEFINE_COMPLEX(float, liquid_float_complex);
LIQUID_DEFINE_COMPLEX(double, liquid_double_complex);
//
//
// MODULE : agc (automatic gain control)
//
@ -781,7 +781,7 @@ LIQUID_DOTPROD_DEFINE_API(LIQUID_DOTPROD_MANGLE_CRCF,
float,
liquid_float_complex)
//
//
// sum squared methods
//
@ -1098,7 +1098,7 @@ typedef enum {
LIQUID_FEC_HAMMING74, // Hamming (7,4) block code, r1/2 (really 4/7)
LIQUID_FEC_HAMMING84, // Hamming (7,4) with extra parity bit, r1/2
LIQUID_FEC_HAMMING128, // Hamming (12,8) block code, r2/3
LIQUID_FEC_GOLAY2412, // Golay (24,12) block code, r1/2
LIQUID_FEC_SECDED2216, // SEC-DED (22,16) block code, r8/11
LIQUID_FEC_SECDED3932, // SEC-DED (39,32) block code
@ -1202,7 +1202,7 @@ void fec_decode_soft(fec _q,
unsigned char * _msg_enc,
unsigned char * _msg_dec);
//
//
// Packetizer
//
@ -1362,8 +1362,8 @@ typedef enum {
LIQUID_FFT_UNKNOWN = 0, // unknown transform type
// regular complex one-dimensional transforms
LIQUID_FFT_FORWARD = +1, // complex one-dimensional FFT
LIQUID_FFT_BACKWARD = -1, // complex one-dimensional inverse FFT
LIQUID_FFT_FORWARD = +1, // complex one-dimensional FFT
LIQUID_FFT_BACKWARD = -1, // complex one-dimensional inverse FFT
// discrete cosine transforms
LIQUID_FFT_REDFT00 = 10, // real one-dimensional DCT-I
@ -1469,7 +1469,7 @@ LIQUID_FFT_DEFINE_API(LIQUID_FFT_MANGLE_FLOAT,float,liquid_float_complex)
// int _flags);
//
//
// spectral periodogram
//
@ -1516,8 +1516,8 @@ void SPGRAM(_reset)(SPGRAM() _q); \
/* Print internal state of the object to stdout */ \
void SPGRAM(_print)(SPGRAM() _q); \
\
/* Set the forgetting factor (filter bandwidth) for accumulating */ \
/* independent transform squared magnitude outputs. */ \
/* Set the filter bandwidth for accumulating independent transform */ \
/* squared magnitude outputs. */ \
/* This is used to compute a running time-average power spectral */ \
/* density output. */ \
/* The value of _alpha determines how the power spectral estimate is */ \
@ -1534,6 +1534,10 @@ void SPGRAM(_print)(SPGRAM() _q); \
int SPGRAM(_set_alpha)(SPGRAM() _q, \
float _alpha); \
\
/* Get the filter bandwidth for accumulating independent transform */ \
/* squared magnitude outputs. */ \
float SPGRAM(_get_alpha)(SPGRAM() _q); \
\
/* Set the center frequency of the received signal. */ \
/* This is for display purposes only when generating the output image. */ \
/* _q : spectral periodogram object */ \
@ -1569,9 +1573,6 @@ unsigned long long int SPGRAM(_get_num_transforms)(SPGRAM() _q); \
/* Get number of transforms processed since object was created */ \
unsigned long long int SPGRAM(_get_num_transforms_total)(SPGRAM() _q); \
\
/* Get forgetting factor (filter bandwidth) */ \
float SPGRAM(_get_alpha)(SPGRAM() _q); \
\
/* Push a single sample into the object, executing internal transform */ \
/* as necessary. */ \
/* _q : spgram object */ \
@ -1623,7 +1624,7 @@ LIQUID_SPGRAM_DEFINE_API(LIQUID_SPGRAM_MANGLE_FLOAT,
liquid_float_complex,
float)
//
//
// asgram : ascii spectral periodogram
//
@ -1709,7 +1710,7 @@ LIQUID_ASGRAM_DEFINE_API(LIQUID_ASGRAM_MANGLE_FLOAT,
liquid_float_complex,
float)
//
//
// spectral periodogram waterfall
//
@ -2495,7 +2496,7 @@ FIRFILT() FIRFILT(_create_kaiser)(unsigned int _n, \
float _As, \
float _mu); \
\
/* Create object from square-root Nyquist prototype */ \
/* Create object from square-root Nyquist prototype. */ \
/* The filter length will be \(2 k m + 1 \) samples long with a delay */ \
/* of \( k m + 1 \) samples. */ \
/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \
@ -2509,6 +2510,14 @@ FIRFILT() FIRFILT(_create_rnyquist)(int _type, \
float _beta, \
float _mu); \
\
/* Create object from Parks-McClellan algorithm prototype */ \
/* _h_len : filter length, _h_len > 0 */ \
/* _fc : cutoff frequency, 0 < _fc < 0.5 */ \
/* _As : stop-band attenuation [dB], _As > 0 */ \
FIRFILT() FIRFILT(_create_firdespm)(unsigned int _h_len, \
float _fc, \
float _As); \
\
/* Create rectangular filter prototype; that is */ \
/* \( \vec{h} = \{ 1, 1, 1, \ldots 1 \} \) */ \
/* _n : length of filter [samples], 0 < _n <= 1024 */ \
@ -3183,7 +3192,7 @@ LIQUID_FIRPFB_DEFINE_API(LIQUID_FIRPFB_MANGLE_CCCF,
liquid_float_complex,
liquid_float_complex)
//
//
// Interpolators
//
@ -3231,6 +3240,16 @@ FIRINTERP() FIRINTERP(_create_prototype)(int _type, \
float _beta, \
float _dt); \
\
/* Create linear interpolator object */ \
/* _M : interpolation factor, _M > 1 */ \
FIRINTERP() FIRINTERP(_create_linear)(unsigned int _M); \
\
/* Create window interpolator object */ \
/* _M : interpolation factor, _M > 1 */ \
/* _m : filter semi-length, _m > 0 */ \
FIRINTERP() FIRINTERP(_create_window)(unsigned int _M, \
unsigned int _m); \
\
/* Destroy firinterp object, freeing all internal memory */ \
void FIRINTERP(_destroy)(FIRINTERP() _q); \
\
@ -3392,7 +3411,7 @@ LIQUID_IIRINTERP_DEFINE_API(LIQUID_IIRINTERP_MANGLE_CCCF,
liquid_float_complex,
liquid_float_complex)
//
//
// Decimators
//
@ -3597,7 +3616,7 @@ LIQUID_IIRDECIM_DEFINE_API(LIQUID_IIRDECIM_MANGLE_CCCF,
//
//
// Half-band resampler
//
#define LIQUID_RESAMP2_MANGLE_RRRF(name) LIQUID_CONCAT(resamp2_rrrf,name)
@ -3707,7 +3726,7 @@ LIQUID_RESAMP2_DEFINE_API(LIQUID_RESAMP2_MANGLE_CCCF,
liquid_float_complex)
//
//
// Rational resampler
//
#define LIQUID_RRESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(rresamp_rrrf,name)
@ -3856,7 +3875,7 @@ LIQUID_RRESAMP_DEFINE_API(LIQUID_RRESAMP_MANGLE_CCCF,
liquid_float_complex)
//
//
// Arbitrary resampler
//
#define LIQUID_RESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(resamp_rrrf,name)
@ -3975,7 +3994,7 @@ LIQUID_RESAMP_DEFINE_API(LIQUID_RESAMP_MANGLE_CCCF,
liquid_float_complex)
//
//
// Multi-stage half-band resampler
//
@ -4055,7 +4074,7 @@ LIQUID_MSRESAMP2_DEFINE_API(LIQUID_MSRESAMP2_MANGLE_CCCF,
liquid_float_complex)
//
//
// Multi-stage arbitrary resampler
//
#define LIQUID_MSRESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(msresamp_rrrf,name)
@ -4122,7 +4141,7 @@ LIQUID_MSRESAMP_DEFINE_API(LIQUID_MSRESAMP_MANGLE_CCCF,
liquid_float_complex)
//
//
// Symbol timing recovery (symbol synchronizer)
//
#define LIQUID_SYMSYNC_MANGLE_RRRF(name) LIQUID_CONCAT(symsync_rrrf,name)
@ -4618,6 +4637,7 @@ void qpilotsync_execute(qpilotsync _q,
float qpilotsync_get_dphi(qpilotsync _q);
float qpilotsync_get_phi (qpilotsync _q);
float qpilotsync_get_gain(qpilotsync _q);
float qpilotsync_get_evm (qpilotsync _q);
//
@ -4640,8 +4660,8 @@ void framegen64_print(framegen64 _q);
// generate frame
// _q : frame generator object
// _header : 8-byte header data
// _payload : 64-byte payload data
// _header : 8-byte header data, NULL for random
// _payload : 64-byte payload data, NULL for random
// _frame : output frame samples [size: LIQUID_FRAME64_LEN x 1]
void framegen64_execute(framegen64 _q,
unsigned char * _header,
@ -4678,6 +4698,10 @@ void framesync64_debug_enable(framesync64 _q);
void framesync64_debug_disable(framesync64 _q);
void framesync64_debug_print(framesync64 _q, const char * _filename);
// frame data statistics
void framesync64_reset_framedatastats(framesync64 _q);
framedatastats_s framesync64_get_framedatastats (framesync64 _q);
#if 0
// advanced modes
void framesync64_set_csma_callbacks(framesync64 _q,
@ -4815,7 +4839,7 @@ void flexframesync_debug_print(flexframesync _q,
// bpacket : binary packet suitable for data streaming
//
//
//
// bpacket generator/encoder
//
typedef struct bpacketgen_s * bpacketgen;
@ -4860,7 +4884,7 @@ void bpacketgen_encode(bpacketgen _q,
unsigned char * _msg_dec,
unsigned char * _packet);
//
//
// bpacket synchronizer/decoder
//
typedef struct bpacketsync_s * bpacketsync;
@ -5070,7 +5094,7 @@ void dsssframesync_debug_enable(dsssframesync _q);
void dsssframesync_debug_disable(dsssframesync _q);
void dsssframesync_debug_print(dsssframesync _q, const char * _filename);
//
//
// OFDM flexframe generator
//
@ -5147,7 +5171,7 @@ int ofdmflexframegen_write(ofdmflexframegen _q,
liquid_float_complex * _buf,
unsigned int _buf_len);
//
//
// OFDM flex frame synchronizer
//
@ -5194,6 +5218,10 @@ float ofdmflexframesync_get_rssi(ofdmflexframesync _q);
// query the received carrier offset estimate
float ofdmflexframesync_get_cfo(ofdmflexframesync _q);
// frame data statistics
void ofdmflexframesync_reset_framedatastats(ofdmflexframesync _q);
framedatastats_s ofdmflexframesync_get_framedatastats (ofdmflexframesync _q);
// set the received carrier offset estimate
void ofdmflexframesync_set_cfo(ofdmflexframesync _q, float _cfo);
@ -5448,7 +5476,7 @@ int detector_cccf_correlate(detector_cccf _q,
float * _gamma_hat);
//
//
// symbol streaming for testing (no meaningful data, just symbols)
//
#define LIQUID_SYMSTREAM_MANGLE_CFLOAT(name) LIQUID_CONCAT(symstreamcf,name)
@ -5507,7 +5535,7 @@ float SYMSTREAM(_get_gain)(SYMSTREAM() _q); \
void SYMSTREAM(_write_samples)(SYMSTREAM() _q, \
TO * _buf, \
unsigned int _buf_len); \
LIQUID_SYMSTREAM_DEFINE_API(LIQUID_SYMSTREAM_MANGLE_CFLOAT, liquid_float_complex)
@ -5680,13 +5708,13 @@ int MSOURCE(_get_frequency)(MSOURCE() _q, \
void MSOURCE(_write_samples)(MSOURCE() _q, \
TO * _buf, \
unsigned int _buf_len); \
LIQUID_MSOURCE_DEFINE_API(LIQUID_MSOURCE_MANGLE_CFLOAT, liquid_float_complex)
//
//
// Symbol tracking: AGC > symsync > EQ > carrier recovery
//
#define LIQUID_SYMTRACK_MANGLE_RRRF(name) LIQUID_CONCAT(symtrack_rrrf,name)
@ -5772,7 +5800,7 @@ void SYMTRACK(_execute_block)(SYMTRACK() _q, \
unsigned int _nx, \
TO * _y, \
unsigned int * _ny); \
LIQUID_SYMTRACK_DEFINE_API(LIQUID_SYMTRACK_MANGLE_RRRF,
float,
float,
@ -5851,11 +5879,11 @@ unsigned int liquid_nextpow2(unsigned int _x);
// (n choose k) = n! / ( k! (n-k)! )
float liquid_nchoosek(unsigned int _n, unsigned int _k);
//
//
// Windowing functions
//
// Modulation schemes available
// number of window functions available, including "unknown" type
#define LIQUID_WINDOW_NUM_FUNCTIONS (10)
// prototypes
@ -5882,73 +5910,85 @@ void liquid_print_windows();
// returns window type based on input string
liquid_window_type liquid_getopt_str2window(const char * _str);
// Kaiser-Bessel derived window (single sample)
// _n : index (0 <= _n < _N)
// _N : length of filter (must be even)
// _beta : Kaiser window parameter (_beta > 0)
float liquid_kbd(unsigned int _n, unsigned int _N, float _beta);
// Kaiser-Bessel derived window (full window)
// _n : length of filter (must be even)
// _beta : Kaiser window parameter (_beta > 0)
// _w : resulting window
void liquid_kbd_window(unsigned int _n, float _beta, float * _w);
// generic window function given type
// _type : window type, e.g. LIQUID_WINDOW_KAISER
// _i : window index, _i in [0,_wlen-1]
// _wlen : length of window
// _arg : window-specific argument, if required
float liquid_windowf(liquid_window_type _type,
unsigned int _i,
unsigned int _wlen,
float _arg);
// Kaiser window
// _n : window index
// _N : full window length
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
// _beta : Kaiser-Bessel window shape parameter
// _dt : fractional sample offset
float kaiser(unsigned int _n,
unsigned int _N,
float _beta,
float _dt);
float liquid_kaiser(unsigned int _i,
unsigned int _wlen,
float _beta);
// Hamming window
// _n : window index
// _N : full window length
float hamming(unsigned int _n,
unsigned int _N);
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
float liquid_hamming(unsigned int _i,
unsigned int _wlen);
// Hann window
// _n : window index
// _N : full window length
float hann(unsigned int _n,
unsigned int _N);
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
float liquid_hann(unsigned int _i,
unsigned int _wlen);
// Blackman-harris window
// _n : window index
// _N : full window length
float blackmanharris(unsigned int _n,
unsigned int _N);
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
float liquid_blackmanharris(unsigned int _i,
unsigned int _wlen);
// 7th order Blackman-harris window
// _n : window index
// _N : full window length
float blackmanharris7(unsigned int _n,
unsigned int _N);
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
float liquid_blackmanharris7(unsigned int _i,
unsigned int _wlen);
// Flat-top window
// _n : window index
// _N : full window length
float flattop(unsigned int _n,
unsigned int _N);
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
float liquid_flattop(unsigned int _i,
unsigned int _wlen);
// Triangular window
// _n : window index
// _N : full window length
// _L : triangle length, _L in {_N, _N+1, _N-1}
float triangular(unsigned int _n,
unsigned int _N,
unsigned int _L);
// _i : window index, _i in [0,_wlen-1]
// _wlen : full window length
// _L : triangle length, _L in {_wlen-1, _wlen, _wlen+1}
float liquid_triangular(unsigned int _i,
unsigned int _wlen,
unsigned int _L);
// raised-cosine tapering window
// _n : window index
// _t : taper length
// _N : full window length
float liquid_rcostaper_windowf(unsigned int _n,
unsigned int _t,
unsigned int _N);
// _i : window index
// _wlen : full window length
// _t : taper length, _t in [0,_wlen/2]
float liquid_rcostaper_window(unsigned int _i,
unsigned int _wlen,
unsigned int _t);
// Kaiser-Bessel derived window (single sample)
// _i : window index, _i in [0,_wlen-1]
// _wlen : length of filter (must be even)
// _beta : Kaiser window parameter (_beta > 0)
float liquid_kbd(unsigned int _i,
unsigned int _wlen,
float _beta);
// Kaiser-Bessel derived window (full window)
// _wlen : full window length (must be even)
// _beta : Kaiser window parameter (_beta > 0)
// _w : window output buffer, [size: _wlen x 1]
void liquid_kbd_window(unsigned int _wlen,
float _beta,
float * _w);
// polynomials
@ -6145,7 +6185,7 @@ void poly_binomial_expand_pm(unsigned int _n,
int * _c);
#endif
//
//
// modular arithmetic, etc.
//
@ -6664,7 +6704,7 @@ LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_BOOL, unsigned char)
LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_FLOAT, float)
LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_INT, short int)
//
//
// smatrix cross methods
//
@ -7132,7 +7172,7 @@ float fskdem_get_symbol_energy(fskdem _q,
unsigned int _range);
//
//
// Analog frequency modulator
//
#define LIQUID_FREQMOD_MANGLE_FLOAT(name) LIQUID_CONCAT(freqmod,name)
@ -7181,7 +7221,7 @@ void FREQMOD(_modulate_block)(FREQMOD() _q, \
// define freqmod APIs
LIQUID_FREQMOD_DEFINE_API(LIQUID_FREQMOD_MANGLE_FLOAT,float,liquid_float_complex)
//
//
// Analog frequency demodulator
//
@ -7549,7 +7589,7 @@ void ofdmframe_print_sctype(unsigned char * _p,
unsigned int _M);
//
//
// OFDM frame (symbol) generator
//
typedef struct ofdmframegen_s * ofdmframegen;
@ -7591,7 +7631,7 @@ void ofdmframegen_writesymbol(ofdmframegen _q,
void ofdmframegen_writetail(ofdmframegen _q,
liquid_float_complex * _x);
//
//
// OFDM frame (symbol) synchronizer
//
typedef int (*ofdmframesync_callback)(liquid_float_complex * _y,
@ -7634,7 +7674,7 @@ void ofdmframesync_debug_disable(ofdmframesync _q);
void ofdmframesync_debug_print(ofdmframesync _q, const char * _filename);
//
//
// MODULE : nco (numerically-controlled oscillator)
//
@ -7972,7 +8012,7 @@ float qnsearch_execute(qnsearch _g,
unsigned int _max_iterations,
float _target_utility);
//
//
// chromosome (for genetic algorithm search)
//
typedef struct chromosome_s * chromosome;
@ -8035,7 +8075,7 @@ unsigned int chromosome_value(chromosome _c,
float chromosome_valuef(chromosome _c,
unsigned int _index);
//
//
// genetic algorithm search
//
typedef struct gasearch_s * gasearch;
@ -8348,7 +8388,7 @@ void bsequence_create_ccodes(bsequence _a,
#define LIQUID_MSEQUENCE_GENPOLY_M13 0x201b // 13 8191 20033 10000000011011
#define LIQUID_MSEQUENCE_GENPOLY_M14 0x402b // 14 16383 40053 100000000101011
#define LIQUID_MSEQUENCE_GENPOLY_M15 0x8003 // 15 32767 100003 1000000000000011
typedef struct msequence_s * msequence;
// create a maximal-length sequence (m-sequence) object with
@ -8402,7 +8442,7 @@ void msequence_set_state(msequence _ms,
unsigned int _a);
//
//
// MODULE : utility
//
@ -8469,7 +8509,7 @@ void liquid_repack_bytes(unsigned char * _sym_in,
unsigned int _sym_out_bps,
unsigned int _sym_out_len,
unsigned int * _num_written);
// shift array to the left _b bits, filling in zeros
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8477,7 +8517,7 @@ void liquid_repack_bytes(unsigned char * _sym_in,
void liquid_lbshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// shift array to the right _b bits, filling in zeros
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8485,7 +8525,7 @@ void liquid_lbshift(unsigned char * _src,
void liquid_rbshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// circularly shift array to the left _b bits
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8493,7 +8533,7 @@ void liquid_rbshift(unsigned char * _src,
void liquid_lbcircshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// circularly shift array to the right _b bits
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8501,7 +8541,7 @@ void liquid_lbcircshift(unsigned char * _src,
void liquid_rbcircshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
@ -8512,7 +8552,7 @@ void liquid_rbcircshift(unsigned char * _src,
void liquid_lshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// shift array to the right _b bytes, filling in zeros
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8520,7 +8560,7 @@ void liquid_lshift(unsigned char * _src,
void liquid_rshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// circular shift array to the left _b bytes
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8528,7 +8568,7 @@ void liquid_rshift(unsigned char * _src,
void liquid_lcircshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// circular shift array to the right _b bytes
// _src : source address [size: _n x 1]
// _n : input data array size
@ -8536,9 +8576,9 @@ void liquid_lcircshift(unsigned char * _src,
void liquid_rcircshift(unsigned char * _src,
unsigned int _n,
unsigned int _b);
// Count the number of ones in an integer
unsigned int liquid_count_ones(unsigned int _x);
unsigned int liquid_count_ones(unsigned int _x);
// count number of ones in an integer, modulo 2
unsigned int liquid_count_ones_mod2(unsigned int _x);
@ -8548,7 +8588,7 @@ unsigned int liquid_bdotprod(unsigned int _x,
unsigned int _y);
// Count leading zeros in an integer
unsigned int liquid_count_leading_zeros(unsigned int _x);
unsigned int liquid_count_leading_zeros(unsigned int _x);
// Most-significant bit index
unsigned int liquid_msb_index(unsigned int _x);
@ -8571,7 +8611,7 @@ void liquid_get_scale(float _val,
char * _unit,
float * _scale);
//
//
// MODULE : vector
//
@ -8649,7 +8689,7 @@ void VECTOR(_normalize)(T * _x, \
LIQUID_VECTOR_DEFINE_API(LIQUID_VECTOR_MANGLE_RF, float, float)
LIQUID_VECTOR_DEFINE_API(LIQUID_VECTOR_MANGLE_CF, liquid_float_complex, float)
//
//
// mixed types
//
#if 0

View File

@ -1,4 +1,4 @@
# Copyright (c) 2007 - 2018 Joseph Gaeddert
# Copyright (c) 2007 - 2020 Joseph Gaeddert
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -65,6 +65,7 @@ RANLIB := ranlib
# flags
INCLUDE_CFLAGS = $(addprefix -I,$(include_dirs))
COVERAGE_FLAGS = # dynamic library linker needs separate flag
#MINGW: optimizations goes here, use SSSE42 for 32bit
CONFIG_CFLAGS = -m32 -O3 -msse4.2 -ffast-math
CPPFLAGS = $(INCLUDE_CFLAGS)
@ -354,6 +355,7 @@ fft_autotests := \
src/fft/tests/fft_prime_autotest.c \
src/fft/tests/fft_r2r_autotest.c \
src/fft/tests/fft_shift_autotest.c \
src/fft/tests/spgram_autotest.c \
# additional autotest objects
autotest_extra_obj += \
@ -652,6 +654,7 @@ framing_autotests := \
src/framing/tests/detector_autotest.c \
src/framing/tests/flexframesync_autotest.c \
src/framing/tests/framesync64_autotest.c \
src/framing/tests/ofdmflexframe_autotest.c \
src/framing/tests/qdetector_cccf_autotest.c \
src/framing/tests/qpacketmodem_autotest.c \
src/framing/tests/qpilotsync_autotest.c \
@ -1124,6 +1127,7 @@ objects := \
autotest_sources := \
autotest/null_autotest.c \
autotest/libliquid_autotest.c \
$(agc_autotests) \
$(audio_autotests) \
$(buffer_autotests) \
@ -1190,7 +1194,7 @@ libliquid.ar: $(objects)
# gcc -dynamiclib -install_name libliquid.dylib -o libliquid.dylib libmodem.a libutility.a
libliquid.dylib: $(objects)
$(CC) -dynamiclib -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS)
$(CC) -dynamiclib ${COVERAGE_FLAGS} -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS)
#
# linux, et al
@ -1322,6 +1326,43 @@ clean-check:
$(RM) $(autotest_extra_obj)
$(RM) autotest.json
##
## TARGET : doc-check - build and run basic documentation checks
##
readme.example.c : README.md
${SED} -n '22,42p' $< | ${SED} "s/<liquid\/liquid.h>/\"liquid.h\"/g" > $@
readme.example.o : %.o : %.c ${include_headers}
${CC} ${CPPFLAGS} ${CFLAGS} $< -c -o $@
readme.example : % : %.o ${ARCHIVE_LIB}
${CC} ${CFLAGS} ${LDFLAGS} $^ -o $@ ${LIBS}
doc-check : readme.example ; ./readme.example
clean-doc-check:
${RM} readme.example*
##
## TARGET : coverage - run coverage test and produce report
##
coverage: coverage.out
tail -n5 $<
${autotest_prog}.gcda : %.gcda : %
./${autotest_prog}
coverage.out : ${autotest_prog}.gcda
gcovr --root=src --exclude-directories=src/.*/tests --print-summary > $@
clean-coverage:
$(RM) src/*.gcda src/*/src/*.gcda src/*/tests/*.gcda src/*/tests/data/*.gcda autotest/*.gcda scripts/*.gcda
$(RM) src/*.gcno src/*/src/*.gcno src/*/tests/*.gcno src/*/tests/data/*.gcno autotest/*.gcno scripts/*.gcno
$(RM) autotest/*.gcda bench/*.gcda examples/*.gcda sandbox/*.gcda
$(RM) autotest/*.gcno bench/*.gcno examples/*.gcno sandbox/*.gcno
$(RM) *.gcda *.gcno coverage.out
##
## TARGET : bench - build and run all benchmarks
@ -1362,7 +1403,7 @@ $(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) ${ARCHIVE
# run the benchmark program
bench: $(bench_prog)
./$(bench_prog)
./$(bench_prog) -o benchmark.json
# benchmark compare script
scripts/benchmark_compare : % : %.c
@ -1445,12 +1486,15 @@ example_programs := \
examples/firpfbchr_crcf_example \
examples/firinterp_crcf_example \
examples/firinterp_firdecim_crcf_example \
examples/firinterp_rrrf_linear_example \
examples/firinterp_rrrf_window_example \
examples/firpfbch_crcf_example \
examples/firpfbch_crcf_analysis_example \
examples/firpfbch_crcf_synthesis_example \
examples/flexframesync_example \
examples/flexframesync_reconfig_example \
examples/framesync64_example \
examples/framesync64_performance_example \
examples/freqmodem_example \
examples/fskframesync_example \
examples/fskmodem_example \
@ -1474,6 +1518,7 @@ example_programs := \
examples/iirhilb_example \
examples/iirhilb_filter_example \
examples/iirinterp_crcf_example \
examples/kaiser_window_example \
examples/kbd_window_example \
examples/lpc_example \
examples/libliquid_example \
@ -1501,6 +1546,7 @@ example_programs := \
examples/packetizer_example \
examples/packetizer_soft_example \
examples/pll_example \
examples/polyfit_comparison_example \
examples/polyfit_example \
examples/polyfit_lagrange_example \
examples/poly_findroots_example \
@ -1517,6 +1563,7 @@ example_programs := \
examples/rresamp_rrrf_example \
examples/resamp_crcf_example \
examples/resamp_crcf_noise_example \
examples/resamp_crcf_rate_match_example \
examples/resamp2_cccf_example \
examples/resamp2_crcf_example \
examples/resamp2_crcf_decim_example \
@ -1535,6 +1582,8 @@ example_programs := \
examples/symtrack_cccf_example \
examples/wdelayf_example \
examples/windowf_example \
examples/window_enbw_example \
examples/windowing_example \
# examples/metadata_example
# examples/ofdmframegen_example
@ -1620,7 +1669,8 @@ sandbox_programs = \
sandbox/gmskmodem_coherent_test \
sandbox/gmskmodem_equalizer_test \
sandbox/householder_test \
sandbox/iirdes_example \
sandbox/iirdes_test \
sandbox/iirdes_gradsearch_test \
sandbox/iirfilt_intdiff_test \
sandbox/levinson_test \
sandbox/matched_filter_test \
@ -1703,30 +1753,10 @@ world : all check bench examples sandbox
clean-modules:
@echo "cleaning modules..."
$(RM) src/agc/src/*.o src/agc/bench/*.o src/agc/tests/*.o
$(RM) src/audio/src/*.o src/audio/bench/*.o src/audio/tests/*.o
$(RM) src/buffer/src/*.o src/buffer/bench/*.o src/buffer/tests/*.o
$(RM) src/channel/src/*.o src/channel/bench/*.o src/channel/tests/*.o
$(RM) src/dotprod/src/*.o src/dotprod/bench/*.o src/dotprod/tests/*.o
$(RM) src/equalization/src/*.o src/equalization/bench/*.o src/equalization/tests/*.o
$(RM) src/fec/src/*.o src/fec/bench/*.o src/fec/tests/*.o
$(RM) src/fft/src/*.o src/fft/bench/*.o src/fft/tests/*.o
$(RM) src/filter/src/*.o src/filter/bench/*.o src/filter/tests/*.o
$(RM) src/framing/src/*.o src/framing/bench/*.o src/framing/tests/*.o
$(RM) src/math/src/*.o src/math/bench/*.o src/math/tests/*.o
$(RM) src/matrix/src/*.o src/matrix/bench/*.o src/matrix/tests/*.o
$(RM) src/modem/src/*.o src/modem/bench/*.o src/modem/tests/*.o
$(RM) src/multichannel/src/*.o src/multichannel/bench/*.o src/multichannel/tests/*.o
$(RM) src/nco/src/*.o src/nco/bench/*.o src/nco/tests/*.o
$(RM) src/optim/src/*.o src/optim/bench/*.o src/optim/tests/*.o
$(RM) src/quantization/src/*.o src/quantization/bench/*.o src/quantization/tests/*.o
$(RM) src/random/src/*.o src/random/bench/*.o src/random/tests/*.o
$(RM) src/sequence/src/*.o src/sequence/bench/*.o src/sequence/tests/*.o
$(RM) src/utility/src/*.o src/utility/bench/*.o src/utility/tests/*.o
$(RM) src/vector/src/*.o src/vector/bench/*.o src/vector/tests/*.o
$(RM) src/*/src/*.o src/*/bench/*.o src/*/tests/*.o
$(RM) src/libliquid.o
clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox
clean: clean-modules clean-autoscript clean-check clean-coverage clean-bench clean-examples clean-sandbox
$(RM) ${ARCHIVE_LIB} ${SHARED_LIB} $(extra_clean)
##

View File

@ -1,4 +1,4 @@
# Copyright (c) 2007 - 2019 Joseph Gaeddert
# Copyright (c) 2007 - 2020 Joseph Gaeddert
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -65,6 +65,7 @@ RANLIB := ranlib
# flags
INCLUDE_CFLAGS = $(addprefix -I,$(include_dirs))
COVERAGE_FLAGS = # dynamic library linker needs separate flag
#MINGW: optimizations goes here, use SSSE42 for 64bit
CONFIG_CFLAGS = -O3 -msse4.2 -ffast-math
CPPFLAGS = $(INCLUDE_CFLAGS)
@ -354,6 +355,7 @@ fft_autotests := \
src/fft/tests/fft_prime_autotest.c \
src/fft/tests/fft_r2r_autotest.c \
src/fft/tests/fft_shift_autotest.c \
src/fft/tests/spgram_autotest.c \
# additional autotest objects
autotest_extra_obj += \
@ -652,6 +654,7 @@ framing_autotests := \
src/framing/tests/detector_autotest.c \
src/framing/tests/flexframesync_autotest.c \
src/framing/tests/framesync64_autotest.c \
src/framing/tests/ofdmflexframe_autotest.c \
src/framing/tests/qdetector_cccf_autotest.c \
src/framing/tests/qpacketmodem_autotest.c \
src/framing/tests/qpilotsync_autotest.c \
@ -1124,6 +1127,7 @@ objects := \
autotest_sources := \
autotest/null_autotest.c \
autotest/libliquid_autotest.c \
$(agc_autotests) \
$(audio_autotests) \
$(buffer_autotests) \
@ -1190,7 +1194,7 @@ libliquid.ar: $(objects)
# gcc -dynamiclib -install_name libliquid.dylib -o libliquid.dylib libmodem.a libutility.a
libliquid.dylib: $(objects)
$(CC) -dynamiclib -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS)
$(CC) -dynamiclib ${COVERAGE_FLAGS} -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS)
#
# linux, et al
@ -1322,6 +1326,43 @@ clean-check:
$(RM) $(autotest_extra_obj)
$(RM) autotest.json
##
## TARGET : doc-check - build and run basic documentation checks
##
readme.example.c : README.md
${SED} -n '22,42p' $< | ${SED} "s/<liquid\/liquid.h>/\"liquid.h\"/g" > $@
readme.example.o : %.o : %.c ${include_headers}
${CC} ${CPPFLAGS} ${CFLAGS} $< -c -o $@
readme.example : % : %.o ${ARCHIVE_LIB}
${CC} ${CFLAGS} ${LDFLAGS} $^ -o $@ ${LIBS}
doc-check : readme.example ; ./readme.example
clean-doc-check:
${RM} readme.example*
##
## TARGET : coverage - run coverage test and produce report
##
coverage: coverage.out
tail -n5 $<
${autotest_prog}.gcda : %.gcda : %
./${autotest_prog}
coverage.out : ${autotest_prog}.gcda
gcovr --root=src --exclude-directories=src/.*/tests --print-summary > $@
clean-coverage:
$(RM) src/*.gcda src/*/src/*.gcda src/*/tests/*.gcda src/*/tests/data/*.gcda autotest/*.gcda scripts/*.gcda
$(RM) src/*.gcno src/*/src/*.gcno src/*/tests/*.gcno src/*/tests/data/*.gcno autotest/*.gcno scripts/*.gcno
$(RM) autotest/*.gcda bench/*.gcda examples/*.gcda sandbox/*.gcda
$(RM) autotest/*.gcno bench/*.gcno examples/*.gcno sandbox/*.gcno
$(RM) *.gcda *.gcno coverage.out
##
## TARGET : bench - build and run all benchmarks
@ -1362,7 +1403,7 @@ $(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) ${ARCHIVE
# run the benchmark program
bench: $(bench_prog)
./$(bench_prog)
./$(bench_prog) -o benchmark.json
# benchmark compare script
scripts/benchmark_compare : % : %.c
@ -1445,12 +1486,15 @@ example_programs := \
examples/firpfbchr_crcf_example \
examples/firinterp_crcf_example \
examples/firinterp_firdecim_crcf_example \
examples/firinterp_rrrf_linear_example \
examples/firinterp_rrrf_window_example \
examples/firpfbch_crcf_example \
examples/firpfbch_crcf_analysis_example \
examples/firpfbch_crcf_synthesis_example \
examples/flexframesync_example \
examples/flexframesync_reconfig_example \
examples/framesync64_example \
examples/framesync64_performance_example \
examples/freqmodem_example \
examples/fskframesync_example \
examples/fskmodem_example \
@ -1474,6 +1518,7 @@ example_programs := \
examples/iirhilb_example \
examples/iirhilb_filter_example \
examples/iirinterp_crcf_example \
examples/kaiser_window_example \
examples/kbd_window_example \
examples/lpc_example \
examples/libliquid_example \
@ -1501,6 +1546,7 @@ example_programs := \
examples/packetizer_example \
examples/packetizer_soft_example \
examples/pll_example \
examples/polyfit_comparison_example \
examples/polyfit_example \
examples/polyfit_lagrange_example \
examples/poly_findroots_example \
@ -1517,6 +1563,7 @@ example_programs := \
examples/rresamp_rrrf_example \
examples/resamp_crcf_example \
examples/resamp_crcf_noise_example \
examples/resamp_crcf_rate_match_example \
examples/resamp2_cccf_example \
examples/resamp2_crcf_example \
examples/resamp2_crcf_decim_example \
@ -1535,6 +1582,8 @@ example_programs := \
examples/symtrack_cccf_example \
examples/wdelayf_example \
examples/windowf_example \
examples/window_enbw_example \
examples/windowing_example \
# examples/metadata_example
# examples/ofdmframegen_example
@ -1620,7 +1669,8 @@ sandbox_programs = \
sandbox/gmskmodem_coherent_test \
sandbox/gmskmodem_equalizer_test \
sandbox/householder_test \
sandbox/iirdes_example \
sandbox/iirdes_test \
sandbox/iirdes_gradsearch_test \
sandbox/iirfilt_intdiff_test \
sandbox/levinson_test \
sandbox/matched_filter_test \
@ -1703,30 +1753,10 @@ world : all check bench examples sandbox
clean-modules:
@echo "cleaning modules..."
$(RM) src/agc/src/*.o src/agc/bench/*.o src/agc/tests/*.o
$(RM) src/audio/src/*.o src/audio/bench/*.o src/audio/tests/*.o
$(RM) src/buffer/src/*.o src/buffer/bench/*.o src/buffer/tests/*.o
$(RM) src/channel/src/*.o src/channel/bench/*.o src/channel/tests/*.o
$(RM) src/dotprod/src/*.o src/dotprod/bench/*.o src/dotprod/tests/*.o
$(RM) src/equalization/src/*.o src/equalization/bench/*.o src/equalization/tests/*.o
$(RM) src/fec/src/*.o src/fec/bench/*.o src/fec/tests/*.o
$(RM) src/fft/src/*.o src/fft/bench/*.o src/fft/tests/*.o
$(RM) src/filter/src/*.o src/filter/bench/*.o src/filter/tests/*.o
$(RM) src/framing/src/*.o src/framing/bench/*.o src/framing/tests/*.o
$(RM) src/math/src/*.o src/math/bench/*.o src/math/tests/*.o
$(RM) src/matrix/src/*.o src/matrix/bench/*.o src/matrix/tests/*.o
$(RM) src/modem/src/*.o src/modem/bench/*.o src/modem/tests/*.o
$(RM) src/multichannel/src/*.o src/multichannel/bench/*.o src/multichannel/tests/*.o
$(RM) src/nco/src/*.o src/nco/bench/*.o src/nco/tests/*.o
$(RM) src/optim/src/*.o src/optim/bench/*.o src/optim/tests/*.o
$(RM) src/quantization/src/*.o src/quantization/bench/*.o src/quantization/tests/*.o
$(RM) src/random/src/*.o src/random/bench/*.o src/random/tests/*.o
$(RM) src/sequence/src/*.o src/sequence/bench/*.o src/sequence/tests/*.o
$(RM) src/utility/src/*.o src/utility/bench/*.o src/utility/tests/*.o
$(RM) src/vector/src/*.o src/vector/bench/*.o src/vector/tests/*.o
$(RM) src/*/src/*.o src/*/bench/*.o src/*/tests/*.o
$(RM) src/libliquid.o
clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox
clean: clean-modules clean-autoscript clean-check clean-coverage clean-bench clean-examples clean-sandbox
$(RM) ${ARCHIVE_LIB} ${SHARED_LIB} $(extra_clean)
##

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.