added conv_fft_cmplx

pull/2/head
Dsplib 2018-05-09 17:47:58 +03:00
rodzic e225ac24c2
commit 8fd70fa80a
5 zmienionych plików z 385 dodań i 272 usunięć

Wyświetl plik

@ -26,42 +26,45 @@
/**************************************************************************************************
/*******************************************************************************
Real vectors linear convolution
***************************************************************************************************/
*******************************************************************************/
int DSPL_API conv(double* a, int na, double* b, int nb, double* c)
{
int k;
int n;
double *t;
size_t bufsize;
double *t;
size_t bufsize;
if(!a || !b || !c)
return ERROR_PTR;
if(na < 1 || nb < 1)
return ERROR_SIZE;
if(!a || !b || !c)
return ERROR_PTR;
if(na < 1 || nb < 1)
return ERROR_SIZE;
bufsize = (na + nb - 1) * sizeof(double);
bufsize = (na + nb - 1) * sizeof(double);
if((a != c) && (b != c))
if((a != c) && (b != c))
t = c;
else
t = (double*)malloc(bufsize);
memset(t, 0, bufsize);
memset(t, 0, bufsize);
for(k = 0; k < na; k++)
for(n = 0; n < nb; n++)
t[k+n] += a[k]*b[n];
if(t!=c)
if(t!=c)
{
memcpy(c, t, bufsize);
free(t);
}
return RES_OK;
return RES_OK;
}
@ -77,33 +80,33 @@ int DSPL_API conv_cmplx(complex_t* a, int na, complex_t* b, int nb, complex_t* c
int k;
int n;
complex_t *t;
complex_t *t;
size_t bufsize;
if(!a || !b || !c)
return ERROR_PTR;
if(na < 1 || nb < 1)
return ERROR_SIZE;
if(!a || !b || !c)
return ERROR_PTR;
if(na < 1 || nb < 1)
return ERROR_SIZE;
bufsize = (na + nb - 1) * sizeof(complex_t);
bufsize = (na + nb - 1) * sizeof(complex_t);
if((a != c) && (b != c))
if((a != c) && (b != c))
t = c;
else
t = (complex_t*)malloc(bufsize);
memset(t, 0, bufsize);
memset(t, 0, bufsize);
for(k = 0; k < na; k++)
{
{
for(n = 0; n < nb; n++)
{
{
RE(t[k+n]) += CMRE(a[k], b[n]);
IM(t[k+n]) += CMIM(a[k], b[n]);
}
}
IM(t[k+n]) += CMIM(a[k], b[n]);
}
}
if(t!=c)
if(t!=c)
{
memcpy(c, t, bufsize);
free(t);
@ -116,9 +119,101 @@ int DSPL_API conv_cmplx(complex_t* a, int na, complex_t* b, int nb, complex_t* c
/**************************************************************************************************
/*******************************************************************************
Complex vectors FFT linear convolution
******************************************************************************/
int DSPL_API conv_fft_cmplx(complex_t* a, int na, complex_t* b, int nb,
fft_t* pfft, complex_t* c)
{
complex_t *pa = NULL;
complex_t *pb = NULL;
complex_t *pc = NULL;
complex_t *pA = NULL;
complex_t *pB = NULL;
complex_t *pC = NULL;
int nfft, nfft2, n, npos;
nfft = 4;
n = nb-1;
while(n>>=1)
nfft <<= 1;
nfft2 = nfft >> 1;
pa = (complex_t*)malloc(nfft * sizeof(complex_t));
pb = (complex_t*)malloc(nfft * sizeof(complex_t));
pc = (complex_t*)malloc(nfft * sizeof(complex_t));
pA = (complex_t*)malloc(nfft * sizeof(complex_t));
pB = (complex_t*)malloc(nfft * sizeof(complex_t));
pC = (complex_t*)malloc(nfft * sizeof(complex_t));
npos = -nfft2;
memset(pa, 0, nfft*sizeof(complex_t));
memset(pb, 0, nfft*sizeof(complex_t));
memcpy(pa + nfft2, a, nfft2*sizeof(complex_t));
memcpy(pb, b, nb*sizeof(complex_t));
fft_cmplx(pa, nfft, pfft, pA);
fft_cmplx(pb, nfft, pfft, pB);
for(n = 0; n < nfft2; n++)
{
RE(pC[n]) = CMRE(pA[n], pB[n]);
IM(pC[n]) = -CMIM(pA[n], pB[n]);
}
ifft_cmplx(pC, nfft, pfft, pc);
memcpy(c, pc+nfft2, nfft2*sizeof(complex_t));
npos = 0;
while(npos < na)
{
if(npos+nfft > na)
{
memset(pa, 0, nfft * sizeof(complex_t));
memcpy(pa, a+npos, (na - npos) * sizeof(complex_t));
fft_cmplx(pa, nfft, pfft, pA);
}
else
fft_cmplx(a+npos, nfft, pfft, pA);
for(n = 0; n < nfft2; n++)
{
RE(pC[n]) = CMRE(pA[n], pB[n]);
IM(pC[n]) = -CMIM(pA[n], pB[n]);
}
ifft_cmplx(pC, nfft, pfft, pc);
if(npos+nfft <= na+nb-1)
memcpy(c+npos+nfft2, pc+nfft2, nfft2*sizeof(complex_t));
else
{
memcpy(c+npos+nfft2, pc+nfft2,
(na+nb-1-npos-nfft2)*sizeof(complex_t));
}
npos+=nfft2;
}
if(pa) free(pa);
if(pb) free(pb);
if(pc) free(pc);
if(pA) free(pA);
if(pB) free(pB);
if(pB) free(pC);
return RES_OK;
}
/*******************************************************************************
IIR FILTER for real vector
**************************************************************************************************/
*******************************************************************************/
int DSPL_API filter_iir(double* b, double* a, int ord, double* x, int n, double* y)
{
double* buf = NULL;

Wyświetl plik

@ -35,63 +35,64 @@
#ifndef BUILD_LIB
p_acos_cmplx acos_cmplx ;
p_asin_cmplx asin_cmplx ;
p_butter_ap butter_ap ;
p_butter_ap_zp butter_ap_zp ;
p_cheby_poly1 cheby_poly1 ;
p_cheby_poly2 cheby_poly2 ;
p_cheby1_ap cheby1_ap ;
p_cheby1_ap_zp cheby1_ap_zp ;
p_cheby2_ap_zp cheby2_ap_zp ;
p_cmplx2re cmplx2re ;
p_concat concat ;
p_conv conv ;
p_conv_cmplx conv_cmplx ;
p_cos_cmplx cos_cmplx ;
p_dft dft ;
p_dft_cmplx dft_cmplx ;
p_dmod dmod ;
p_idft_cmplx idft_cmplx ;
p_ifft_cmplx ifft_cmplx ;
p_dspl_info dspl_info ;
p_farrow_lagrange farrow_lagrange ;
p_farrow_spline farrow_spline ;
p_filter_iir filter_iir ;
p_filter_zp2ab filter_zp2ab ;
p_fft fft ;
p_fft_cmplx fft_cmplx ;
p_fft_create fft_create ;
p_fft_free fft_free ;
p_fft_shift fft_shift ;
p_fft_shift_cmplx fft_shift_cmplx ;
p_flipip flipip ;
p_flipip_cmplx flipip_cmplx ;
p_fourier_series_dec fourier_series_dec ;
p_fourier_series_rec fourier_series_rec ;
p_freqs freqs ;
p_freqs_resp freqs_resp ;
p_freqs2time freqs2time ;
p_freqz freqz ;
p_goertzel goertzel ;
p_goertzel_cmplx goertzel_cmplx ;
p_linspace linspace ;
p_log_cmplx log_cmplx ;
p_logspace logspace ;
p_poly_z2a_cmplx poly_z2a_cmplx ;
p_polyval polyval ;
p_polyval_cmplx polyval_cmplx ;
p_randn randn ;
p_randu randu ;
p_re2cmplx re2cmplx ;
p_signal_pimp signal_pimp ;
p_sin_cmplx sin_cmplx ;
p_sqrt_cmplx sqrt_cmplx ;
p_trapint trapint ;
p_trapint_cmplx trapint_cmplx ;
p_unwrap unwrap ;
p_writebin writebin ;
p_writetxt writetxt ;
p_acos_cmplx acos_cmplx ;
p_asin_cmplx asin_cmplx ;
p_butter_ap butter_ap ;
p_butter_ap_zp butter_ap_zp ;
p_cheby_poly1 cheby_poly1 ;
p_cheby_poly2 cheby_poly2 ;
p_cheby1_ap cheby1_ap ;
p_cheby1_ap_zp cheby1_ap_zp ;
p_cheby2_ap_zp cheby2_ap_zp ;
p_cmplx2re cmplx2re ;
p_concat concat ;
p_conv conv ;
p_conv_cmplx conv_cmplx ;
p_conv_fft_cmplx conv_fft_cmplx ;
p_cos_cmplx cos_cmplx ;
p_dft dft ;
p_dft_cmplx dft_cmplx ;
p_dmod dmod ;
p_idft_cmplx idft_cmplx ;
p_ifft_cmplx ifft_cmplx ;
p_dspl_info dspl_info ;
p_farrow_lagrange farrow_lagrange ;
p_farrow_spline farrow_spline ;
p_filter_iir filter_iir ;
p_filter_zp2ab filter_zp2ab ;
p_fft fft ;
p_fft_cmplx fft_cmplx ;
p_fft_create fft_create ;
p_fft_free fft_free ;
p_fft_shift fft_shift ;
p_fft_shift_cmplx fft_shift_cmplx ;
p_flipip flipip ;
p_flipip_cmplx flipip_cmplx ;
p_fourier_series_dec fourier_series_dec ;
p_fourier_series_rec fourier_series_rec ;
p_freqs freqs ;
p_freqs_resp freqs_resp ;
p_freqs2time freqs2time ;
p_freqz freqz ;
p_goertzel goertzel ;
p_goertzel_cmplx goertzel_cmplx ;
p_linspace linspace ;
p_log_cmplx log_cmplx ;
p_logspace logspace ;
p_poly_z2a_cmplx poly_z2a_cmplx ;
p_polyval polyval ;
p_polyval_cmplx polyval_cmplx ;
p_randn randn ;
p_randu randu ;
p_re2cmplx re2cmplx ;
p_signal_pimp signal_pimp ;
p_sin_cmplx sin_cmplx ;
p_sqrt_cmplx sqrt_cmplx ;
p_trapint trapint ;
p_trapint_cmplx trapint_cmplx ;
p_unwrap unwrap ;
p_writebin writebin ;
p_writetxt writetxt ;
#endif //BUILD_LIB
@ -119,7 +120,7 @@ p_writetxt writetxt ;
void* dspl_load()
{
char* fname;
char* fname;
#ifdef WIN_OS
HINSTANCE handle;
handle = LoadLibrary(TEXT("libdspl.dll"));
@ -128,10 +129,10 @@ void* dspl_load()
printf("libdspl.dll loading ERROR!\n");
return NULL;
}
#endif //WIN_OS
#endif //WIN_OS
#ifdef LINUX_OS
#ifdef LINUX_OS
char* error;
void *handle;
// open the *.so
@ -141,68 +142,69 @@ void* dspl_load()
printf("libdspl.so loading ERROR!\n");
return NULL;
}
#endif //LINUX_OS
#endif //LINUX_OS
LOAD_FUNC(acos_cmplx);
LOAD_FUNC(asin_cmplx);
LOAD_FUNC(butter_ap);
LOAD_FUNC(butter_ap_zp);
LOAD_FUNC(cheby_poly1);
LOAD_FUNC(cheby_poly2);
LOAD_FUNC(cheby1_ap);
LOAD_FUNC(cheby1_ap_zp);
LOAD_FUNC(cheby2_ap_zp);
LOAD_FUNC(cmplx2re);
LOAD_FUNC(concat);
LOAD_FUNC(conv);
LOAD_FUNC(conv_cmplx);
LOAD_FUNC(cos_cmplx);
LOAD_FUNC(dft);
LOAD_FUNC(dft_cmplx);
LOAD_FUNC(dmod);
LOAD_FUNC(idft_cmplx);
LOAD_FUNC(ifft_cmplx);
LOAD_FUNC(dspl_info);
LOAD_FUNC(farrow_lagrange);
LOAD_FUNC(farrow_spline);
LOAD_FUNC(filter_iir);
LOAD_FUNC(filter_zp2ab);
LOAD_FUNC(fft);
LOAD_FUNC(fft_cmplx);
LOAD_FUNC(fft_create);
LOAD_FUNC(fft_free);
LOAD_FUNC(fft_shift);
LOAD_FUNC(fft_shift_cmplx);
LOAD_FUNC(flipip);
LOAD_FUNC(flipip_cmplx);
LOAD_FUNC(fourier_series_dec);
LOAD_FUNC(fourier_series_rec);
LOAD_FUNC(freqz);
LOAD_FUNC(freqs);
LOAD_FUNC(freqs_resp);
LOAD_FUNC(freqs2time);
LOAD_FUNC(goertzel);
LOAD_FUNC(goertzel_cmplx);
LOAD_FUNC(linspace);
LOAD_FUNC(log_cmplx);
LOAD_FUNC(logspace);
LOAD_FUNC(poly_z2a_cmplx);
LOAD_FUNC(polyval);
LOAD_FUNC(polyval_cmplx);
LOAD_FUNC(randn);
LOAD_FUNC(randu);
LOAD_FUNC(re2cmplx);
LOAD_FUNC(signal_pimp);
LOAD_FUNC(sin_cmplx);
LOAD_FUNC(sqrt_cmplx);
LOAD_FUNC(trapint);
LOAD_FUNC(trapint_cmplx);
LOAD_FUNC(unwrap);
LOAD_FUNC(writebin);
LOAD_FUNC(writetxt);
#ifdef WIN_OS
LOAD_FUNC(acos_cmplx);
LOAD_FUNC(asin_cmplx);
LOAD_FUNC(butter_ap);
LOAD_FUNC(butter_ap_zp);
LOAD_FUNC(cheby_poly1);
LOAD_FUNC(cheby_poly2);
LOAD_FUNC(cheby1_ap);
LOAD_FUNC(cheby1_ap_zp);
LOAD_FUNC(cheby2_ap_zp);
LOAD_FUNC(cmplx2re);
LOAD_FUNC(concat);
LOAD_FUNC(conv);
LOAD_FUNC(conv_cmplx);
LOAD_FUNC(conv_fft_cmplx);
LOAD_FUNC(cos_cmplx);
LOAD_FUNC(dft);
LOAD_FUNC(dft_cmplx);
LOAD_FUNC(dmod);
LOAD_FUNC(idft_cmplx);
LOAD_FUNC(ifft_cmplx);
LOAD_FUNC(dspl_info);
LOAD_FUNC(farrow_lagrange);
LOAD_FUNC(farrow_spline);
LOAD_FUNC(filter_iir);
LOAD_FUNC(filter_zp2ab);
LOAD_FUNC(fft);
LOAD_FUNC(fft_cmplx);
LOAD_FUNC(fft_create);
LOAD_FUNC(fft_free);
LOAD_FUNC(fft_shift);
LOAD_FUNC(fft_shift_cmplx);
LOAD_FUNC(flipip);
LOAD_FUNC(flipip_cmplx);
LOAD_FUNC(fourier_series_dec);
LOAD_FUNC(fourier_series_rec);
LOAD_FUNC(freqz);
LOAD_FUNC(freqs);
LOAD_FUNC(freqs_resp);
LOAD_FUNC(freqs2time);
LOAD_FUNC(goertzel);
LOAD_FUNC(goertzel_cmplx);
LOAD_FUNC(linspace);
LOAD_FUNC(log_cmplx);
LOAD_FUNC(logspace);
LOAD_FUNC(poly_z2a_cmplx);
LOAD_FUNC(polyval);
LOAD_FUNC(polyval_cmplx);
LOAD_FUNC(randn);
LOAD_FUNC(randu);
LOAD_FUNC(re2cmplx);
LOAD_FUNC(signal_pimp);
LOAD_FUNC(sin_cmplx);
LOAD_FUNC(sqrt_cmplx);
LOAD_FUNC(trapint);
LOAD_FUNC(trapint_cmplx);
LOAD_FUNC(unwrap);
LOAD_FUNC(writebin);
LOAD_FUNC(writetxt);
#ifdef WIN_OS
return (void*)handle;
exit_label:
printf("function %s loading ERROR!\n", fname);

Wyświetl plik

@ -271,6 +271,13 @@ DECLARE_FUNC(int, conv_cmplx, complex_t*
COMMA int
COMMA complex_t*);
//------------------------------------------------------------------------------
DECLARE_FUNC(int, conv_fft_cmplx, complex_t* a
COMMA int na
COMMA complex_t* b
COMMA int nb
COMMA fft_t* pfft
COMMA complex_t* c);
//------------------------------------------------------------------------------
DECLARE_FUNC(int, cos_cmplx, complex_t*
COMMA int
COMMA complex_t*);

Wyświetl plik

@ -35,63 +35,64 @@
#ifndef BUILD_LIB
p_acos_cmplx acos_cmplx ;
p_asin_cmplx asin_cmplx ;
p_butter_ap butter_ap ;
p_butter_ap_zp butter_ap_zp ;
p_cheby_poly1 cheby_poly1 ;
p_cheby_poly2 cheby_poly2 ;
p_cheby1_ap cheby1_ap ;
p_cheby1_ap_zp cheby1_ap_zp ;
p_cheby2_ap_zp cheby2_ap_zp ;
p_cmplx2re cmplx2re ;
p_concat concat ;
p_conv conv ;
p_conv_cmplx conv_cmplx ;
p_cos_cmplx cos_cmplx ;
p_dft dft ;
p_dft_cmplx dft_cmplx ;
p_dmod dmod ;
p_idft_cmplx idft_cmplx ;
p_ifft_cmplx ifft_cmplx ;
p_dspl_info dspl_info ;
p_farrow_lagrange farrow_lagrange ;
p_farrow_spline farrow_spline ;
p_filter_iir filter_iir ;
p_filter_zp2ab filter_zp2ab ;
p_fft fft ;
p_fft_cmplx fft_cmplx ;
p_fft_create fft_create ;
p_fft_free fft_free ;
p_fft_shift fft_shift ;
p_fft_shift_cmplx fft_shift_cmplx ;
p_flipip flipip ;
p_flipip_cmplx flipip_cmplx ;
p_fourier_series_dec fourier_series_dec ;
p_fourier_series_rec fourier_series_rec ;
p_freqs freqs ;
p_freqs_resp freqs_resp ;
p_freqs2time freqs2time ;
p_freqz freqz ;
p_goertzel goertzel ;
p_goertzel_cmplx goertzel_cmplx ;
p_linspace linspace ;
p_log_cmplx log_cmplx ;
p_logspace logspace ;
p_poly_z2a_cmplx poly_z2a_cmplx ;
p_polyval polyval ;
p_polyval_cmplx polyval_cmplx ;
p_randn randn ;
p_randu randu ;
p_re2cmplx re2cmplx ;
p_signal_pimp signal_pimp ;
p_sin_cmplx sin_cmplx ;
p_sqrt_cmplx sqrt_cmplx ;
p_trapint trapint ;
p_trapint_cmplx trapint_cmplx ;
p_unwrap unwrap ;
p_writebin writebin ;
p_writetxt writetxt ;
p_acos_cmplx acos_cmplx ;
p_asin_cmplx asin_cmplx ;
p_butter_ap butter_ap ;
p_butter_ap_zp butter_ap_zp ;
p_cheby_poly1 cheby_poly1 ;
p_cheby_poly2 cheby_poly2 ;
p_cheby1_ap cheby1_ap ;
p_cheby1_ap_zp cheby1_ap_zp ;
p_cheby2_ap_zp cheby2_ap_zp ;
p_cmplx2re cmplx2re ;
p_concat concat ;
p_conv conv ;
p_conv_cmplx conv_cmplx ;
p_conv_fft_cmplx conv_fft_cmplx ;
p_cos_cmplx cos_cmplx ;
p_dft dft ;
p_dft_cmplx dft_cmplx ;
p_dmod dmod ;
p_idft_cmplx idft_cmplx ;
p_ifft_cmplx ifft_cmplx ;
p_dspl_info dspl_info ;
p_farrow_lagrange farrow_lagrange ;
p_farrow_spline farrow_spline ;
p_filter_iir filter_iir ;
p_filter_zp2ab filter_zp2ab ;
p_fft fft ;
p_fft_cmplx fft_cmplx ;
p_fft_create fft_create ;
p_fft_free fft_free ;
p_fft_shift fft_shift ;
p_fft_shift_cmplx fft_shift_cmplx ;
p_flipip flipip ;
p_flipip_cmplx flipip_cmplx ;
p_fourier_series_dec fourier_series_dec ;
p_fourier_series_rec fourier_series_rec ;
p_freqs freqs ;
p_freqs_resp freqs_resp ;
p_freqs2time freqs2time ;
p_freqz freqz ;
p_goertzel goertzel ;
p_goertzel_cmplx goertzel_cmplx ;
p_linspace linspace ;
p_log_cmplx log_cmplx ;
p_logspace logspace ;
p_poly_z2a_cmplx poly_z2a_cmplx ;
p_polyval polyval ;
p_polyval_cmplx polyval_cmplx ;
p_randn randn ;
p_randu randu ;
p_re2cmplx re2cmplx ;
p_signal_pimp signal_pimp ;
p_sin_cmplx sin_cmplx ;
p_sqrt_cmplx sqrt_cmplx ;
p_trapint trapint ;
p_trapint_cmplx trapint_cmplx ;
p_unwrap unwrap ;
p_writebin writebin ;
p_writetxt writetxt ;
#endif //BUILD_LIB
@ -119,7 +120,7 @@ p_writetxt writetxt ;
void* dspl_load()
{
char* fname;
char* fname;
#ifdef WIN_OS
HINSTANCE handle;
handle = LoadLibrary(TEXT("libdspl.dll"));
@ -128,10 +129,10 @@ void* dspl_load()
printf("libdspl.dll loading ERROR!\n");
return NULL;
}
#endif //WIN_OS
#endif //WIN_OS
#ifdef LINUX_OS
#ifdef LINUX_OS
char* error;
void *handle;
// open the *.so
@ -141,68 +142,69 @@ void* dspl_load()
printf("libdspl.so loading ERROR!\n");
return NULL;
}
#endif //LINUX_OS
#endif //LINUX_OS
LOAD_FUNC(acos_cmplx);
LOAD_FUNC(asin_cmplx);
LOAD_FUNC(butter_ap);
LOAD_FUNC(butter_ap_zp);
LOAD_FUNC(cheby_poly1);
LOAD_FUNC(cheby_poly2);
LOAD_FUNC(cheby1_ap);
LOAD_FUNC(cheby1_ap_zp);
LOAD_FUNC(cheby2_ap_zp);
LOAD_FUNC(cmplx2re);
LOAD_FUNC(concat);
LOAD_FUNC(conv);
LOAD_FUNC(conv_cmplx);
LOAD_FUNC(cos_cmplx);
LOAD_FUNC(dft);
LOAD_FUNC(dft_cmplx);
LOAD_FUNC(dmod);
LOAD_FUNC(idft_cmplx);
LOAD_FUNC(ifft_cmplx);
LOAD_FUNC(dspl_info);
LOAD_FUNC(farrow_lagrange);
LOAD_FUNC(farrow_spline);
LOAD_FUNC(filter_iir);
LOAD_FUNC(filter_zp2ab);
LOAD_FUNC(fft);
LOAD_FUNC(fft_cmplx);
LOAD_FUNC(fft_create);
LOAD_FUNC(fft_free);
LOAD_FUNC(fft_shift);
LOAD_FUNC(fft_shift_cmplx);
LOAD_FUNC(flipip);
LOAD_FUNC(flipip_cmplx);
LOAD_FUNC(fourier_series_dec);
LOAD_FUNC(fourier_series_rec);
LOAD_FUNC(freqz);
LOAD_FUNC(freqs);
LOAD_FUNC(freqs_resp);
LOAD_FUNC(freqs2time);
LOAD_FUNC(goertzel);
LOAD_FUNC(goertzel_cmplx);
LOAD_FUNC(linspace);
LOAD_FUNC(log_cmplx);
LOAD_FUNC(logspace);
LOAD_FUNC(poly_z2a_cmplx);
LOAD_FUNC(polyval);
LOAD_FUNC(polyval_cmplx);
LOAD_FUNC(randn);
LOAD_FUNC(randu);
LOAD_FUNC(re2cmplx);
LOAD_FUNC(signal_pimp);
LOAD_FUNC(sin_cmplx);
LOAD_FUNC(sqrt_cmplx);
LOAD_FUNC(trapint);
LOAD_FUNC(trapint_cmplx);
LOAD_FUNC(unwrap);
LOAD_FUNC(writebin);
LOAD_FUNC(writetxt);
#ifdef WIN_OS
LOAD_FUNC(acos_cmplx);
LOAD_FUNC(asin_cmplx);
LOAD_FUNC(butter_ap);
LOAD_FUNC(butter_ap_zp);
LOAD_FUNC(cheby_poly1);
LOAD_FUNC(cheby_poly2);
LOAD_FUNC(cheby1_ap);
LOAD_FUNC(cheby1_ap_zp);
LOAD_FUNC(cheby2_ap_zp);
LOAD_FUNC(cmplx2re);
LOAD_FUNC(concat);
LOAD_FUNC(conv);
LOAD_FUNC(conv_cmplx);
LOAD_FUNC(conv_fft_cmplx);
LOAD_FUNC(cos_cmplx);
LOAD_FUNC(dft);
LOAD_FUNC(dft_cmplx);
LOAD_FUNC(dmod);
LOAD_FUNC(idft_cmplx);
LOAD_FUNC(ifft_cmplx);
LOAD_FUNC(dspl_info);
LOAD_FUNC(farrow_lagrange);
LOAD_FUNC(farrow_spline);
LOAD_FUNC(filter_iir);
LOAD_FUNC(filter_zp2ab);
LOAD_FUNC(fft);
LOAD_FUNC(fft_cmplx);
LOAD_FUNC(fft_create);
LOAD_FUNC(fft_free);
LOAD_FUNC(fft_shift);
LOAD_FUNC(fft_shift_cmplx);
LOAD_FUNC(flipip);
LOAD_FUNC(flipip_cmplx);
LOAD_FUNC(fourier_series_dec);
LOAD_FUNC(fourier_series_rec);
LOAD_FUNC(freqz);
LOAD_FUNC(freqs);
LOAD_FUNC(freqs_resp);
LOAD_FUNC(freqs2time);
LOAD_FUNC(goertzel);
LOAD_FUNC(goertzel_cmplx);
LOAD_FUNC(linspace);
LOAD_FUNC(log_cmplx);
LOAD_FUNC(logspace);
LOAD_FUNC(poly_z2a_cmplx);
LOAD_FUNC(polyval);
LOAD_FUNC(polyval_cmplx);
LOAD_FUNC(randn);
LOAD_FUNC(randu);
LOAD_FUNC(re2cmplx);
LOAD_FUNC(signal_pimp);
LOAD_FUNC(sin_cmplx);
LOAD_FUNC(sqrt_cmplx);
LOAD_FUNC(trapint);
LOAD_FUNC(trapint_cmplx);
LOAD_FUNC(unwrap);
LOAD_FUNC(writebin);
LOAD_FUNC(writetxt);
#ifdef WIN_OS
return (void*)handle;
exit_label:
printf("function %s loading ERROR!\n", fname);

Wyświetl plik

@ -271,6 +271,13 @@ DECLARE_FUNC(int, conv_cmplx, complex_t*
COMMA int
COMMA complex_t*);
//------------------------------------------------------------------------------
DECLARE_FUNC(int, conv_fft_cmplx, complex_t* a
COMMA int na
COMMA complex_t* b
COMMA int nb
COMMA fft_t* pfft
COMMA complex_t* c);
//------------------------------------------------------------------------------
DECLARE_FUNC(int, cos_cmplx, complex_t*
COMMA int
COMMA complex_t*);