00001 #ifndef __SPL_H
00002 #define __SPL_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #include <math.h>
00041 #include "spltdef.h"
00042
00043
00044
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048
00049
00050
00051
00052 #ifndef M_E
00053 #define M_E 2.71828182845904523536
00054 #endif
00055 #ifndef M_LOG2E
00056 #define M_LOG2E 1.44269504088896340736
00057 #endif
00058 #ifndef M_LOG10E
00059 #define M_LOG10E 0.434294481903251827651
00060 #endif
00061 #ifndef M_LN2
00062 #define M_LN2 0.693147180559945309417
00063 #endif
00064 #ifndef M_LN10
00065 #define M_LN10 2.30258509299404568402
00066 #endif
00067 #ifndef M_PI
00068 #define M_PI 3.14159265358979323846
00069 #endif
00070 #ifndef M_PI_2
00071 #define M_PI_2 1.57079632679489661923
00072 #endif
00073 #ifndef M_PI_4
00074 #define M_PI_4 0.785398163397448309616
00075 #endif
00076 #ifndef M_1_PI
00077 #define M_1_PI 0.318309886183790671538
00078 #endif
00079 #ifndef M_2_PI
00080 #define M_2_PI 0.636619772367581343076
00081 #endif
00082 #ifndef M_1_SQRTPI
00083 #define M_1_SQRTPI 0.564189583547756286948
00084 #endif
00085 #ifndef M_2_SQRTPI
00086 #define M_2_SQRTPI 1.12837916709551257390
00087 #endif
00088 #ifndef M_SQRT2
00089 #define M_SQRT2 1.41421356237309504880
00090 #endif
00091 #ifndef M_SQRT1_2
00092 #define M_SQRT1_2 0.707106781186547524401
00093 #endif
00094
00095
00096
00097
00098 #define BESSEL_PRECISION 1e-10
00099
00100 SPL_FLOAT API bessel_I0( SPL_FLOAT x );
00101
00102
00103
00104
00105 SPL_INT API idx_matrix_sim( SPL_INT i, SPL_INT j );
00106 #define idx_matrix_tri(i,j) idx_matrix_sim(i,j)
00107 SPL_INT API idx_matrix_dgn( SPL_INT i );
00108 #define __idx_matrix_sim(i,j) (((((i)-1)*(i))/2)+((j)-1))
00109 #define __idx_matrix_tri(i,j) __idx_matrix_sim(i,j)
00110 #define __idx_matrix_dgn(i) (i-1)
00111
00112 SPL_INT API nel_matrix_sim( SPL_INT n );
00113 #define nel_matrix_tri(n) nel_matrix_sim(n)
00114 SPL_INT API nel_matrix_dgn( SPL_INT n );
00115
00116 SPL_VOID API matrix_sim2tri( SPL_pFLOAT msi, SPL_pFLOAT mtr, SPL_INT n );
00117 SPL_VOID API matrix_sim2tri_dgn( SPL_pFLOAT msi, SPL_pFLOAT mtr,
00118 SPL_pFLOAT mdi, SPL_INT n );
00119
00120
00121
00122
00123 SPL_VOID API ecsys_tri( SPL_pFLOAT mA, SPL_pFLOAT vc, SPL_INT n,
00124 SPL_pFLOAT vx );
00125 SPL_VOID API ecsys_simtri( SPL_pFLOAT mB, SPL_pFLOAT vc, SPL_INT n,
00126 SPL_pFLOAT vx );
00127 SPL_VOID API ecsys_tri_dgn( SPL_pFLOAT mB, SPL_pFLOAT md, SPL_pFLOAT vc,
00128 SPL_INT n, SPL_pFLOAT vx );
00129
00130
00131
00132
00133 #define EIGEN_MAXITER 30
00134
00135 SPL_BOOL API eigen_tdg( SPL_pFLOAT vd, SPL_pFLOAT ve, SPL_INT n,
00136 SPL_pFLOAT mz );
00137
00138
00139
00140
00141 SPL_pFLOAT API win_rect( SPL_pFLOAT v, SPL_INT N );
00142 SPL_pFLOAT API win_bart( SPL_pFLOAT v, SPL_INT N );
00143 SPL_pFLOAT API win_hann( SPL_pFLOAT v, SPL_INT N );
00144 SPL_pFLOAT API win_hamm( SPL_pFLOAT v, SPL_INT N );
00145 SPL_pFLOAT API win_black( SPL_pFLOAT v, SPL_INT N );
00146 SPL_pFLOAT API win_kais( SPL_pFLOAT v, SPL_INT N, SPL_FLOAT b );
00147
00148 SPL_pFLOAT API win2_rect( SPL_pFLOAT v, SPL_INT N );
00149 SPL_pFLOAT API win2_bart( SPL_pFLOAT v, SPL_INT N );
00150 SPL_pFLOAT API win2_hann( SPL_pFLOAT v, SPL_INT N );
00151 SPL_pFLOAT API win2_hamm( SPL_pFLOAT v, SPL_INT N );
00152 SPL_pFLOAT API win2_black( SPL_pFLOAT v, SPL_INT N );
00153 SPL_pFLOAT API win2_kais( SPL_pFLOAT v, SPL_INT N, SPL_FLOAT b );
00154
00155 SPL_FLOAT API wini_rect( SPL_INT i, SPL_INT N );
00156 SPL_FLOAT API wini_bart( SPL_INT i, SPL_INT N );
00157 SPL_FLOAT API wini_hann( SPL_INT i, SPL_INT N );
00158 SPL_FLOAT API wini_hamm( SPL_INT i, SPL_INT N );
00159 SPL_FLOAT API wini_black( SPL_INT i, SPL_INT N );
00160 SPL_FLOAT API wini_kais( SPL_INT i, SPL_INT N, SPL_FLOAT b );
00161
00162 SPL_INT API nel_win( SPL_INT N );
00163 SPL_INT API nel_win2( SPL_INT N );
00164 SPL_INT API idx_win2( SPL_INT i, SPL_INT N );
00165
00166
00167
00168
00169 #define WIN_HAMM_EFVAL 0.397322
00170
00171
00172
00173
00174 SPL_INT API zero_cross( SPL_pFLOAT v, SPL_INT N );
00175
00176
00177
00178
00179 SPL_FLOAT API preen_i( SPL_FLOAT a, SPL_FLOAT i, SPL_FLOAT i0 );
00180 SPL_pFLOAT API preen_n( SPL_FLOAT a, SPL_pFLOAT vi, SPL_pFLOAT vo,
00181 SPL_INT N, SPL_FLOAT i0 );
00182
00183 SPL_FLOAT API deen_i( SPL_FLOAT a, SPL_FLOAT i, SPL_FLOAT o0 );
00184 SPL_pFLOAT API deen_n( SPL_FLOAT a, SPL_pFLOAT vi, SPL_pFLOAT vo,
00185 SPL_INT N, SPL_FLOAT o0 );
00186
00187
00188
00189
00190 SPL_FLOAT API acorr_i( SPL_pFLOAT v, SPL_INT N, SPL_INT i );
00191 SPL_FLOAT API acorr_i_n( SPL_pFLOAT v, SPL_INT N, SPL_INT i );
00192
00193 SPL_pFLOAT API acorr_ab( SPL_pFLOAT v, SPL_INT N, SPL_pFLOAT vac,
00194 SPL_INT a, SPL_INT b );
00195 SPL_FLOAT API acorr_ab_n( SPL_pFLOAT v, SPL_INT N, SPL_pFLOAT vac,
00196 SPL_INT a, SPL_INT b );
00197
00198 SPL_INT API nel_acorr_ab( SPL_INT a, SPL_INT b );
00199
00200
00201
00202
00203 SPL_FLOAT API covar_ij( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00204 SPL_INT i, SPL_INT j );
00205 SPL_FLOAT API covar_ij_n( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00206 SPL_INT i, SPL_INT j );
00207
00208 SPL_pFLOAT API xcovm_st( SPL_pFLOAT v, SPL_INT N, SPL_INT p, SPL_pFLOAT mcv );
00209 SPL_FLOAT API xcovm_st_n( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00210 SPL_pFLOAT mcv );
00211
00212 SPL_pFLOAT API xcovm_lt( SPL_pFLOAT v, SPL_INT N, SPL_INT fN,
00213 SPL_INT p, SPL_INT M, SPL_pFLOAT mcv );
00214 SPL_FLOAT API xcovm_lt_n( SPL_pFLOAT v, SPL_INT N, SPL_INT fN,
00215 SPL_INT p, SPL_INT M, SPL_pFLOAT mcv );
00216
00217 #define idx_covm(i,j) idx_matrix_sim(i,j)
00218 #define nel_covm(p) nel_matrix_sim(p)
00219 #define __idx_covm(i,j) __idx_matrix_sim(i,j)
00220
00221 SPL_INT API idx_xcovm( SPL_INT i, SPL_INT j, SPL_INT p );
00222 SPL_INT API nel_xcovm( SPL_INT p );
00223 #define __idx_xcovm(i,j,p) (((j)==0)?(i):(p)+1+(__idx_covm(i,j)))
00224
00225 SPL_FLOAT API covar_w_ij( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00226 SPL_INT i, SPL_INT j, SPL_pFLOAT vw );
00227 SPL_FLOAT API covar_w_ij_n( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00228 SPL_INT i, SPL_INT j, SPL_pFLOAT vw );
00229
00230 SPL_pFLOAT API xcovm_w_st( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00231 SPL_pFLOAT mcv, SPL_pFLOAT vw );
00232 SPL_FLOAT API xcovm_w_st_n( SPL_pFLOAT v, SPL_INT N, SPL_INT p,
00233 SPL_pFLOAT mcv, SPL_pFLOAT vw );
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246 #ifdef LP_NEGSUM
00247 #define LP_NEGSUM_NEG(n) (-(n))
00248 #define LP_POSSUM_NEG(n) (n)
00249 #else
00250 #define LP_NEGSUM_NEG(n) (n)
00251 #define LP_POSSUM_NEG(n) (-(n))
00252 #endif
00253
00254
00255
00256
00257 SPL_FLOAT API lpa_cor_dur_ka( SPL_pFLOAT vac, SPL_pFLOAT vki,
00258 SPL_pFLOAT vai, SPL_INT p, SPL_pFLOAT vtmp );
00259 SPL_FLOAT API lpa_cor_dur_k( SPL_pFLOAT vac, SPL_pFLOAT vki,
00260 SPL_INT p, SPL_pFLOAT vtmp );
00261 SPL_FLOAT API lpa_cor_dur_a( SPL_pFLOAT vac, SPL_pFLOAT vai,
00262 SPL_INT p, SPL_pFLOAT vtmp );
00263 SPL_FLOAT API lpa_cor_dur_e( SPL_pFLOAT vac, SPL_INT p, SPL_pFLOAT vtmp );
00264
00265 SPL_FLOAT API lpa_cor_atl_a( SPL_pFLOAT vac, SPL_pFLOAT vai,
00266 SPL_INT p, SPL_pFLOAT vtmp );
00267
00268 SPL_FLOAT API lpa_cor_sls_ka( SPL_pFLOAT vac, SPL_pFLOAT vki,
00269 SPL_pFLOAT vai, SPL_INT p, SPL_pFLOAT vtmp );
00270 SPL_FLOAT API lpa_cor_sls_k( SPL_pFLOAT vac, SPL_pFLOAT vki,
00271 SPL_INT p, SPL_pFLOAT vtmp );
00272 SPL_FLOAT API lpa_cor_sls_a( SPL_pFLOAT vac, SPL_pFLOAT vai,
00273 SPL_INT p, SPL_pFLOAT vtmp );
00274 SPL_FLOAT API lpa_cor_sls_e( SPL_pFLOAT vac, SPL_INT p, SPL_pFLOAT vtmp );
00275 SPL_FLOAT API lpa_cor_sls_xa( SPL_pFLOAT vac, SPL_pFLOAT vxs,
00276 SPL_INT p, SPL_pFLOAT vtmp );
00277 SPL_VOID API lpa_cor_sls_xa_ne( SPL_pFLOAT vac, SPL_pFLOAT vxs,
00278 SPL_INT p, SPL_pFLOAT vtmp );
00279
00280 SPL_FLOAT API lpa_cor_sla_ka( SPL_pFLOAT vac, SPL_pFLOAT vki,
00281 SPL_pFLOAT vai, SPL_INT p, SPL_pFLOAT vtmp );
00282 SPL_FLOAT API lpa_cor_sla_k( SPL_pFLOAT vac, SPL_pFLOAT vki,
00283 SPL_INT p, SPL_pFLOAT vtmp );
00284 SPL_FLOAT API lpa_cor_sla_a( SPL_pFLOAT vac, SPL_pFLOAT vai,
00285 SPL_INT p, SPL_pFLOAT vtmp );
00286 SPL_FLOAT API lpa_cor_sla_e( SPL_pFLOAT vac, SPL_INT p, SPL_pFLOAT vtmp );
00287 SPL_FLOAT API lpa_cor_sla_xa( SPL_pFLOAT vac, SPL_pFLOAT vxa,
00288 SPL_INT p, SPL_pFLOAT vtmp );
00289 SPL_VOID API lpa_cor_sla_xa_ne( SPL_pFLOAT vac, SPL_pFLOAT vxa,
00290 SPL_INT p, SPL_pFLOAT vtmp );
00291
00292 SPL_BOOL API lpa_cor_slv_lx( SPL_pFLOAT vac, SPL_pFLOAT vlx,
00293 SPL_INT p, SPL_pFLOAT E, SPL_pFLOAT vtmp );
00294
00295 SPL_VOID API lpa_cov_chl_a_ne( SPL_pFLOAT mcv, SPL_pFLOAT vai,
00296 SPL_INT p, SPL_pFLOAT vtmp );
00297 SPL_FLOAT API lpa_cov_chl_a( SPL_pFLOAT mcv, SPL_pFLOAT vai,
00298 SPL_INT p, SPL_pFLOAT vtmp );
00299
00300 SPL_FLOAT API lpa_cov_sch_k( SPL_pFLOAT mcv, SPL_pFLOAT vki,
00301 SPL_INT p, SPL_pFLOAT vtmp );
00302
00303
00304
00305
00306 SPL_pFLOAT API lp_k2a( SPL_pFLOAT vki, SPL_pFLOAT vai,
00307 SPL_INT p, SPL_pFLOAT vtmp );
00308 SPL_pFLOAT API lp_a2k( SPL_pFLOAT vai, SPL_pFLOAT vki,
00309 SPL_INT p, SPL_pFLOAT vtmp );
00310 SPL_pFLOAT API lp_k2ta( SPL_pFLOAT vki, SPL_pFLOAT vti, SPL_INT p );
00311 SPL_FLOAT API lp_a2rh( SPL_pFLOAT vai, SPL_pFLOAT vrh,
00312 SPL_INT p, SPL_pFLOAT vtmp );
00313 SPL_pFLOAT API lp_a2ra( SPL_pFLOAT vai, SPL_pFLOAT vra, SPL_INT p );
00314 SPL_pFLOAT API lp_a2c( SPL_pFLOAT vai, SPL_pFLOAT vci, SPL_INT p );
00315 SPL_FLOAT API lp_c0( SPL_FLOAT e );
00316 SPL_pFLOAT API lp_a2bwea( SPL_pFLOAT vai, SPL_pFLOAT vbwea,
00317 SPL_INT p, SPL_FLOAT gamma );
00318 SPL_VOID API lp_a2pq( SPL_pFLOAT vai, SPL_INT p, SPL_pFLOAT vpi,
00319 SPL_pFLOAT vqi, SPL_pFLOAT vtmp );
00320 SPL_pFLOAT API lp_lx2lw( SPL_pFLOAT vlx, SPL_pFLOAT vlw, SPL_INT p );
00321 SPL_pFLOAT API lp_lw2lx( SPL_pFLOAT vlw, SPL_pFLOAT vlx, SPL_INT p );
00322 SPL_BOOL API lp_a2lx( SPL_pFLOAT vai, SPL_pFLOAT vlx,
00323 SPL_INT p, SPL_pFLOAT vtmp );
00324 SPL_pFLOAT API lp_lx2a( SPL_pFLOAT vlx, SPL_pFLOAT vai,
00325 SPL_INT p, SPL_pFLOAT vtmp );
00326
00327
00328
00329
00330 SPL_FLOAT API lps_P_a( SPL_pFLOAT vs, SPL_pFLOAT vai, SPL_INT p );
00331 SPL_FLOAT API lps_A_a( SPL_pFLOAT vs, SPL_pFLOAT vai, SPL_INT p,
00332 SPL_FLOAT sn );
00333 SPL_FLOAT API lps_H_a( SPL_pFLOAT vs, SPL_pFLOAT vai, SPL_INT p,
00334 SPL_FLOAT en );
00335
00336 SPL_pFLOAT API lps_P_pn_a( SPL_pFLOAT vai, SPL_INT p,
00337 SPL_pFLOAT vpn, SPL_INT N );
00338 SPL_pFLOAT API lps_A_an_a( SPL_pFLOAT vai, SPL_INT p,
00339 SPL_pFLOAT van, SPL_INT N );
00340 SPL_pFLOAT API lps_H_hn_a( SPL_pFLOAT vai, SPL_INT p,
00341 SPL_pFLOAT vhn, SPL_INT N );
00342
00343
00344
00345
00346 SPL_INT API tnel_lpa_cor_dur_ka( SPL_INT p );
00347 SPL_INT API tnel_lpa_cor_dur_k( SPL_INT p );
00348 SPL_INT API tnel_lpa_cor_dur_a( SPL_INT p );
00349 SPL_INT API tnel_lpa_cor_dur_e( SPL_INT p );
00350
00351 SPL_INT API tnel_lpa_cor_atl_a( SPL_INT p );
00352
00353 SPL_INT API tnel_lpa_cor_sls( SPL_INT p );
00354 #define tnel_lpa_cor_sls_ka(p) tnel_lpa_cor_sls(p)
00355 #define tnel_lpa_cor_sls_k(p) tnel_lpa_cor_sls(p)
00356 #define tnel_lpa_cor_sls_a(p) tnel_lpa_cor_sls(p)
00357 #define tnel_lpa_cor_sls_e(p) tnel_lpa_cor_sls(p)
00358 #define tnel_lpa_cor_sls_xa(p) tnel_lpa_cor_sls(p)
00359 #define tnel_lpa_cor_sls_xa_ne(p) tnel_lpa_cor_sls(p)
00360
00361 SPL_INT API tnel_lpa_cor_sla( SPL_INT p );
00362 #define tnel_lpa_cor_sla_ka(p) tnel_lpa_cor_sla(p)
00363 #define tnel_lpa_cor_sla_k(p) tnel_lpa_cor_sla(p)
00364 #define tnel_lpa_cor_sla_a(p) tnel_lpa_cor_sla(p)
00365 #define tnel_lpa_cor_sla_e(p) tnel_lpa_cor_sla(p)
00366 #define tnel_lpa_cor_sla_xa(p) tnel_lpa_cor_sla(p)
00367 #define tnel_lpa_cor_sla_xa_ne(p) tnel_lpa_cor_sla(p)
00368
00369 SPL_INT API tnel_lpa_cor_slv_lx( SPL_INT p );
00370
00371 SPL_INT API tnel_lpa_cov_chl( SPL_INT p );
00372 #define tnel_lpa_cov_chl_a(p) tnel_lpa_cov_chl(p)
00373 #define tnel_lpa_cov_chl_a_ne(p) tnel_lpa_cov_chl(p)
00374
00375 SPL_INT API tnel_lpa_cov_sch_k( SPL_INT p );
00376
00377 SPL_INT API tnel_lp_k2a( SPL_INT p );
00378 SPL_INT API tnel_lp_a2k( SPL_INT p );
00379 SPL_INT API tnel_lp_a2rh( SPL_INT p );
00380 #define tnel_lp_rh2a(p) tnel_lpa_cor_sls_a(p)
00381 SPL_INT API tnel_lp_a2pq( SPL_INT p );
00382 SPL_INT API tnel_lp_a2lx( SPL_INT p );
00383 SPL_INT API tnel_lp_lx2a( SPL_INT p );
00384
00385
00386
00387
00388 SPL_FLOAT API noise_i_m( SPL_INT c );
00389 SPL_pFLOAT API noise_n_m( SPL_pFLOAT v, SPL_INT N, SPL_INT c );
00390 SPL_FLOAT API noise_mvar( SPL_INT c );
00391
00392 SPL_FLOAT API noise_i_v( SPL_INT c );
00393 SPL_pFLOAT API noise_n_v( SPL_pFLOAT v, SPL_INT N, SPL_INT c );
00394
00395 SPL_FLOAT API gnoise_i( SPL_INT c, SPL_FLOAT mean, SPL_FLOAT var );
00396 SPL_pFLOAT API gnoise_n( SPL_pFLOAT v, SPL_INT N, SPL_INT c,
00397 SPL_FLOAT mean, SPL_FLOAT var );
00398
00399
00400
00401
00402 SPL_INT API fil_get_L( SPL_FLOAT deltaA, SPL_FLOAT deltaF );
00403 SPL_FLOAT API fil_get_deltaA( SPL_INT L, SPL_FLOAT deltaF );
00404 SPL_FLOAT API fil_get_deltaF( SPL_INT L, SPL_FLOAT deltaA );
00405
00406 SPL_pFLOAT API fil_lpf( SPL_pFLOAT vh, SPL_FLOAT deltaA,
00407 SPL_FLOAT fc, SPL_INT L, SPL_FLOAT g );
00408 SPL_pFLOAT API fil_hpf( SPL_pFLOAT vh, SPL_FLOAT deltaA,
00409 SPL_FLOAT fc, SPL_INT L, SPL_FLOAT g );
00410 SPL_pFLOAT API fil_bpf( SPL_pFLOAT vh, SPL_FLOAT deltaA,
00411 SPL_FLOAT fc1, SPL_FLOAT fc2,
00412 SPL_INT L, SPL_FLOAT g );
00413 SPL_pFLOAT API fil_rbf( SPL_pFLOAT vh, SPL_FLOAT deltaA,
00414 SPL_FLOAT fc1, SPL_FLOAT fc2,
00415 SPL_INT L, SPL_FLOAT g );
00416
00417 SPL_INT API nel_fil( SPL_INT L );
00418
00419 SPL_FLOAT API fil_fil( SPL_pFLOAT vx, SPL_pFLOAT vh, SPL_INT L );
00420
00421
00422
00423
00424
00425 #define FFT_FACTOR 1.0
00426
00427
00428 #define FFT_ZERO 1.0e-6
00429
00430
00431 #define FFT_DIRECT SPL_FALSE
00432 #define FFT_INVERSE SPL_TRUE
00433
00434
00435 SPL_INT API fft_n_bits( SPL_INT np );
00436 SPL_BOOL API fft_test_2pow( SPL_INT n );
00437 SPL_VOID API fft_fill_half_tsin( SPL_pFLOAT vhts, SPL_INT tp );
00438 SPL_VOID API fft_fill_tsin_tcos( SPL_pFLOAT vts,
00439 SPL_pFLOAT vtc, SPL_INT tp );
00440 SPL_VOID API fft_htsin_fill_tsin_tcos( SPL_pFLOAT vts,
00441 SPL_pFLOAT vtc, SPL_pFLOAT vhts, SPL_INT tp );
00442 SPL_VOID API fft_fill_tinv( SPL_pINT vti, SPL_INT tp );
00443 SPL_VOID API fft_inverse_vecs( SPL_pFLOAT vre,
00444 SPL_pFLOAT vim, SPL_INT np );
00445 SPL_VOID API fft_scramble_re_in( SPL_pFLOAT vre,
00446 SPL_pFLOAT vim, SPL_INT np );
00447 SPL_VOID API fft_unscramble_cx_out( SPL_pFLOAT vre,
00448 SPL_pFLOAT vim, SPL_INT np,
00449 SPL_pFLOAT vhts, SPL_BOOL inv );
00450 SPL_VOID API fft_expand_cx_out( SPL_pFLOAT vre,
00451 SPL_pFLOAT vim, SPL_INT np );
00452 SPL_VOID API fft_fft( SPL_INT nb, SPL_BOOL inv, SPL_pFLOAT vre,
00453 SPL_pFLOAT vim, SPL_pFLOAT vts,
00454 SPL_pFLOAT vtc, SPL_FLOAT ufac );
00455
00456
00457 SPL_VOID API fft_cxfft( SPL_pFLOAT vre, SPL_pFLOAT vim, SPL_INT np,
00458 SPL_BOOL inv, SPL_FLOAT ufac, SPL_pFLOAT vtmp );
00459 SPL_INT API tnel_fft_cxfft( SPL_INT np );
00460
00461 SPL_VOID API fft_refft( SPL_pFLOAT vre, SPL_pFLOAT vim, SPL_INT np,
00462 SPL_BOOL inv, SPL_FLOAT ufac, SPL_pFLOAT vtmp );
00463 SPL_INT API tnel_fft_refft( SPL_INT np );
00464
00465
00466
00467 SPL_FLOAT API fft_zcx_norm( SPL_FLOAT re, SPL_FLOAT im );
00468 SPL_FLOAT API fft_zcx_arg( SPL_FLOAT re, SPL_FLOAT im );
00469 #define fft_zcx_mag(re,im) sqrt(fft_zcx_norm(re,im))
00470
00471
00472
00473 SPL_FLOAT API fft_cx_norm( SPL_FLOAT re, SPL_FLOAT im );
00474 #define fft_cx_arg(re,im) atan2(im,re)
00475 #define fft_cx_mag(re,im) sqrt(fft_cx_norm(re,im))
00476
00477 #define fft_cx_re(mag,arg) ((mag)*cos(arg))
00478 #define fft_cx_im(mag,arg) ((mag)*sin(arg))
00479
00480
00481 #define __fft_cx_norm(re,im) ((re)*(re)+(im)*(im))
00482 #define __fft_cx_mag(re,im) sqrt(__fft_cx_norm(re,im))
00483
00484
00485 VOID API spectral_color( SPL_INT colornum,
00486 SPL_FLOAT ncolors, SPL_FLOAT *r, SPL_FLOAT *g, SPL_FLOAT *b );
00487
00488
00489
00490
00491 SPL_INT API bki_env( SPL_INT fl, SPL_INT prefr, SPL_INT posfr,
00492 SPL_INT wl, SPL_INT prewi, SPL_INT poswi,
00493 SPL_pINT tprefr, SPL_pINT tposfr,
00494 SPL_pINT tprewi, SPL_pINT tposwi );
00495 SPL_LONG API bki_n2fn( SPL_INT fl, SPL_LONG n );
00496 SPL_LONG API bki_fn2n( SPL_INT fl, SPL_LONG fn );
00497 SPL_LONG API bki_fi2fs( SPL_INT fl, SPL_LONG fi );
00498 SPL_LONG API bki_fi2fe( SPL_INT fl, SPL_LONG fi );
00499 SPL_LONG API bki_fi2fc( SPL_INT fl, SPL_LONG fi );
00500 SPL_LONG API bki_i2fi( SPL_INT fl, SPL_LONG i );
00501
00502 SPL_FLOAT API bkd_env( SPL_FLOAT fl, SPL_FLOAT prefr, SPL_FLOAT posfr,
00503 SPL_FLOAT wl, SPL_FLOAT prewi, SPL_FLOAT poswi,
00504 SPL_pFLOAT tprefr, SPL_pFLOAT tposfr,
00505 SPL_pFLOAT tprewi, SPL_pFLOAT tposwi );
00506 SPL_FLOAT API bkd_n2fn( SPL_FLOAT fl, SPL_FLOAT n );
00507 SPL_FLOAT API bkd_fn2n( SPL_FLOAT fl, SPL_FLOAT fn );
00508 SPL_FLOAT API bkd_fi2fs( SPL_FLOAT fl, SPL_FLOAT fi );
00509 SPL_FLOAT API bkd_fi2fe( SPL_FLOAT fl, SPL_FLOAT fi );
00510 SPL_FLOAT API bkd_fi2fc( SPL_FLOAT fl, SPL_FLOAT fi );
00511 SPL_FLOAT API bkd_i2fi( SPL_FLOAT fl, SPL_FLOAT i );
00512
00513
00514
00515
00516
00517 #define DB_MIN_A 1e-15
00518 #define DB_MIN_AA (DB_MIN_A*DB_MIN_A)
00519
00520
00521 #define LOG2_MIN 1e-15
00522
00523
00524 #define LN_MIN 1e-15
00525
00526
00527 #define INT16_RANGE 32768L
00528 #define INT16_MIN -32768L
00529 #define INT16_MAX 32767L
00530
00531 SPL_FLOAT API samples2ms( SPL_FLOAT samples, SPL_FLOAT freq );
00532 SPL_FLOAT API ms2samples( SPL_FLOAT ms, SPL_FLOAT freq );
00533 SPL_FLOAT API samples2hz( SPL_FLOAT samples, SPL_FLOAT freq );
00534 SPL_FLOAT API hz2samples( SPL_FLOAT hz, SPL_FLOAT freq );
00535 SPL_FLOAT API hz2ms( SPL_FLOAT hz );
00536 SPL_FLOAT API ms2hz( SPL_FLOAT ms );
00537 SPL_FLOAT API hz2rad( SPL_FLOAT hz, SPL_FLOAT freq );
00538 SPL_FLOAT API rad2hz( SPL_FLOAT rad, SPL_FLOAT freq );
00539 SPL_FLOAT API hz2lhz( SPL_FLOAT hz );
00540 SPL_FLOAT API lhz2hz( SPL_FLOAT l2 );
00541 SPL_FLOAT API hz2lnhz( SPL_FLOAT hz );
00542 SPL_FLOAT API lnhz2hz( SPL_FLOAT lnhz );
00543 #define ms2lms(x) hz2lhz(x)
00544 #define lms2ms(x) lhz2hz(x)
00545 #define samples2lsamples(x) hz2lhz(x)
00546 #define lsamples2samples(x) lhz2hz(x)
00547
00548 SPL_FLOAT API r2bw( SPL_FLOAT r, SPL_FLOAT freq );
00549 SPL_FLOAT API bw2r( SPL_FLOAT bw, SPL_FLOAT freq );
00550
00551 SPL_FLOAT API a2db( SPL_FLOAT a );
00552 SPL_FLOAT API db2a( SPL_FLOAT db );
00553 SPL_FLOAT API aa2db( SPL_FLOAT aa );
00554 SPL_FLOAT API db2aa( SPL_FLOAT db );
00555
00556 SPL_FLOAT API a2bd( SPL_FLOAT a );
00557 SPL_FLOAT API bd2a( SPL_FLOAT bd );
00558 SPL_FLOAT API aa2bd( SPL_FLOAT aa );
00559 SPL_FLOAT API bd2aa( SPL_FLOAT bd );
00560
00561 SPL_FLOAT API normalize( SPL_FLOAT n, SPL_FLOAT neg1, SPL_FLOAT pos1 );
00562 SPL_FLOAT API unnormalize( SPL_FLOAT n, SPL_FLOAT neg1, SPL_FLOAT pos1 );
00563 SPL_FLOAT API snormalize( SPL_FLOAT n, SPL_FLOAT neg1, SPL_FLOAT pos1 );
00564 SPL_FLOAT API sunnormalize( SPL_FLOAT n, SPL_FLOAT neg1, SPL_FLOAT pos1 );
00565
00566 SPL_FLOAT API norm_i16( INT16 i16 );
00567 INT16 API unnorm_i16( SPL_FLOAT f );
00568 #define snorm_i16(i16) norm_i16(i16)
00569 INT16 API sunnorm_i16( SPL_FLOAT f );
00570
00571 SPL_FLOAT API lin2log2( SPL_FLOAT x );
00572 SPL_FLOAT API log22lin( SPL_FLOAT x );
00573
00574 SPL_FLOAT API lin2ln( SPL_FLOAT x );
00575 #define ln2lin(x) exp(x)
00576
00577
00578
00579 #ifdef __cplusplus
00580 }
00581 #endif
00582
00583
00584
00585 #endif
00586