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
+153 -113
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