diff --git a/external/liquid-dsp/How_to_build_liquid_dsp_for_Windows.txt b/external/liquid-dsp/How_to_build_liquid_dsp_for_Windows.txt index 675d273..18fb8da 100644 --- a/external/liquid-dsp/How_to_build_liquid_dsp_for_Windows.txt +++ b/external/liquid-dsp/How_to_build_liquid_dsp_for_Windows.txt @@ -4,7 +4,7 @@ - Add mingw32 and mingw64 compiler to the Msys2 installation. - Copy config.h, makefile.mingw32, makefile.mingw64 in the liquid-dsp root directory. - Run a Msys2 Win32 shell (mingw32.exe) and execute 'make -f makefile.mingw32 -j clean' then 'make -f makefile.mingw32 -j' to compile a libliquid.dll 32bit Windows Dll. -- Run a Msys2 Win64 shell (mingw64.exe) and execute 'make -f makefile.mingw64 -j clean' then 'make -f makefile.mingw32 -j' to compile a libliquid.dll 64bit Windows Dll. +- Run a Msys2 Win64 shell (mingw64.exe) and execute 'make -f makefile.mingw64 -j clean' then 'make -f makefile.mingw64 -j' to compile a libliquid.dll 64bit Windows Dll. This process generates a .dll, .a together with libliquid.def the listing exported functions, and libliquid.lib the import lib matching the dll. diff --git a/external/liquid-dsp/config.h b/external/liquid-dsp/config.h index 01a5eae..ec150bc 100644 --- a/external/liquid-dsp/config.h +++ b/external/liquid-dsp/config.h @@ -5,6 +5,7 @@ #ifndef __LIQUID_CONFIG_H__ #define __LIQUID_CONFIG_H__ + /* Define to 1 if you have the header file. */ #define HAVE_COMPLEX_H 1 @@ -45,6 +46,9 @@ /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 +/* Support MMX instructions */ +#define HAVE_MMX 1 + /* Define to 1 if you have the header file. */ //MMX #define HAVE_MMINTRIN_H 1 @@ -58,7 +62,7 @@ #define HAVE_PMMINTRIN_H 1 /* Define to 1 if you have the header file. */ //SSE4.1 -//#define HAVE_SMMINTRIN_H 1 +#define HAVE_SMMINTRIN_H 1 /* Define to 1 if you have the header file. */ //AVX //#define HAVE_IMMINTRIN_H 1 @@ -73,26 +77,23 @@ and to 0 otherwise. */ #define HAVE_REALLOC 1 -/* Support MMX instructions */ -#define HAVE_MMX /**/ - /* Support SSE (Streaming SIMD Extensions) instructions */ -#define HAVE_SSE /**/ +#define HAVE_SSE 1 /* Support SSE2 (Streaming SIMD Extensions 2) instructions */ -#define HAVE_SSE2 /**/ +#define HAVE_SSE2 1 /* Support SSE3 (Streaming SIMD Extensions 3) instructions */ -#define HAVE_SSE3 /**/ +#define HAVE_SSE3 1 /* Support SSE4.1 (Streaming SIMD Extensions 4.1) instructions */ -#define HAVE_SSE41 /**/ +#define HAVE_SSE41 1 /* Support SSE4.2 (Streaming SIMD Extensions 4.2) instructions */ #define HAVE_SSE42 1 /* Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions */ -#define HAVE_SSSE3 /**/ +#define HAVE_SSSE3 1 /* Support AVX (Advanced Vector Extensions) instructions */ #define HAVE_AVX /**/ @@ -128,7 +129,7 @@ #define HAVE_UNISTD_H 1 /* Force internal FFT even if libfftw is available */ -/* #undef LIQUID_FFTOVERRIDE */ +#define LIQUID_FFTOVERRIDE 1 /* Force overriding of SIMD (use portable C code) */ /* #undef LIQUID_SIMDOVERRIDE */ @@ -140,7 +141,7 @@ #define PACKAGE_NAME "liquid-dsp" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "liquid-dsp 1.3.0" +#define PACKAGE_STRING "liquid-dsp 1.3.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "liquid-dsp" @@ -149,7 +150,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.3.0" +#define PACKAGE_VERSION "1.3.1" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 diff --git a/external/liquid-dsp/gcc/32/libliquid.a b/external/liquid-dsp/gcc/32/libliquid.a index 43b8aa6..49d2d7c 100644 Binary files a/external/liquid-dsp/gcc/32/libliquid.a and b/external/liquid-dsp/gcc/32/libliquid.a differ diff --git a/external/liquid-dsp/gcc/32/libliquid.def b/external/liquid-dsp/gcc/32/libliquid.def deleted file mode 100644 index b270566..0000000 --- a/external/liquid-dsp/gcc/32/libliquid.def +++ /dev/null @@ -1,2158 +0,0 @@ -EXPORTS - agc_crcf_create @1 - agc_crcf_destroy @2 - agc_crcf_execute @3 - agc_crcf_execute_block @4 - agc_crcf_get_bandwidth @5 - agc_crcf_get_gain @6 - agc_crcf_get_rssi @7 - agc_crcf_get_signal_level @8 - agc_crcf_init @9 - agc_crcf_lock @10 - agc_crcf_print @11 - agc_crcf_reset @12 - agc_crcf_set_bandwidth @13 - agc_crcf_set_gain @14 - agc_crcf_set_rssi @15 - agc_crcf_set_signal_level @16 - agc_crcf_squelch_disable @17 - agc_crcf_squelch_enable @18 - agc_crcf_squelch_get_status @19 - agc_crcf_squelch_get_threshold @20 - agc_crcf_squelch_get_timeout @21 - agc_crcf_squelch_is_enabled @22 - agc_crcf_squelch_set_threshold @23 - agc_crcf_squelch_set_timeout @24 - agc_crcf_squelch_update_mode @25 - agc_crcf_unlock @26 - agc_rrrf_create @27 - agc_rrrf_destroy @28 - agc_rrrf_execute @29 - agc_rrrf_execute_block @30 - agc_rrrf_get_bandwidth @31 - agc_rrrf_get_gain @32 - agc_rrrf_get_rssi @33 - agc_rrrf_get_signal_level @34 - agc_rrrf_init @35 - agc_rrrf_lock @36 - agc_rrrf_print @37 - agc_rrrf_reset @38 - agc_rrrf_set_bandwidth @39 - agc_rrrf_set_gain @40 - agc_rrrf_set_rssi @41 - agc_rrrf_set_signal_level @42 - agc_rrrf_squelch_disable @43 - agc_rrrf_squelch_enable @44 - agc_rrrf_squelch_get_status @45 - agc_rrrf_squelch_get_threshold @46 - agc_rrrf_squelch_get_timeout @47 - agc_rrrf_squelch_is_enabled @48 - agc_rrrf_squelch_set_threshold @49 - agc_rrrf_squelch_set_timeout @50 - agc_rrrf_squelch_update_mode @51 - agc_rrrf_unlock @52 - ampmodem_create @53 - ampmodem_debug_print @54 - ampmodem_demodulate @55 - ampmodem_demodulate_block @56 - ampmodem_destroy @57 - ampmodem_modulate @58 - ampmodem_modulate_block @59 - ampmodem_print @60 - ampmodem_reset @61 - apsk128_map @62 DATA - apsk128_num_levels @63 DATA - apsk128_p @64 DATA - apsk128_phi @65 DATA - apsk128_r @66 DATA - apsk128_r_slicer @67 DATA - apsk16_map @68 DATA - apsk16_num_levels @69 DATA - apsk16_p @70 DATA - apsk16_phi @71 DATA - apsk16_r @72 DATA - apsk16_r_slicer @73 DATA - apsk256_map @74 DATA - apsk256_num_levels @75 DATA - apsk256_p @76 DATA - apsk256_phi @77 DATA - apsk256_r @78 DATA - apsk256_r_slicer @79 DATA - apsk32_map @80 DATA - apsk32_num_levels @81 DATA - apsk32_p @82 DATA - apsk32_phi @83 DATA - apsk32_r @84 DATA - apsk32_r_slicer @85 DATA - apsk4_map @86 DATA - apsk4_num_levels @87 DATA - apsk4_p @88 DATA - apsk4_phi @89 DATA - apsk4_r @90 DATA - apsk4_r_slicer @91 DATA - apsk64_map @92 DATA - apsk64_num_levels @93 DATA - apsk64_p @94 DATA - apsk64_phi @95 DATA - apsk64_r @96 DATA - apsk64_r_slicer @97 DATA - apsk8_map @98 DATA - apsk8_num_levels @99 DATA - apsk8_p @100 DATA - apsk8_phi @101 DATA - apsk8_r @102 DATA - apsk8_r_slicer @103 DATA - asgramcf_create @104 - asgramcf_destroy @105 - asgramcf_execute @106 - asgramcf_print @107 - asgramcf_push @108 - asgramcf_reset @109 - asgramcf_set_display @110 - asgramcf_set_scale @111 - asgramcf_write @112 - asgramf_create @113 - asgramf_destroy @114 - asgramf_execute @115 - asgramf_print @116 - asgramf_push @117 - asgramf_reset @118 - asgramf_set_display @119 - asgramf_set_scale @120 - asgramf_write @121 - autocorr_cccf_create @122 - autocorr_cccf_destroy @123 - autocorr_cccf_execute @124 - autocorr_cccf_execute_block @125 - autocorr_cccf_get_energy @126 - autocorr_cccf_print @127 - autocorr_cccf_push @128 - autocorr_cccf_reset @129 - autocorr_rrrf_create @130 - autocorr_rrrf_destroy @131 - autocorr_rrrf_execute @132 - autocorr_rrrf_execute_block @133 - autocorr_rrrf_get_energy @134 - autocorr_rrrf_print @135 - autocorr_rrrf_push @136 - autocorr_rrrf_reset @137 - awgn @138 - bessel_azpkf @139 - bilinear_zpkf @140 - blackmanharris @141 - blackmanharris7 @142 - bpacketgen_assemble_header @143 - bpacketgen_assemble_pnsequence @144 - bpacketgen_compute_packet_len @145 - bpacketgen_create @146 - bpacketgen_destroy @147 - bpacketgen_encode @148 - bpacketgen_get_packet_len @149 - bpacketgen_print @150 - bpacketgen_recreate @151 - bpacketsync_assemble_pnsequence @152 - bpacketsync_create @153 - bpacketsync_decode_header @154 - bpacketsync_decode_payload @155 - bpacketsync_destroy @156 - bpacketsync_execute @157 - bpacketsync_execute_bit @158 - bpacketsync_execute_byte @159 - bpacketsync_execute_rxheader @160 - bpacketsync_execute_rxpayload @161 - bpacketsync_execute_seekpn @162 - bpacketsync_execute_sym @163 - bpacketsync_print @164 - bpacketsync_reconfig @165 - bpacketsync_reset @166 - bpresync_cccf_correlate @167 - bpresync_cccf_correlatex @168 - bpresync_cccf_create @169 - bpresync_cccf_destroy @170 - bpresync_cccf_print @171 - bpresync_cccf_push @172 - bpresync_cccf_reset @173 - bsequence_accumulate @174 - bsequence_add @175 - bsequence_circshift @176 - bsequence_correlate @177 - bsequence_create @178 - bsequence_create_ccodes @179 - bsequence_destroy @180 - bsequence_get_length @181 - bsequence_index @182 - bsequence_init @183 - bsequence_init_msequence @184 - bsequence_mul @185 - bsequence_print @186 - bsequence_push @187 - bsequence_reset @188 - bsync_cccf_correlate @189 - bsync_cccf_create @190 - bsync_cccf_create_msequence @191 - bsync_cccf_destroy @192 - bsync_cccf_print @193 - bsync_crcf_correlate @194 - bsync_crcf_create @195 - bsync_crcf_create_msequence @196 - bsync_crcf_destroy @197 - bsync_crcf_print @198 - bsync_rrrf_correlate @199 - bsync_rrrf_create @200 - bsync_rrrf_create_msequence @201 - bsync_rrrf_destroy @202 - bsync_rrrf_print @203 - butter_azpkf @204 - cawgn @205 - cbuffercf_create @206 - cbuffercf_create_max @207 - cbuffercf_debug_print @208 - cbuffercf_destroy @209 - cbuffercf_is_full @210 - cbuffercf_linearize @211 - cbuffercf_max_read @212 - cbuffercf_max_size @213 - cbuffercf_pop @214 - cbuffercf_print @215 - cbuffercf_push @216 - cbuffercf_read @217 - cbuffercf_release @218 - cbuffercf_reset @219 - cbuffercf_size @220 - cbuffercf_space_available @221 - cbuffercf_write @222 - cbufferf_create @223 - cbufferf_create_max @224 - cbufferf_debug_print @225 - cbufferf_destroy @226 - cbufferf_is_full @227 - cbufferf_linearize @228 - cbufferf_max_read @229 - cbufferf_max_size @230 - cbufferf_pop @231 - cbufferf_print @232 - cbufferf_push @233 - cbufferf_read @234 - cbufferf_release @235 - cbufferf_reset @236 - cbufferf_size @237 - cbufferf_space_available @238 - cbufferf_write @239 - channel_cccf_add_awgn @240 - channel_cccf_add_carrier_offset @241 - channel_cccf_add_multipath @242 - channel_cccf_add_shadowing @243 - channel_cccf_create @244 - channel_cccf_destroy @245 - channel_cccf_execute @246 - channel_cccf_execute_block @247 - channel_cccf_print @248 - cheby1_azpkf @249 - cheby2_azpkf @250 - checksum_generate_key @251 - chromosome_copy @252 - chromosome_create @253 - chromosome_create_basic @254 - chromosome_create_clone @255 - chromosome_crossover @256 - chromosome_destroy @257 - chromosome_get_num_traits @258 - chromosome_init @259 - chromosome_init_random @260 - chromosome_initf @261 - chromosome_mutate @262 - chromosome_print @263 - chromosome_printf @264 - chromosome_reset @265 - chromosome_value @266 - chromosome_valuef @267 - compress_cf_mulaw @268 - compress_mulaw @269 - count_bit_errors @270 - count_bit_errors_array @271 - cpfskdem_create @272 - cpfskdem_demodulate @273 - cpfskdem_demodulate_coherent @274 - cpfskdem_demodulate_noncoherent @275 - cpfskdem_destroy @276 - cpfskdem_get_delay @277 - cpfskdem_init_coherent @278 - cpfskdem_init_noncoherent @279 - cpfskdem_print @280 - cpfskdem_reset @281 - cpfskmod_create @282 - cpfskmod_destroy @283 - cpfskmod_firdes @284 - cpfskmod_get_delay @285 - cpfskmod_modulate @286 - cpfskmod_print @287 - cpfskmod_reset @288 - crandnf @289 - crc16_generate_key @290 - crc24_generate_key @291 - crc32_generate_key @292 - crc8_generate_key @293 - crc_append_key @294 - crc_check_key @295 - crc_generate_key @296 - crc_get_length @297 - crc_scheme_str @298 DATA - crc_sizeof_key @299 - crc_validate_message @300 - cvsd_create @301 - cvsd_decode @302 - cvsd_decode8 @303 - cvsd_destroy @304 - cvsd_encode @305 - cvsd_encode8 @306 - cvsd_print @307 - detector_cccf_compute_dotprods @308 - detector_cccf_correlate @309 - detector_cccf_create @310 - detector_cccf_debug_print @311 - detector_cccf_destroy @312 - detector_cccf_estimate_offsets @313 - detector_cccf_print @314 - detector_cccf_reset @315 - detector_cccf_update_sumsq @316 - dotprod_cccf_create @317 - dotprod_cccf_destroy @318 - dotprod_cccf_execute @319 - dotprod_cccf_execute_mmx @320 - dotprod_cccf_execute_mmx4 @321 - dotprod_cccf_print @322 - dotprod_cccf_recreate @323 - dotprod_cccf_run @324 - dotprod_cccf_run4 @325 - dotprod_crcf_create @326 - dotprod_crcf_destroy @327 - dotprod_crcf_execute @328 - dotprod_crcf_execute_mmx @329 - dotprod_crcf_execute_mmx4 @330 - dotprod_crcf_print @331 - dotprod_crcf_recreate @332 - dotprod_crcf_run @333 - dotprod_crcf_run4 @334 - dotprod_rrrf_create @335 - dotprod_rrrf_destroy @336 - dotprod_rrrf_execute @337 - dotprod_rrrf_execute_mmx @338 - dotprod_rrrf_execute_mmx4 @339 - dotprod_rrrf_print @340 - dotprod_rrrf_recreate @341 - dotprod_rrrf_run @342 - dotprod_rrrf_run4 @343 - ellip_acdf @344 - ellip_asnf @345 - ellip_azpkf @346 - ellip_cdf @347 - ellip_snf @348 - ellipdegf @349 - ellipkf @350 - eqlms_cccf_create @351 - eqlms_cccf_create_lowpass @352 - eqlms_cccf_create_rnyquist @353 - eqlms_cccf_destroy @354 - eqlms_cccf_execute @355 - eqlms_cccf_execute_block @356 - eqlms_cccf_get_bw @357 - eqlms_cccf_get_weights @358 - eqlms_cccf_print @359 - eqlms_cccf_push @360 - eqlms_cccf_push_block @361 - eqlms_cccf_recreate @362 - eqlms_cccf_reset @363 - eqlms_cccf_set_bw @364 - eqlms_cccf_step @365 - eqlms_cccf_step_blind @366 - eqlms_cccf_train @367 - eqlms_cccf_update_sumsq @368 - eqlms_rrrf_create @369 - eqlms_rrrf_create_lowpass @370 - eqlms_rrrf_create_rnyquist @371 - eqlms_rrrf_destroy @372 - eqlms_rrrf_execute @373 - eqlms_rrrf_execute_block @374 - eqlms_rrrf_get_bw @375 - eqlms_rrrf_get_weights @376 - eqlms_rrrf_print @377 - eqlms_rrrf_push @378 - eqlms_rrrf_push_block @379 - eqlms_rrrf_recreate @380 - eqlms_rrrf_reset @381 - eqlms_rrrf_set_bw @382 - eqlms_rrrf_step @383 - eqlms_rrrf_step_blind @384 - eqlms_rrrf_train @385 - eqlms_rrrf_update_sumsq @386 - eqrls_cccf_create @387 - eqrls_cccf_destroy @388 - eqrls_cccf_execute @389 - eqrls_cccf_get_bw @390 - eqrls_cccf_get_weights @391 - eqrls_cccf_print @392 - eqrls_cccf_push @393 - eqrls_cccf_recreate @394 - eqrls_cccf_reset @395 - eqrls_cccf_set_bw @396 - eqrls_cccf_step @397 - eqrls_cccf_train @398 - eqrls_rrrf_create @399 - eqrls_rrrf_destroy @400 - eqrls_rrrf_execute @401 - eqrls_rrrf_get_bw @402 - eqrls_rrrf_get_weights @403 - eqrls_rrrf_print @404 - eqrls_rrrf_push @405 - eqrls_rrrf_recreate @406 - eqrls_rrrf_reset @407 - eqrls_rrrf_set_bw @408 - eqrls_rrrf_step @409 - eqrls_rrrf_train @410 - estimate_req_filter_As @411 - estimate_req_filter_df @412 - estimate_req_filter_len @413 - estimate_req_filter_len_Herrmann @414 - estimate_req_filter_len_Kaiser @415 - expand_cf_mulaw @416 - expand_mulaw @417 - fec_block_get_enc_msg_len @418 - fec_conv27_poly @419 DATA - fec_conv27p23_matrix @420 DATA - fec_conv27p34_matrix @421 DATA - fec_conv27p45_matrix @422 DATA - fec_conv27p56_matrix @423 DATA - fec_conv27p67_matrix @424 DATA - fec_conv27p78_matrix @425 DATA - fec_conv29_poly @426 DATA - fec_conv29p23_matrix @427 DATA - fec_conv29p34_matrix @428 DATA - fec_conv29p45_matrix @429 DATA - fec_conv29p56_matrix @430 DATA - fec_conv29p67_matrix @431 DATA - fec_conv29p78_matrix @432 DATA - fec_conv39_poly @433 DATA - fec_conv615_poly @434 DATA - fec_conv_create @435 - fec_conv_destroy @436 - fec_conv_get_enc_msg_len @437 - fec_conv_punctured_create @438 - fec_conv_punctured_decode @439 - fec_conv_punctured_destroy @440 - fec_conv_punctured_encode @441 - fec_create @442 - fec_decode @443 - fec_decode_soft @444 - fec_destroy @445 - fec_encode @446 - fec_get_enc_msg_length @447 - fec_get_rate @448 - fec_golay2412_create @449 - fec_golay2412_decode @450 - fec_golay2412_decode_symbol @451 - fec_golay2412_destroy @452 - fec_golay2412_encode @453 - fec_golay2412_encode_symbol @454 - fec_hamming128_create @455 - fec_hamming128_decode @456 - fec_hamming128_decode_soft @457 - fec_hamming128_decode_symbol @458 - fec_hamming128_destroy @459 - fec_hamming128_encode @460 - fec_hamming128_encode_symbol @461 - fec_hamming1511_decode_symbol @462 - fec_hamming1511_encode_symbol @463 - fec_hamming3126_decode_symbol @464 - fec_hamming3126_encode_symbol @465 - fec_hamming74_create @466 - fec_hamming74_decode @467 - fec_hamming74_decode_soft @468 - fec_hamming74_destroy @469 - fec_hamming74_encode @470 - fec_hamming84_create @471 - fec_hamming84_decode @472 - fec_hamming84_decode_soft @473 - fec_hamming84_destroy @474 - fec_hamming84_encode @475 - fec_pass_create @476 - fec_pass_decode @477 - fec_pass_destroy @478 - fec_pass_encode @479 - fec_pass_print @480 - fec_print @481 - fec_recreate @482 - fec_rep3_create @483 - fec_rep3_decode @484 - fec_rep3_decode_soft @485 - fec_rep3_destroy @486 - fec_rep3_encode @487 - fec_rep3_print @488 - fec_rep5_create @489 - fec_rep5_decode @490 - fec_rep5_decode_soft @491 - fec_rep5_destroy @492 - fec_rep5_encode @493 - fec_rep5_print @494 - fec_rs_create @495 - fec_rs_decode @496 - fec_rs_destroy @497 - fec_rs_encode @498 - fec_rs_get_enc_msg_len @499 - fec_scheme_is_convolutional @500 - fec_scheme_is_hamming @501 - fec_scheme_is_punctured @502 - fec_scheme_is_reedsolomon @503 - fec_scheme_is_repeat @504 - fec_scheme_str @505 DATA - fec_secded2216_compute_parity @506 - fec_secded2216_compute_syndrome @507 - fec_secded2216_create @508 - fec_secded2216_decode @509 - fec_secded2216_decode_symbol @510 - fec_secded2216_destroy @511 - fec_secded2216_encode @512 - fec_secded2216_encode_symbol @513 - fec_secded2216_estimate_ehat @514 - fec_secded3932_compute_parity @515 - fec_secded3932_compute_syndrome @516 - fec_secded3932_create @517 - fec_secded3932_decode @518 - fec_secded3932_decode_symbol @519 - fec_secded3932_destroy @520 - fec_secded3932_encode @521 - fec_secded3932_encode_symbol @522 - fec_secded3932_estimate_ehat @523 - fec_secded7264_compute_parity @524 - fec_secded7264_compute_syndrome @525 - fec_secded7264_create @526 - fec_secded7264_decode @527 - fec_secded7264_decode_symbol @528 - fec_secded7264_destroy @529 - fec_secded7264_encode @530 - fec_secded7264_encode_symbol @531 - fec_secded7264_estimate_ehat @532 - fec_sumproduct @533 - fec_sumproduct_step @534 - fecsoft_hamming128_decode @535 - fecsoft_hamming128_decode_n3 @536 - fecsoft_hamming128_n3 @537 DATA - fecsoft_hamming74_decode @538 - fecsoft_hamming84_decode @539 - fft_create_plan @540 - fft_create_plan_dft @541 - fft_create_plan_mixed_radix @542 - fft_create_plan_r2r_1d @543 - fft_create_plan_rader @544 - fft_create_plan_rader2 @545 - fft_create_plan_radix2 @546 - fft_destroy_plan @547 - fft_destroy_plan_dft @548 - fft_destroy_plan_mixed_radix @549 - fft_destroy_plan_r2r_1d @550 - fft_destroy_plan_rader @551 - fft_destroy_plan_rader2 @552 - fft_destroy_plan_radix2 @553 - fft_estimate_mixed_radix @554 - fft_execute @555 - fft_execute_REDFT00 @556 - fft_execute_REDFT01 @557 - fft_execute_REDFT10 @558 - fft_execute_REDFT11 @559 - fft_execute_RODFT00 @560 - fft_execute_RODFT01 @561 - fft_execute_RODFT10 @562 - fft_execute_RODFT11 @563 - fft_execute_dft @564 - fft_execute_dft_16 @565 - fft_execute_dft_2 @566 - fft_execute_dft_3 @567 - fft_execute_dft_4 @568 - fft_execute_dft_5 @569 - fft_execute_dft_6 @570 - fft_execute_dft_7 @571 - fft_execute_dft_8 @572 - fft_execute_mixed_radix @573 - fft_execute_rader @574 - fft_execute_rader2 @575 - fft_execute_radix2 @576 - fft_is_radix2 @577 - fft_print_plan @578 - fft_print_plan_r2r_1d @579 - fft_print_plan_recursive @580 - fft_r2r_1d_run @581 - fft_reverse_index @582 - fft_run @583 - fft_shift @584 - fftfilt_cccf_create @585 - fftfilt_cccf_destroy @586 - fftfilt_cccf_execute @587 - fftfilt_cccf_get_length @588 - fftfilt_cccf_print @589 - fftfilt_cccf_reset @590 - fftfilt_cccf_set_scale @591 - fftfilt_crcf_create @592 - fftfilt_crcf_destroy @593 - fftfilt_crcf_execute @594 - fftfilt_crcf_get_length @595 - fftfilt_crcf_print @596 - fftfilt_crcf_reset @597 - fftfilt_crcf_set_scale @598 - fftfilt_rrrf_create @599 - fftfilt_rrrf_destroy @600 - fftfilt_rrrf_execute @601 - fftfilt_rrrf_get_length @602 - fftfilt_rrrf_print @603 - fftfilt_rrrf_reset @604 - fftfilt_rrrf_set_scale @605 - fir_group_delay @606 - firdecim_cccf_create @607 - firdecim_cccf_create_kaiser @608 - firdecim_cccf_create_prototype @609 - firdecim_cccf_destroy @610 - firdecim_cccf_execute @611 - firdecim_cccf_execute_block @612 - firdecim_cccf_print @613 - firdecim_cccf_reset @614 - firdecim_crcf_create @615 - firdecim_crcf_create_kaiser @616 - firdecim_crcf_create_prototype @617 - firdecim_crcf_destroy @618 - firdecim_crcf_execute @619 - firdecim_crcf_execute_block @620 - firdecim_crcf_print @621 - firdecim_crcf_reset @622 - firdecim_rrrf_create @623 - firdecim_rrrf_create_kaiser @624 - firdecim_rrrf_create_prototype @625 - firdecim_rrrf_destroy @626 - firdecim_rrrf_execute @627 - firdecim_rrrf_execute_block @628 - firdecim_rrrf_print @629 - firdecim_rrrf_reset @630 - firdespm_compute_error @631 - firdespm_compute_interp @632 - firdespm_compute_taps @633 - firdespm_create @634 - firdespm_create_callback @635 - firdespm_destroy @636 - firdespm_execute @637 - firdespm_iext_search @638 - firdespm_init_grid @639 - firdespm_init_memory @640 - firdespm_is_search_complete @641 - firdespm_lowpass @642 - firdespm_print @643 - firdespm_run @644 - firfarrow_crcf_create @645 - firfarrow_crcf_destroy @646 - firfarrow_crcf_execute @647 - firfarrow_crcf_execute_block @648 - firfarrow_crcf_freqresponse @649 - firfarrow_crcf_genpoly @650 - firfarrow_crcf_get_coefficients @651 - firfarrow_crcf_get_length @652 - firfarrow_crcf_groupdelay @653 - firfarrow_crcf_print @654 - firfarrow_crcf_push @655 - firfarrow_crcf_reset @656 - firfarrow_crcf_set_delay @657 - firfarrow_rrrf_create @658 - firfarrow_rrrf_destroy @659 - firfarrow_rrrf_execute @660 - firfarrow_rrrf_execute_block @661 - firfarrow_rrrf_freqresponse @662 - firfarrow_rrrf_genpoly @663 - firfarrow_rrrf_get_coefficients @664 - firfarrow_rrrf_get_length @665 - firfarrow_rrrf_groupdelay @666 - firfarrow_rrrf_print @667 - firfarrow_rrrf_push @668 - firfarrow_rrrf_reset @669 - firfarrow_rrrf_set_delay @670 - firfilt_cccf_create @671 - firfilt_cccf_create_kaiser @672 - firfilt_cccf_create_rect @673 - firfilt_cccf_create_rnyquist @674 - firfilt_cccf_destroy @675 - firfilt_cccf_execute @676 - firfilt_cccf_execute_block @677 - firfilt_cccf_freqresponse @678 - firfilt_cccf_get_length @679 - firfilt_cccf_groupdelay @680 - firfilt_cccf_print @681 - firfilt_cccf_push @682 - firfilt_cccf_recreate @683 - firfilt_cccf_reset @684 - firfilt_cccf_set_scale @685 - firfilt_crcf_create @686 - firfilt_crcf_create_kaiser @687 - firfilt_crcf_create_rect @688 - firfilt_crcf_create_rnyquist @689 - firfilt_crcf_destroy @690 - firfilt_crcf_execute @691 - firfilt_crcf_execute_block @692 - firfilt_crcf_freqresponse @693 - firfilt_crcf_get_length @694 - firfilt_crcf_groupdelay @695 - firfilt_crcf_print @696 - firfilt_crcf_push @697 - firfilt_crcf_recreate @698 - firfilt_crcf_reset @699 - firfilt_crcf_set_scale @700 - firfilt_rrrf_create @701 - firfilt_rrrf_create_kaiser @702 - firfilt_rrrf_create_rect @703 - firfilt_rrrf_create_rnyquist @704 - firfilt_rrrf_destroy @705 - firfilt_rrrf_execute @706 - firfilt_rrrf_execute_block @707 - firfilt_rrrf_freqresponse @708 - firfilt_rrrf_get_length @709 - firfilt_rrrf_groupdelay @710 - firfilt_rrrf_print @711 - firfilt_rrrf_push @712 - firfilt_rrrf_recreate @713 - firfilt_rrrf_reset @714 - firfilt_rrrf_set_scale @715 - firhilbf_c2r_execute @716 - firhilbf_create @717 - firhilbf_decim_execute @718 - firhilbf_decim_execute_block @719 - firhilbf_destroy @720 - firhilbf_interp_execute @721 - firhilbf_interp_execute_block @722 - firhilbf_print @723 - firhilbf_r2c_execute @724 - firhilbf_reset @725 - firinterp_cccf_create @726 - firinterp_cccf_create_kaiser @727 - firinterp_cccf_create_prototype @728 - firinterp_cccf_destroy @729 - firinterp_cccf_execute @730 - firinterp_cccf_execute_block @731 - firinterp_cccf_print @732 - firinterp_cccf_reset @733 - firinterp_crcf_create @734 - firinterp_crcf_create_kaiser @735 - firinterp_crcf_create_prototype @736 - firinterp_crcf_destroy @737 - firinterp_crcf_execute @738 - firinterp_crcf_execute_block @739 - firinterp_crcf_print @740 - firinterp_crcf_reset @741 - firinterp_rrrf_create @742 - firinterp_rrrf_create_kaiser @743 - firinterp_rrrf_create_prototype @744 - firinterp_rrrf_destroy @745 - firinterp_rrrf_execute @746 - firinterp_rrrf_execute_block @747 - firinterp_rrrf_print @748 - firinterp_rrrf_reset @749 - firpfb_cccf_create @750 - firpfb_cccf_create_drnyquist @751 - firpfb_cccf_create_kaiser @752 - firpfb_cccf_create_rnyquist @753 - firpfb_cccf_destroy @754 - firpfb_cccf_execute @755 - firpfb_cccf_execute_block @756 - firpfb_cccf_print @757 - firpfb_cccf_push @758 - firpfb_cccf_recreate @759 - firpfb_cccf_reset @760 - firpfb_cccf_set_scale @761 - firpfb_crcf_create @762 - firpfb_crcf_create_drnyquist @763 - firpfb_crcf_create_kaiser @764 - firpfb_crcf_create_rnyquist @765 - firpfb_crcf_destroy @766 - firpfb_crcf_execute @767 - firpfb_crcf_execute_block @768 - firpfb_crcf_print @769 - firpfb_crcf_push @770 - firpfb_crcf_recreate @771 - firpfb_crcf_reset @772 - firpfb_crcf_set_scale @773 - firpfb_rrrf_create @774 - firpfb_rrrf_create_drnyquist @775 - firpfb_rrrf_create_kaiser @776 - firpfb_rrrf_create_rnyquist @777 - firpfb_rrrf_destroy @778 - firpfb_rrrf_execute @779 - firpfb_rrrf_execute_block @780 - firpfb_rrrf_print @781 - firpfb_rrrf_push @782 - firpfb_rrrf_recreate @783 - firpfb_rrrf_reset @784 - firpfb_rrrf_set_scale @785 - firpfbch2_crcf_create @786 - firpfbch2_crcf_create_kaiser @787 - firpfbch2_crcf_destroy @788 - firpfbch2_crcf_execute @789 - firpfbch2_crcf_execute_analyzer @790 - firpfbch2_crcf_execute_synthesizer @791 - firpfbch2_crcf_print @792 - firpfbch2_crcf_reset @793 - firpfbch_cccf_analyzer_execute @794 - firpfbch_cccf_analyzer_push @795 - firpfbch_cccf_analyzer_run @796 - firpfbch_cccf_create @797 - firpfbch_cccf_create_kaiser @798 - firpfbch_cccf_create_rnyquist @799 - firpfbch_cccf_destroy @800 - firpfbch_cccf_print @801 - firpfbch_cccf_reset @802 - firpfbch_cccf_synthesizer_execute @803 - firpfbch_crcf_analyzer_execute @804 - firpfbch_crcf_analyzer_push @805 - firpfbch_crcf_analyzer_run @806 - firpfbch_crcf_create @807 - firpfbch_crcf_create_kaiser @808 - firpfbch_crcf_create_rnyquist @809 - firpfbch_crcf_destroy @810 - firpfbch_crcf_print @811 - firpfbch_crcf_reset @812 - firpfbch_crcf_synthesizer_execute @813 - flattop @814 - flexframegen_assemble @815 - flexframegen_create @816 - flexframegen_destroy @817 - flexframegen_generate_header @818 - flexframegen_generate_payload @819 - flexframegen_generate_preamble @820 - flexframegen_generate_symbol @821 - flexframegen_generate_tail @822 - flexframegen_getframelen @823 - flexframegen_getprops @824 - flexframegen_is_assembled @825 - flexframegen_print @826 - flexframegen_reconfigure @827 - flexframegen_reset @828 - flexframegen_setprops @829 - flexframegen_write_samples @830 - flexframegenprops_init_default @831 - flexframesync_create @832 - flexframesync_debug_disable @833 - flexframesync_debug_enable @834 - flexframesync_debug_print @835 - flexframesync_decode_header @836 - flexframesync_destroy @837 - flexframesync_execute @838 - flexframesync_execute_rxheader @839 - flexframesync_execute_rxpayload @840 - flexframesync_execute_rxpreamble @841 - flexframesync_execute_seekpn @842 - flexframesync_get_framedatastats @843 - flexframesync_is_frame_open @844 - flexframesync_print @845 - flexframesync_reset @846 - flexframesync_reset_framedatastats @847 - flexframesync_step @848 - fpoly_bessel @849 - fpoly_bessel_roots @850 - fpoly_bessel_roots_orchard @851 - fpoly_bessel_roots_orchard_recursion @852 - framedatastats_print @853 - framedatastats_reset @854 - framegen64_create @855 - framegen64_destroy @856 - framegen64_execute @857 - framegen64_print @858 - framesync64_create @859 - framesync64_debug_disable @860 - framesync64_debug_enable @861 - framesync64_debug_print @862 - framesync64_destroy @863 - framesync64_execute @864 - framesync64_execute_rxpayload @865 - framesync64_execute_rxpreamble @866 - framesync64_execute_seekpn @867 - framesync64_print @868 - framesync64_reset @869 - framesync64_step @870 - framesyncstats_default @871 DATA - framesyncstats_init_default @872 - framesyncstats_print @873 - freqdem_create @874 - freqdem_demodulate @875 - freqdem_demodulate_block @876 - freqdem_destroy @877 - freqdem_print @878 - freqdem_reset @879 - freqmod_create @880 - freqmod_destroy @881 - freqmod_modulate @882 - freqmod_modulate_block @883 - freqmod_print @884 - freqmod_reset @885 - fskdem_create @886 - fskdem_demodulate @887 - fskdem_destroy @888 - fskdem_get_frequency_error @889 - fskdem_print @890 - fskdem_reset @891 - fskmod_create @892 - fskmod_destroy @893 - fskmod_modulate @894 - fskmod_print @895 - fskmod_reset @896 - gasearch_create @897 - gasearch_create_advanced @898 - gasearch_crossover @899 - gasearch_destroy @900 - gasearch_evaluate @901 - gasearch_evolve @902 - gasearch_getopt @903 - gasearch_mutate @904 - gasearch_print @905 - gasearch_rank @906 - gasearch_run @907 - gasearch_set_mutation_rate @908 - gasearch_set_population_size @909 - gmskdem_create @910 - gmskdem_debug_print @911 - gmskdem_demodulate @912 - gmskdem_destroy @913 - gmskdem_print @914 - gmskdem_reset @915 - gmskdem_set_eq_bw @916 - gmskframegen_assemble @917 - gmskframegen_create @918 - gmskframegen_destroy @919 - gmskframegen_encode_header @920 - gmskframegen_getframelen @921 - gmskframegen_is_assembled @922 - gmskframegen_print @923 - gmskframegen_reset @924 - gmskframegen_write_header @925 - gmskframegen_write_payload @926 - gmskframegen_write_preamble @927 - gmskframegen_write_samples @928 - gmskframegen_write_tail @929 - gmskframesync_create @930 - gmskframesync_debug_disable @931 - gmskframesync_debug_enable @932 - gmskframesync_debug_print @933 - gmskframesync_decode_header @934 - gmskframesync_destroy @935 - gmskframesync_execute @936 - gmskframesync_execute_detectframe @937 - gmskframesync_execute_rxheader @938 - gmskframesync_execute_rxpayload @939 - gmskframesync_execute_rxpreamble @940 - gmskframesync_execute_sample @941 - gmskframesync_is_frame_open @942 - gmskframesync_print @943 - gmskframesync_pushpn @944 - gmskframesync_reset @945 - gmskframesync_syncpn @946 - gmskframesync_update_fi @947 - gmskframesync_update_symsync @948 - gmskmod_create @949 - gmskmod_destroy @950 - gmskmod_modulate @951 - gmskmod_print @952 - gmskmod_reset @953 - golay2412_Gt @954 DATA - golay2412_H @955 DATA - golay2412_P @956 DATA - golay2412_matrix_mul @957 - golay2412_parity_search @958 - gradsearch_create @959 - gradsearch_destroy @960 - gradsearch_execute @961 - gradsearch_gradient @962 - gradsearch_linesearch @963 - gradsearch_norm @964 - gradsearch_print @965 - gradsearch_step @966 - gray_decode @967 - gray_encode @968 - hamming @969 - hamming128_enc_gentab @970 DATA - hamming74_dec_gentab @971 DATA - hamming74_enc_gentab @972 DATA - hamming84_dec_gentab @973 DATA - hamming84_enc_gentab @974 DATA - hann @975 - icrandnf @976 - iir_group_delay @977 - iirdecim_cccf_create @978 - iirdecim_cccf_create_default @979 - iirdecim_cccf_create_prototype @980 - iirdecim_cccf_destroy @981 - iirdecim_cccf_execute @982 - iirdecim_cccf_execute_block @983 - iirdecim_cccf_groupdelay @984 - iirdecim_cccf_print @985 - iirdecim_cccf_reset @986 - iirdecim_crcf_create @987 - iirdecim_crcf_create_default @988 - iirdecim_crcf_create_prototype @989 - iirdecim_crcf_destroy @990 - iirdecim_crcf_execute @991 - iirdecim_crcf_execute_block @992 - iirdecim_crcf_groupdelay @993 - iirdecim_crcf_print @994 - iirdecim_crcf_reset @995 - iirdecim_rrrf_create @996 - iirdecim_rrrf_create_default @997 - iirdecim_rrrf_create_prototype @998 - iirdecim_rrrf_destroy @999 - iirdecim_rrrf_execute @1000 - iirdecim_rrrf_execute_block @1001 - iirdecim_rrrf_groupdelay @1002 - iirdecim_rrrf_print @1003 - iirdecim_rrrf_reset @1004 - iirdes_dzpk2sosf @1005 - iirdes_dzpk2tff @1006 - iirdes_dzpk_lp2bp @1007 - iirdes_dzpk_lp2hp @1008 - iirdes_freqprewarp @1009 - iirdes_isstable @1010 - iirdes_pll_active_PI @1011 - iirdes_pll_active_lag @1012 - iirfilt_cccf_create @1013 - iirfilt_cccf_create_dc_blocker @1014 - iirfilt_cccf_create_differentiator @1015 - iirfilt_cccf_create_integrator @1016 - iirfilt_cccf_create_lowpass @1017 - iirfilt_cccf_create_pll @1018 - iirfilt_cccf_create_prototype @1019 - iirfilt_cccf_create_sos @1020 - iirfilt_cccf_destroy @1021 - iirfilt_cccf_execute @1022 - iirfilt_cccf_execute_block @1023 - iirfilt_cccf_execute_norm @1024 - iirfilt_cccf_execute_sos @1025 - iirfilt_cccf_freqresponse @1026 - iirfilt_cccf_get_length @1027 - iirfilt_cccf_groupdelay @1028 - iirfilt_cccf_init @1029 - iirfilt_cccf_print @1030 - iirfilt_cccf_reset @1031 - iirfilt_crcf_create @1032 - iirfilt_crcf_create_dc_blocker @1033 - iirfilt_crcf_create_differentiator @1034 - iirfilt_crcf_create_integrator @1035 - iirfilt_crcf_create_lowpass @1036 - iirfilt_crcf_create_pll @1037 - iirfilt_crcf_create_prototype @1038 - iirfilt_crcf_create_sos @1039 - iirfilt_crcf_destroy @1040 - iirfilt_crcf_execute @1041 - iirfilt_crcf_execute_block @1042 - iirfilt_crcf_execute_norm @1043 - iirfilt_crcf_execute_sos @1044 - iirfilt_crcf_freqresponse @1045 - iirfilt_crcf_get_length @1046 - iirfilt_crcf_groupdelay @1047 - iirfilt_crcf_init @1048 - iirfilt_crcf_print @1049 - iirfilt_crcf_reset @1050 - iirfilt_rrrf_create @1051 - iirfilt_rrrf_create_dc_blocker @1052 - iirfilt_rrrf_create_differentiator @1053 - iirfilt_rrrf_create_integrator @1054 - iirfilt_rrrf_create_lowpass @1055 - iirfilt_rrrf_create_pll @1056 - iirfilt_rrrf_create_prototype @1057 - iirfilt_rrrf_create_sos @1058 - iirfilt_rrrf_destroy @1059 - iirfilt_rrrf_execute @1060 - iirfilt_rrrf_execute_block @1061 - iirfilt_rrrf_execute_norm @1062 - iirfilt_rrrf_execute_sos @1063 - iirfilt_rrrf_freqresponse @1064 - iirfilt_rrrf_get_length @1065 - iirfilt_rrrf_groupdelay @1066 - iirfilt_rrrf_init @1067 - iirfilt_rrrf_print @1068 - iirfilt_rrrf_reset @1069 - iirfiltsos_cccf_create @1070 - iirfiltsos_cccf_destroy @1071 - iirfiltsos_cccf_execute @1072 - iirfiltsos_cccf_execute_df1 @1073 - iirfiltsos_cccf_execute_df2 @1074 - iirfiltsos_cccf_groupdelay @1075 - iirfiltsos_cccf_print @1076 - iirfiltsos_cccf_reset @1077 - iirfiltsos_cccf_set_coefficients @1078 - iirfiltsos_crcf_create @1079 - iirfiltsos_crcf_destroy @1080 - iirfiltsos_crcf_execute @1081 - iirfiltsos_crcf_execute_df1 @1082 - iirfiltsos_crcf_execute_df2 @1083 - iirfiltsos_crcf_groupdelay @1084 - iirfiltsos_crcf_print @1085 - iirfiltsos_crcf_reset @1086 - iirfiltsos_crcf_set_coefficients @1087 - iirfiltsos_rrrf_create @1088 - iirfiltsos_rrrf_destroy @1089 - iirfiltsos_rrrf_execute @1090 - iirfiltsos_rrrf_execute_df1 @1091 - iirfiltsos_rrrf_execute_df2 @1092 - iirfiltsos_rrrf_groupdelay @1093 - iirfiltsos_rrrf_print @1094 - iirfiltsos_rrrf_reset @1095 - iirfiltsos_rrrf_set_coefficients @1096 - iirinterp_cccf_create @1097 - iirinterp_cccf_create_default @1098 - iirinterp_cccf_create_prototype @1099 - iirinterp_cccf_destroy @1100 - iirinterp_cccf_execute @1101 - iirinterp_cccf_execute_block @1102 - iirinterp_cccf_groupdelay @1103 - iirinterp_cccf_print @1104 - iirinterp_cccf_reset @1105 - iirinterp_crcf_create @1106 - iirinterp_crcf_create_default @1107 - iirinterp_crcf_create_prototype @1108 - iirinterp_crcf_destroy @1109 - iirinterp_crcf_execute @1110 - iirinterp_crcf_execute_block @1111 - iirinterp_crcf_groupdelay @1112 - iirinterp_crcf_print @1113 - iirinterp_crcf_reset @1114 - iirinterp_rrrf_create @1115 - iirinterp_rrrf_create_default @1116 - iirinterp_rrrf_create_prototype @1117 - iirinterp_rrrf_destroy @1118 - iirinterp_rrrf_execute @1119 - iirinterp_rrrf_execute_block @1120 - iirinterp_rrrf_groupdelay @1121 - iirinterp_rrrf_print @1122 - iirinterp_rrrf_reset @1123 - interleaver_create @1124 - interleaver_decode @1125 - interleaver_decode_soft @1126 - interleaver_destroy @1127 - interleaver_encode @1128 - interleaver_encode_soft @1129 - interleaver_permute @1130 - interleaver_permute_mask @1131 - interleaver_permute_mask_soft @1132 - interleaver_permute_soft @1133 - interleaver_print @1134 - interleaver_set_depth @1135 - kaiser @1136 - kaiser_beta_As @1137 - landenf @1138 - liquid_MarcumQ1f @1139 - liquid_MarcumQf @1140 - liquid_Qf @1141 - liquid_apsk128 @1142 DATA - liquid_apsk16 @1143 DATA - liquid_apsk256 @1144 DATA - liquid_apsk32 @1145 DATA - liquid_apsk4 @1146 DATA - liquid_apsk64 @1147 DATA - liquid_apsk8 @1148 DATA - liquid_asechf @1149 - liquid_bdotprod @1150 - liquid_besseli0f @1151 - liquid_besselif @1152 - liquid_besselj0f @1153 - liquid_besseljf @1154 - liquid_c_leading_zeros @1155 DATA - liquid_c_ones @1156 DATA - liquid_c_ones_mod2 @1157 DATA - liquid_cacosf @1158 - liquid_cargf_approx @1159 - liquid_casinf @1160 - liquid_catanf @1161 - liquid_cexpf @1162 - liquid_clogf @1163 - liquid_cosf @1164 - liquid_count_leading_zeros @1165 - liquid_count_ones @1166 - liquid_count_ones_mod2 @1167 - liquid_cplxpair @1168 - liquid_cplxpair_cleanup @1169 - liquid_csqrtf @1170 - liquid_expf @1171 - liquid_factor @1172 - liquid_factorialf @1173 - liquid_fft_estimate_method @1174 - liquid_filter_autocorr @1175 - liquid_filter_crosscorr @1176 - liquid_filter_energy @1177 - liquid_filter_isi @1178 - liquid_firdes_arkaiser @1179 - liquid_firdes_doppler @1180 - liquid_firdes_farcsech @1181 - liquid_firdes_farcsech_freqresponse @1182 - liquid_firdes_fexp @1183 - liquid_firdes_fexp_freqresponse @1184 - liquid_firdes_fnyquist @1185 - liquid_firdes_fsech @1186 - liquid_firdes_fsech_freqresponse @1187 - liquid_firdes_gmskrx @1188 - liquid_firdes_gmsktx @1189 - liquid_firdes_hM3 @1190 - liquid_firdes_kaiser @1191 - liquid_firdes_prototype @1192 - liquid_firdes_rcos @1193 - liquid_firdes_rfarcsech @1194 - liquid_firdes_rfexp @1195 - liquid_firdes_rfsech @1196 - liquid_firdes_rkaiser @1197 - liquid_firdes_rkaiser_bisection @1198 - liquid_firdes_rkaiser_internal_isi @1199 - liquid_firdes_rkaiser_quadratic @1200 - liquid_firdes_rrcos @1201 - liquid_gammaf @1202 - liquid_getopt_str2crc @1203 - liquid_getopt_str2fec @1204 - liquid_getopt_str2firfilt @1205 - liquid_getopt_str2mod @1206 - liquid_getopt_str2window @1207 - liquid_iirdes @1208 - liquid_invgauss @1209 - liquid_is_prime @1210 - liquid_kbd @1211 - liquid_kbd_window @1212 - liquid_lbcircshift @1213 - liquid_lbshift @1214 - liquid_lcircshift @1215 - liquid_levinson @1216 - liquid_libversion @1217 - liquid_libversion_number @1218 - liquid_lnbesselif @1219 - liquid_lngammaf @1220 - liquid_lnlowergammaf @1221 - liquid_lnuppergammaf @1222 - liquid_logf @1223 - liquid_lowergammaf @1224 - liquid_lpc @1225 - liquid_lshift @1226 - liquid_modem_is_apsk @1227 - liquid_modem_is_ask @1228 - liquid_modem_is_dpsk @1229 - liquid_modem_is_psk @1230 - liquid_modem_is_qam @1231 - liquid_modpow @1232 - liquid_msb_index @1233 - liquid_multimodal @1234 - liquid_nchoosek @1235 - liquid_nextpow2 @1236 - liquid_pack_array @1237 - liquid_pack_bytes @1238 - liquid_pack_soft_bits @1239 - liquid_primitive_root @1240 - liquid_primitive_root_prime @1241 - liquid_print_bitstring @1242 - liquid_print_crc_schemes @1243 - liquid_print_fec_schemes @1244 - liquid_print_modulation_schemes @1245 - liquid_print_windows @1246 - liquid_rbcircshift @1247 - liquid_rbshift @1248 - liquid_rcircshift @1249 - liquid_rcostaper_windowf @1250 - liquid_repack_bytes @1251 - liquid_reverse_byte @1252 - liquid_reverse_byte_gentab @1253 DATA - liquid_reverse_uint16 @1254 - liquid_reverse_uint24 @1255 - liquid_reverse_uint32 @1256 - liquid_rosenbrock @1257 - liquid_rshift @1258 - liquid_sincosf @1259 - liquid_sinf @1260 - liquid_spiral @1261 - liquid_sumsqcf @1262 - liquid_sumsqf @1263 - liquid_tanf @1264 - liquid_totient @1265 - liquid_unique_factor @1266 - liquid_unpack_array @1267 - liquid_unpack_bytes @1268 - liquid_unpack_soft_bits @1269 - liquid_unwrap_phase @1270 - liquid_unwrap_phase2 @1271 - liquid_uppergammaf @1272 - liquid_vectorcf_abs @1273 - liquid_vectorcf_add @1274 - liquid_vectorcf_addscalar @1275 - liquid_vectorcf_carg @1276 - liquid_vectorcf_cexpj @1277 - liquid_vectorcf_mul @1278 - liquid_vectorcf_mulscalar @1279 - liquid_vectorcf_norm @1280 - liquid_vectorcf_normalize @1281 - liquid_vectorf_abs @1282 - liquid_vectorf_add @1283 - liquid_vectorf_addscalar @1284 - liquid_vectorf_carg @1285 - liquid_vectorf_cexpj @1286 - liquid_vectorf_mul @1287 - liquid_vectorf_mulscalar @1288 - liquid_vectorf_norm @1289 - liquid_vectorf_normalize @1290 - liquid_version @1291 DATA - liquid_window_str @1292 DATA - matrix_add @1293 - matrix_aug @1294 - matrix_cgsolve @1295 - matrix_chol @1296 - matrix_det @1297 - matrix_det2x2 @1298 - matrix_div @1299 - matrix_eye @1300 - matrix_gjelim @1301 - matrix_gramschmidt @1302 - matrix_hermitian @1303 - matrix_hermitian_mul @1304 - matrix_inv @1305 - matrix_linsolve @1306 - matrix_ludecomp_crout @1307 - matrix_ludecomp_doolittle @1308 - matrix_mul @1309 - matrix_mul_hermitian @1310 - matrix_mul_transpose @1311 - matrix_ones @1312 - matrix_pdiv @1313 - matrix_pivot @1314 - matrix_pmul @1315 - matrix_print @1316 - matrix_proj @1317 - matrix_qrdecomp_gramschmidt @1318 - matrix_sub @1319 - matrix_swaprows @1320 - matrix_trans @1321 - matrix_transpose_mul @1322 - matrix_zeros @1323 - matrixc_add @1324 - matrixc_aug @1325 - matrixc_cgsolve @1326 - matrixc_chol @1327 - matrixc_det @1328 - matrixc_det2x2 @1329 - matrixc_div @1330 - matrixc_eye @1331 - matrixc_gjelim @1332 - matrixc_gramschmidt @1333 - matrixc_hermitian @1334 - matrixc_hermitian_mul @1335 - matrixc_inv @1336 - matrixc_linsolve @1337 - matrixc_ludecomp_crout @1338 - matrixc_ludecomp_doolittle @1339 - matrixc_mul @1340 - matrixc_mul_hermitian @1341 - matrixc_mul_transpose @1342 - matrixc_ones @1343 - matrixc_pdiv @1344 - matrixc_pivot @1345 - matrixc_pmul @1346 - matrixc_print @1347 - matrixc_proj @1348 - matrixc_qrdecomp_gramschmidt @1349 - matrixc_sub @1350 - matrixc_swaprows @1351 - matrixc_trans @1352 - matrixc_transpose_mul @1353 - matrixc_zeros @1354 - matrixcf_add @1355 - matrixcf_aug @1356 - matrixcf_cgsolve @1357 - matrixcf_chol @1358 - matrixcf_det @1359 - matrixcf_det2x2 @1360 - matrixcf_div @1361 - matrixcf_eye @1362 - matrixcf_gjelim @1363 - matrixcf_gramschmidt @1364 - matrixcf_hermitian @1365 - matrixcf_hermitian_mul @1366 - matrixcf_inv @1367 - matrixcf_linsolve @1368 - matrixcf_ludecomp_crout @1369 - matrixcf_ludecomp_doolittle @1370 - matrixcf_mul @1371 - matrixcf_mul_hermitian @1372 - matrixcf_mul_transpose @1373 - matrixcf_ones @1374 - matrixcf_pdiv @1375 - matrixcf_pivot @1376 - matrixcf_pmul @1377 - matrixcf_print @1378 - matrixcf_proj @1379 - matrixcf_qrdecomp_gramschmidt @1380 - matrixcf_sub @1381 - matrixcf_swaprows @1382 - matrixcf_trans @1383 - matrixcf_transpose_mul @1384 - matrixcf_zeros @1385 - matrixf_add @1386 - matrixf_aug @1387 - matrixf_cgsolve @1388 - matrixf_chol @1389 - matrixf_det @1390 - matrixf_det2x2 @1391 - matrixf_div @1392 - matrixf_eye @1393 - matrixf_gjelim @1394 - matrixf_gramschmidt @1395 - matrixf_hermitian @1396 - matrixf_hermitian_mul @1397 - matrixf_inv @1398 - matrixf_linsolve @1399 - matrixf_ludecomp_crout @1400 - matrixf_ludecomp_doolittle @1401 - matrixf_mul @1402 - matrixf_mul_hermitian @1403 - matrixf_mul_transpose @1404 - matrixf_ones @1405 - matrixf_pdiv @1406 - matrixf_pivot @1407 - matrixf_pmul @1408 - matrixf_print @1409 - matrixf_proj @1410 - matrixf_qrdecomp_gramschmidt @1411 - matrixf_sub @1412 - matrixf_swaprows @1413 - matrixf_trans @1414 - matrixf_transpose_mul @1415 - matrixf_zeros @1416 - modem_arb128opt @1417 DATA - modem_arb16opt @1418 DATA - modem_arb256opt @1419 DATA - modem_arb32opt @1420 DATA - modem_arb64opt @1421 DATA - modem_arb_V29 @1422 DATA - modem_arb_balance_iq @1423 - modem_arb_init @1424 - modem_arb_init_file @1425 - modem_arb_scale @1426 - modem_arb_sqam128 @1427 DATA - modem_arb_sqam32 @1428 DATA - modem_arb_vt64 @1429 DATA - modem_create @1430 - modem_create_V29 @1431 - modem_create_apsk @1432 - modem_create_arb @1433 - modem_create_arb128opt @1434 - modem_create_arb16opt @1435 - modem_create_arb256opt @1436 - modem_create_arb32opt @1437 - modem_create_arb64opt @1438 - modem_create_arb64vt @1439 - modem_create_arbitrary @1440 - modem_create_ask @1441 - modem_create_bpsk @1442 - modem_create_dpsk @1443 - modem_create_ook @1444 - modem_create_psk @1445 - modem_create_qam @1446 - modem_create_qpsk @1447 - modem_create_sqam128 @1448 - modem_create_sqam32 @1449 - modem_demodsoft_gentab @1450 - modem_demodulate @1451 - modem_demodulate_apsk @1452 - modem_demodulate_arb @1453 - modem_demodulate_ask @1454 - modem_demodulate_bpsk @1455 - modem_demodulate_dpsk @1456 - modem_demodulate_linear_array @1457 - modem_demodulate_linear_array_ref @1458 - modem_demodulate_ook @1459 - modem_demodulate_psk @1460 - modem_demodulate_qam @1461 - modem_demodulate_qpsk @1462 - modem_demodulate_soft @1463 - modem_demodulate_soft_arb @1464 - modem_demodulate_soft_bpsk @1465 - modem_demodulate_soft_qpsk @1466 - modem_demodulate_soft_table @1467 - modem_demodulate_sqam128 @1468 - modem_demodulate_sqam32 @1469 - modem_destroy @1470 - modem_gen_rand_sym @1471 - modem_get_bps @1472 - modem_get_demodulator_evm @1473 - modem_get_demodulator_phase_error @1474 - modem_get_demodulator_sample @1475 - modem_get_scheme @1476 - modem_init @1477 - modem_init_map @1478 - modem_modulate @1479 - modem_modulate_apsk @1480 - modem_modulate_arb @1481 - modem_modulate_ask @1482 - modem_modulate_bpsk @1483 - modem_modulate_dpsk @1484 - modem_modulate_map @1485 - modem_modulate_ook @1486 - modem_modulate_psk @1487 - modem_modulate_qam @1488 - modem_modulate_qpsk @1489 - modem_modulate_sqam128 @1490 - modem_modulate_sqam32 @1491 - modem_print @1492 - modem_recreate @1493 - modem_reset @1494 - modulation_types @1495 DATA - msequence_advance @1496 - msequence_create @1497 - msequence_create_default @1498 - msequence_create_genpoly @1499 - msequence_default @1500 DATA - msequence_destroy @1501 - msequence_generate_symbol @1502 - msequence_get_length @1503 - msequence_get_state @1504 - msequence_print @1505 - msequence_reset @1506 - msequence_set_state @1507 - msourcecf_add_modem @1508 - msourcecf_add_noise @1509 - msourcecf_add_source @1510 - msourcecf_add_tone @1511 - msourcecf_create @1512 - msourcecf_destroy @1513 - msourcecf_disable @1514 - msourcecf_enable @1515 - msourcecf_get_source @1516 - msourcecf_print @1517 - msourcecf_remove @1518 - msourcecf_reset @1519 - msourcecf_set_frequency @1520 - msourcecf_set_gain @1521 - msourcecf_write_samples @1522 - msresamp2_cccf_create @1523 - msresamp2_cccf_decim_execute @1524 - msresamp2_cccf_destroy @1525 - msresamp2_cccf_execute @1526 - msresamp2_cccf_get_delay @1527 - msresamp2_cccf_interp_execute @1528 - msresamp2_cccf_print @1529 - msresamp2_cccf_reset @1530 - msresamp2_crcf_create @1531 - msresamp2_crcf_decim_execute @1532 - msresamp2_crcf_destroy @1533 - msresamp2_crcf_execute @1534 - msresamp2_crcf_get_delay @1535 - msresamp2_crcf_interp_execute @1536 - msresamp2_crcf_print @1537 - msresamp2_crcf_reset @1538 - msresamp2_rrrf_create @1539 - msresamp2_rrrf_decim_execute @1540 - msresamp2_rrrf_destroy @1541 - msresamp2_rrrf_execute @1542 - msresamp2_rrrf_get_delay @1543 - msresamp2_rrrf_interp_execute @1544 - msresamp2_rrrf_print @1545 - msresamp2_rrrf_reset @1546 - msresamp_cccf_create @1547 - msresamp_cccf_decim_execute @1548 - msresamp_cccf_destroy @1549 - msresamp_cccf_execute @1550 - msresamp_cccf_get_delay @1551 - msresamp_cccf_interp_execute @1552 - msresamp_cccf_print @1553 - msresamp_cccf_reset @1554 - msresamp_crcf_create @1555 - msresamp_crcf_decim_execute @1556 - msresamp_crcf_destroy @1557 - msresamp_crcf_execute @1558 - msresamp_crcf_get_delay @1559 - msresamp_crcf_interp_execute @1560 - msresamp_crcf_print @1561 - msresamp_crcf_reset @1562 - msresamp_rrrf_create @1563 - msresamp_rrrf_decim_execute @1564 - msresamp_rrrf_destroy @1565 - msresamp_rrrf_execute @1566 - msresamp_rrrf_get_delay @1567 - msresamp_rrrf_interp_execute @1568 - msresamp_rrrf_print @1569 - msresamp_rrrf_reset @1570 - nco_crcf_adjust_frequency @1571 - nco_crcf_adjust_phase @1572 - nco_crcf_cexpf @1573 - nco_crcf_compute_sincos_nco @1574 - nco_crcf_compute_sincos_vco @1575 - nco_crcf_constrain_frequency @1576 - nco_crcf_constrain_phase @1577 - nco_crcf_cos @1578 - nco_crcf_create @1579 - nco_crcf_destroy @1580 - nco_crcf_get_frequency @1581 - nco_crcf_get_phase @1582 - nco_crcf_mix_block_down @1583 - nco_crcf_mix_block_up @1584 - nco_crcf_mix_down @1585 - nco_crcf_mix_up @1586 - nco_crcf_pll_reset @1587 - nco_crcf_pll_set_bandwidth @1588 - nco_crcf_pll_step @1589 - nco_crcf_reset @1590 - nco_crcf_set_frequency @1591 - nco_crcf_set_phase @1592 - nco_crcf_sin @1593 - nco_crcf_sincos @1594 - nco_crcf_step @1595 - ofdmflexframegen_assemble @1596 - ofdmflexframegen_create @1597 - ofdmflexframegen_destroy @1598 - ofdmflexframegen_encode_header @1599 - ofdmflexframegen_gen_S0a @1600 - ofdmflexframegen_gen_S0b @1601 - ofdmflexframegen_gen_S1 @1602 - ofdmflexframegen_gen_header @1603 - ofdmflexframegen_gen_payload @1604 - ofdmflexframegen_gen_symbol @1605 - ofdmflexframegen_gen_tail @1606 - ofdmflexframegen_gen_zeros @1607 - ofdmflexframegen_getframelen @1608 - ofdmflexframegen_getprops @1609 - ofdmflexframegen_is_assembled @1610 - ofdmflexframegen_modulate_header @1611 - ofdmflexframegen_print @1612 - ofdmflexframegen_reconfigure @1613 - ofdmflexframegen_reset @1614 - ofdmflexframegen_setprops @1615 - ofdmflexframegen_write @1616 - ofdmflexframegenprops_init_default @1617 - ofdmflexframesync_create @1618 - ofdmflexframesync_debug_disable @1619 - ofdmflexframesync_debug_enable @1620 - ofdmflexframesync_debug_print @1621 - ofdmflexframesync_decode_header @1622 - ofdmflexframesync_destroy @1623 - ofdmflexframesync_execute @1624 - ofdmflexframesync_get_cfo @1625 - ofdmflexframesync_get_rssi @1626 - ofdmflexframesync_internal_callback @1627 - ofdmflexframesync_is_frame_open @1628 - ofdmflexframesync_print @1629 - ofdmflexframesync_reset @1630 - ofdmflexframesync_rxheader @1631 - ofdmflexframesync_rxpayload @1632 - ofdmframe_init_S0 @1633 - ofdmframe_init_S1 @1634 - ofdmframe_init_default_sctype @1635 - ofdmframe_init_sctype_range @1636 - ofdmframe_print_sctype @1637 - ofdmframe_validate_sctype @1638 - ofdmframegen_create @1639 - ofdmframegen_destroy @1640 - ofdmframegen_gensymbol @1641 - ofdmframegen_print @1642 - ofdmframegen_reset @1643 - ofdmframegen_write_S0a @1644 - ofdmframegen_write_S0b @1645 - ofdmframegen_write_S1 @1646 - ofdmframegen_writesymbol @1647 - ofdmframegen_writetail @1648 - ofdmframesync_S0_metrics @1649 - ofdmframesync_create @1650 - ofdmframesync_debug_disable @1651 - ofdmframesync_debug_enable @1652 - ofdmframesync_debug_print @1653 - ofdmframesync_destroy @1654 - ofdmframesync_estimate_eqgain @1655 - ofdmframesync_estimate_eqgain_poly @1656 - ofdmframesync_estimate_gain_S0 @1657 - ofdmframesync_estimate_gain_S1 @1658 - ofdmframesync_execute @1659 - ofdmframesync_execute_S0a @1660 - ofdmframesync_execute_S0b @1661 - ofdmframesync_execute_S1 @1662 - ofdmframesync_execute_rxsymbols @1663 - ofdmframesync_execute_seekplcp @1664 - ofdmframesync_get_cfo @1665 - ofdmframesync_get_rssi @1666 - ofdmframesync_is_frame_open @1667 - ofdmframesync_print @1668 - ofdmframesync_reset @1669 - ofdmframesync_rxsymbol @1670 - optim_sort @1671 - optim_threshold_switch @1672 - packetizer_compute_dec_msg_len @1673 - packetizer_compute_enc_msg_len @1674 - packetizer_create @1675 - packetizer_decode @1676 - packetizer_decode_soft @1677 - packetizer_destroy @1678 - packetizer_encode @1679 - packetizer_get_crc @1680 - packetizer_get_dec_msg_len @1681 - packetizer_get_enc_msg_len @1682 - packetizer_get_fec0 @1683 - packetizer_get_fec1 @1684 - packetizer_print @1685 - packetizer_realloc_buffers @1686 - packetizer_recreate @1687 - packetizer_set_scheme @1688 - poly_expandbinomial @1689 - poly_expandbinomial_pm @1690 - poly_expandroots @1691 - poly_expandroots2 @1692 - poly_findroots @1693 - poly_findroots_bairstow @1694 - poly_findroots_bairstow_recursion @1695 - poly_findroots_durandkerner @1696 - poly_fit @1697 - poly_fit_lagrange @1698 - poly_fit_lagrange_barycentric @1699 - poly_interp_lagrange @1700 - poly_mul @1701 - poly_val @1702 - poly_val_lagrange_barycentric @1703 - polyc_expandbinomial @1704 - polyc_expandbinomial_pm @1705 - polyc_expandroots @1706 - polyc_expandroots2 @1707 - polyc_findroots @1708 - polyc_findroots_bairstow @1709 - polyc_findroots_bairstow_recursion @1710 - polyc_findroots_durandkerner @1711 - polyc_fit @1712 - polyc_fit_lagrange @1713 - polyc_fit_lagrange_barycentric @1714 - polyc_interp_lagrange @1715 - polyc_mul @1716 - polyc_val @1717 - polyc_val_lagrange_barycentric @1718 - polycf_expandbinomial @1719 - polycf_expandbinomial_pm @1720 - polycf_expandroots @1721 - polycf_expandroots2 @1722 - polycf_findroots @1723 - polycf_findroots_bairstow @1724 - polycf_findroots_bairstow_recursion @1725 - polycf_findroots_durandkerner @1726 - polycf_fit @1727 - polycf_fit_lagrange @1728 - polycf_fit_lagrange_barycentric @1729 - polycf_interp_lagrange @1730 - polycf_mul @1731 - polycf_val @1732 - polycf_val_lagrange_barycentric @1733 - polyf_expandbinomial @1734 - polyf_expandbinomial_pm @1735 - polyf_expandroots @1736 - polyf_expandroots2 @1737 - polyf_findroots @1738 - polyf_findroots_bairstow @1739 - polyf_findroots_bairstow_recursion @1740 - polyf_findroots_durandkerner @1741 - polyf_fit @1742 - polyf_fit_lagrange @1743 - polyf_fit_lagrange_barycentric @1744 - polyf_interp_lagrange @1745 - polyf_mul @1746 - polyf_val @1747 - polyf_val_lagrange_barycentric @1748 - presync_cccf_correlate @1749 - presync_cccf_correlatex @1750 - presync_cccf_create @1751 - presync_cccf_destroy @1752 - presync_cccf_print @1753 - presync_cccf_push @1754 - presync_cccf_reset @1755 - qdetector_cccf_create @1756 - qdetector_cccf_create_gmsk @1757 - qdetector_cccf_create_linear @1758 - qdetector_cccf_destroy @1759 - qdetector_cccf_execute @1760 - qdetector_cccf_execute_align @1761 - qdetector_cccf_execute_seek @1762 - qdetector_cccf_get_buf_len @1763 - qdetector_cccf_get_dphi @1764 - qdetector_cccf_get_gamma @1765 - qdetector_cccf_get_phi @1766 - qdetector_cccf_get_seq_len @1767 - qdetector_cccf_get_sequence @1768 - qdetector_cccf_get_tau @1769 - qdetector_cccf_print @1770 - qdetector_cccf_reset @1771 - qdetector_cccf_set_range @1772 - qdetector_cccf_set_threshold @1773 - qnsearch_compute_Hessian @1774 - qnsearch_compute_gradient @1775 - qnsearch_create @1776 - qnsearch_destroy @1777 - qnsearch_normalize_gradient @1778 - qnsearch_print @1779 - qnsearch_reset @1780 - qnsearch_run @1781 - qnsearch_step @1782 - qpacketmodem_configure @1783 - qpacketmodem_create @1784 - qpacketmodem_decode @1785 - qpacketmodem_decode_bits @1786 - qpacketmodem_decode_soft @1787 - qpacketmodem_decode_syms @1788 - qpacketmodem_destroy @1789 - qpacketmodem_encode @1790 - qpacketmodem_encode_syms @1791 - qpacketmodem_get_crc @1792 - qpacketmodem_get_fec0 @1793 - qpacketmodem_get_fec1 @1794 - qpacketmodem_get_frame_len @1795 - qpacketmodem_get_modscheme @1796 - qpacketmodem_get_payload_len @1797 - qpacketmodem_print @1798 - qpacketmodem_reset @1799 - qpilotgen_create @1800 - qpilotgen_destroy @1801 - qpilotgen_execute @1802 - qpilotgen_get_frame_len @1803 - qpilotgen_print @1804 - qpilotgen_recreate @1805 - qpilotgen_reset @1806 - qpilotsync_create @1807 - qpilotsync_destroy @1808 - qpilotsync_execute @1809 - qpilotsync_get_dphi @1810 - qpilotsync_get_frame_len @1811 - qpilotsync_get_gain @1812 - qpilotsync_get_phi @1813 - qpilotsync_print @1814 - qpilotsync_recreate @1815 - qpilotsync_reset @1816 - qsourcecf_create_modem @1817 - qsourcecf_create_noise @1818 - qsourcecf_create_tone @1819 - qsourcecf_destroy @1820 - qsourcecf_disable @1821 - qsourcecf_enable @1822 - qsourcecf_gen_sample @1823 - qsourcecf_print @1824 - qsourcecf_reset @1825 - qsourcecf_set_frequency @1826 - qsourcecf_set_gain @1827 - quantize_adc @1828 - quantize_dac @1829 - quantizercf_create @1830 - quantizercf_destroy @1831 - quantizercf_execute_adc @1832 - quantizercf_execute_dac @1833 - quantizercf_print @1834 - quantizerf_create @1835 - quantizerf_destroy @1836 - quantizerf_execute_adc @1837 - quantizerf_execute_dac @1838 - quantizerf_print @1839 - randexpf @1840 - randexpf_cdf @1841 - randexpf_pdf @1842 - randf @1843 - randf_cdf @1844 - randf_pdf @1845 - randgammaf @1846 - randgammaf_cdf @1847 - randgammaf_delta @1848 - randgammaf_pdf @1849 - randnakmf @1850 - randnakmf_cdf @1851 - randnakmf_pdf @1852 - randnf @1853 - randnf_cdf @1854 - randnf_pdf @1855 - randricekf @1856 - randricekf_cdf @1857 - randricekf_pdf @1858 - randweibf @1859 - randweibf_cdf @1860 - randweibf_pdf @1861 - resamp2_cccf_analyzer_execute @1862 - resamp2_cccf_create @1863 - resamp2_cccf_decim_execute @1864 - resamp2_cccf_destroy @1865 - resamp2_cccf_filter_execute @1866 - resamp2_cccf_get_delay @1867 - resamp2_cccf_interp_execute @1868 - resamp2_cccf_print @1869 - resamp2_cccf_recreate @1870 - resamp2_cccf_reset @1871 - resamp2_cccf_synthesizer_execute @1872 - resamp2_crcf_analyzer_execute @1873 - resamp2_crcf_create @1874 - resamp2_crcf_decim_execute @1875 - resamp2_crcf_destroy @1876 - resamp2_crcf_filter_execute @1877 - resamp2_crcf_get_delay @1878 - resamp2_crcf_interp_execute @1879 - resamp2_crcf_print @1880 - resamp2_crcf_recreate @1881 - resamp2_crcf_reset @1882 - resamp2_crcf_synthesizer_execute @1883 - resamp2_rrrf_analyzer_execute @1884 - resamp2_rrrf_create @1885 - resamp2_rrrf_decim_execute @1886 - resamp2_rrrf_destroy @1887 - resamp2_rrrf_filter_execute @1888 - resamp2_rrrf_get_delay @1889 - resamp2_rrrf_interp_execute @1890 - resamp2_rrrf_print @1891 - resamp2_rrrf_recreate @1892 - resamp2_rrrf_reset @1893 - resamp2_rrrf_synthesizer_execute @1894 - resamp_cccf_adjust_rate @1895 - resamp_cccf_adjust_timing_phase @1896 - resamp_cccf_create @1897 - resamp_cccf_create_default @1898 - resamp_cccf_destroy @1899 - resamp_cccf_execute @1900 - resamp_cccf_execute_block @1901 - resamp_cccf_get_delay @1902 - resamp_cccf_print @1903 - resamp_cccf_reset @1904 - resamp_cccf_set_rate @1905 - resamp_cccf_set_timing_phase @1906 - resamp_cccf_update_timing_state @1907 - resamp_crcf_adjust_rate @1908 - resamp_crcf_adjust_timing_phase @1909 - resamp_crcf_create @1910 - resamp_crcf_create_default @1911 - resamp_crcf_destroy @1912 - resamp_crcf_execute @1913 - resamp_crcf_execute_block @1914 - resamp_crcf_get_delay @1915 - resamp_crcf_print @1916 - resamp_crcf_reset @1917 - resamp_crcf_set_rate @1918 - resamp_crcf_set_timing_phase @1919 - resamp_crcf_update_timing_state @1920 - resamp_rrrf_adjust_rate @1921 - resamp_rrrf_adjust_timing_phase @1922 - resamp_rrrf_create @1923 - resamp_rrrf_create_default @1924 - resamp_rrrf_destroy @1925 - resamp_rrrf_execute @1926 - resamp_rrrf_execute_block @1927 - resamp_rrrf_get_delay @1928 - resamp_rrrf_print @1929 - resamp_rrrf_reset @1930 - resamp_rrrf_set_rate @1931 - resamp_rrrf_set_timing_phase @1932 - resamp_rrrf_update_timing_state @1933 - rkaiser_approximate_rho @1934 - scramble_data @1935 - secded2216_P @1936 DATA - secded2216_syndrome_w1 @1937 DATA - secded3932_P @1938 DATA - secded3932_syndrome_w1 @1939 DATA - secded7264_P @1940 DATA - secded7264_syndrome_w1 @1941 DATA - sincf @1942 - smatrix_indexsearch @1943 - smatrixb_clear @1944 - smatrixb_create @1945 - smatrixb_create_array @1946 - smatrixb_delete @1947 - smatrixb_destroy @1948 - smatrixb_eye @1949 - smatrixb_get @1950 - smatrixb_insert @1951 - smatrixb_isset @1952 - smatrixb_mul @1953 - smatrixb_mulf @1954 - smatrixb_print @1955 - smatrixb_print_expanded @1956 - smatrixb_reset @1957 - smatrixb_reset_max_mlist @1958 - smatrixb_reset_max_nlist @1959 - smatrixb_set @1960 - smatrixb_size @1961 - smatrixb_vmul @1962 - smatrixb_vmulf @1963 - smatrixf_clear @1964 - smatrixf_create @1965 - smatrixf_create_array @1966 - smatrixf_delete @1967 - smatrixf_destroy @1968 - smatrixf_eye @1969 - smatrixf_get @1970 - smatrixf_insert @1971 - smatrixf_isset @1972 - smatrixf_mul @1973 - smatrixf_print @1974 - smatrixf_print_expanded @1975 - smatrixf_reset @1976 - smatrixf_reset_max_mlist @1977 - smatrixf_reset_max_nlist @1978 - smatrixf_set @1979 - smatrixf_size @1980 - smatrixf_vmul @1981 - smatrixi_clear @1982 - smatrixi_create @1983 - smatrixi_create_array @1984 - smatrixi_delete @1985 - smatrixi_destroy @1986 - smatrixi_eye @1987 - smatrixi_get @1988 - smatrixi_insert @1989 - smatrixi_isset @1990 - smatrixi_mul @1991 - smatrixi_print @1992 - smatrixi_print_expanded @1993 - smatrixi_reset @1994 - smatrixi_reset_max_mlist @1995 - smatrixi_reset_max_nlist @1996 - smatrixi_set @1997 - smatrixi_size @1998 - smatrixi_vmul @1999 - spgramcf_clear @2000 - spgramcf_create @2001 - spgramcf_create_default @2002 - spgramcf_destroy @2003 - spgramcf_estimate_psd @2004 - spgramcf_export_gnuplot @2005 - spgramcf_get_delay @2006 - spgramcf_get_nfft @2007 - spgramcf_get_num_samples @2008 - spgramcf_get_num_samples_total @2009 - spgramcf_get_num_transforms @2010 - spgramcf_get_num_transforms_total @2011 - spgramcf_get_psd @2012 - spgramcf_get_window_len @2013 - spgramcf_print @2014 - spgramcf_push @2015 - spgramcf_reset @2016 - spgramcf_set_alpha @2017 - spgramcf_step @2018 - spgramcf_write @2019 - spgramf_clear @2020 - spgramf_create @2021 - spgramf_create_default @2022 - spgramf_destroy @2023 - spgramf_estimate_psd @2024 - spgramf_export_gnuplot @2025 - spgramf_get_delay @2026 - spgramf_get_nfft @2027 - spgramf_get_num_samples @2028 - spgramf_get_num_samples_total @2029 - spgramf_get_num_transforms @2030 - spgramf_get_num_transforms_total @2031 - spgramf_get_psd @2032 - spgramf_get_window_len @2033 - spgramf_print @2034 - spgramf_push @2035 - spgramf_reset @2036 - spgramf_set_alpha @2037 - spgramf_step @2038 - spgramf_write @2039 - spwaterfallcf_clear @2040 - spwaterfallcf_consolidate_buffer @2041 - spwaterfallcf_create @2042 - spwaterfallcf_create_default @2043 - spwaterfallcf_destroy @2044 - spwaterfallcf_export @2045 - spwaterfallcf_export_bin @2046 - spwaterfallcf_export_gnu @2047 - spwaterfallcf_print @2048 - spwaterfallcf_push @2049 - spwaterfallcf_reset @2050 - spwaterfallcf_step @2051 - spwaterfallcf_write @2052 - spwaterfallf_clear @2053 - spwaterfallf_consolidate_buffer @2054 - spwaterfallf_create @2055 - spwaterfallf_create_default @2056 - spwaterfallf_destroy @2057 - spwaterfallf_export @2058 - spwaterfallf_export_bin @2059 - spwaterfallf_export_gnu @2060 - spwaterfallf_print @2061 - spwaterfallf_push @2062 - spwaterfallf_reset @2063 - spwaterfallf_step @2064 - spwaterfallf_write @2065 - sumproduct_phi @2066 - symstreamcf_create @2067 - symstreamcf_create_linear @2068 - symstreamcf_destroy @2069 - symstreamcf_fill_buffer @2070 - symstreamcf_print @2071 - symstreamcf_reset @2072 - symstreamcf_write_samples @2073 - symsync_crcf_advance_internal_loop @2074 - symsync_crcf_create @2075 - symsync_crcf_create_kaiser @2076 - symsync_crcf_create_rnyquist @2077 - symsync_crcf_destroy @2078 - symsync_crcf_execute @2079 - symsync_crcf_get_tau @2080 - symsync_crcf_lock @2081 - symsync_crcf_output_debug_file @2082 - symsync_crcf_print @2083 - symsync_crcf_reset @2084 - symsync_crcf_set_lf_bw @2085 - symsync_crcf_set_output_rate @2086 - symsync_crcf_step @2087 - symsync_crcf_unlock @2088 - symsync_rrrf_advance_internal_loop @2089 - symsync_rrrf_create @2090 - symsync_rrrf_create_kaiser @2091 - symsync_rrrf_create_rnyquist @2092 - symsync_rrrf_destroy @2093 - symsync_rrrf_execute @2094 - symsync_rrrf_get_tau @2095 - symsync_rrrf_lock @2096 - symsync_rrrf_output_debug_file @2097 - symsync_rrrf_print @2098 - symsync_rrrf_reset @2099 - symsync_rrrf_set_lf_bw @2100 - symsync_rrrf_set_output_rate @2101 - symsync_rrrf_step @2102 - symsync_rrrf_unlock @2103 - symtrack_cccf_adjust_phase @2104 - symtrack_cccf_create @2105 - symtrack_cccf_create_default @2106 - symtrack_cccf_destroy @2107 - symtrack_cccf_execute @2108 - symtrack_cccf_execute_block @2109 - symtrack_cccf_print @2110 - symtrack_cccf_reset @2111 - symtrack_cccf_set_bandwidth @2112 - symtrack_cccf_set_modscheme @2113 - triangular @2114 - tvmpch_cccf_create @2115 - tvmpch_cccf_destroy @2116 - tvmpch_cccf_execute @2117 - tvmpch_cccf_execute_block @2118 - tvmpch_cccf_print @2119 - tvmpch_cccf_push @2120 - tvmpch_cccf_reset @2121 - unscramble_data @2122 - unscramble_data_soft @2123 - wdelaycf_create @2124 - wdelaycf_destroy @2125 - wdelaycf_print @2126 - wdelaycf_push @2127 - wdelaycf_read @2128 - wdelaycf_recreate @2129 - wdelaycf_reset @2130 - wdelayf_create @2131 - wdelayf_destroy @2132 - wdelayf_print @2133 - wdelayf_push @2134 - wdelayf_read @2135 - wdelayf_recreate @2136 - wdelayf_reset @2137 - windowcf_create @2138 - windowcf_debug_print @2139 - windowcf_destroy @2140 - windowcf_index @2141 - windowcf_print @2142 - windowcf_push @2143 - windowcf_read @2144 - windowcf_recreate @2145 - windowcf_reset @2146 - windowcf_write @2147 - windowf_create @2148 - windowf_debug_print @2149 - windowf_destroy @2150 - windowf_index @2151 - windowf_print @2152 - windowf_push @2153 - windowf_read @2154 - windowf_recreate @2155 - windowf_reset @2156 - windowf_write @2157 diff --git a/external/liquid-dsp/gcc/32/libliquid.dll b/external/liquid-dsp/gcc/32/libliquid.dll index 1ea3226..bee5bbe 100644 Binary files a/external/liquid-dsp/gcc/32/libliquid.dll and b/external/liquid-dsp/gcc/32/libliquid.dll differ diff --git a/external/liquid-dsp/gcc/32/libliquid.lib b/external/liquid-dsp/gcc/32/libliquid.lib new file mode 100644 index 0000000..b0e2fc2 Binary files /dev/null and b/external/liquid-dsp/gcc/32/libliquid.lib differ diff --git a/external/liquid-dsp/gcc/64/libliquid.a b/external/liquid-dsp/gcc/64/libliquid.a index d23ea94..722c2c7 100644 Binary files a/external/liquid-dsp/gcc/64/libliquid.a and b/external/liquid-dsp/gcc/64/libliquid.a differ diff --git a/external/liquid-dsp/gcc/64/libliquid.def b/external/liquid-dsp/gcc/64/libliquid.def deleted file mode 100644 index b270566..0000000 --- a/external/liquid-dsp/gcc/64/libliquid.def +++ /dev/null @@ -1,2158 +0,0 @@ -EXPORTS - agc_crcf_create @1 - agc_crcf_destroy @2 - agc_crcf_execute @3 - agc_crcf_execute_block @4 - agc_crcf_get_bandwidth @5 - agc_crcf_get_gain @6 - agc_crcf_get_rssi @7 - agc_crcf_get_signal_level @8 - agc_crcf_init @9 - agc_crcf_lock @10 - agc_crcf_print @11 - agc_crcf_reset @12 - agc_crcf_set_bandwidth @13 - agc_crcf_set_gain @14 - agc_crcf_set_rssi @15 - agc_crcf_set_signal_level @16 - agc_crcf_squelch_disable @17 - agc_crcf_squelch_enable @18 - agc_crcf_squelch_get_status @19 - agc_crcf_squelch_get_threshold @20 - agc_crcf_squelch_get_timeout @21 - agc_crcf_squelch_is_enabled @22 - agc_crcf_squelch_set_threshold @23 - agc_crcf_squelch_set_timeout @24 - agc_crcf_squelch_update_mode @25 - agc_crcf_unlock @26 - agc_rrrf_create @27 - agc_rrrf_destroy @28 - agc_rrrf_execute @29 - agc_rrrf_execute_block @30 - agc_rrrf_get_bandwidth @31 - agc_rrrf_get_gain @32 - agc_rrrf_get_rssi @33 - agc_rrrf_get_signal_level @34 - agc_rrrf_init @35 - agc_rrrf_lock @36 - agc_rrrf_print @37 - agc_rrrf_reset @38 - agc_rrrf_set_bandwidth @39 - agc_rrrf_set_gain @40 - agc_rrrf_set_rssi @41 - agc_rrrf_set_signal_level @42 - agc_rrrf_squelch_disable @43 - agc_rrrf_squelch_enable @44 - agc_rrrf_squelch_get_status @45 - agc_rrrf_squelch_get_threshold @46 - agc_rrrf_squelch_get_timeout @47 - agc_rrrf_squelch_is_enabled @48 - agc_rrrf_squelch_set_threshold @49 - agc_rrrf_squelch_set_timeout @50 - agc_rrrf_squelch_update_mode @51 - agc_rrrf_unlock @52 - ampmodem_create @53 - ampmodem_debug_print @54 - ampmodem_demodulate @55 - ampmodem_demodulate_block @56 - ampmodem_destroy @57 - ampmodem_modulate @58 - ampmodem_modulate_block @59 - ampmodem_print @60 - ampmodem_reset @61 - apsk128_map @62 DATA - apsk128_num_levels @63 DATA - apsk128_p @64 DATA - apsk128_phi @65 DATA - apsk128_r @66 DATA - apsk128_r_slicer @67 DATA - apsk16_map @68 DATA - apsk16_num_levels @69 DATA - apsk16_p @70 DATA - apsk16_phi @71 DATA - apsk16_r @72 DATA - apsk16_r_slicer @73 DATA - apsk256_map @74 DATA - apsk256_num_levels @75 DATA - apsk256_p @76 DATA - apsk256_phi @77 DATA - apsk256_r @78 DATA - apsk256_r_slicer @79 DATA - apsk32_map @80 DATA - apsk32_num_levels @81 DATA - apsk32_p @82 DATA - apsk32_phi @83 DATA - apsk32_r @84 DATA - apsk32_r_slicer @85 DATA - apsk4_map @86 DATA - apsk4_num_levels @87 DATA - apsk4_p @88 DATA - apsk4_phi @89 DATA - apsk4_r @90 DATA - apsk4_r_slicer @91 DATA - apsk64_map @92 DATA - apsk64_num_levels @93 DATA - apsk64_p @94 DATA - apsk64_phi @95 DATA - apsk64_r @96 DATA - apsk64_r_slicer @97 DATA - apsk8_map @98 DATA - apsk8_num_levels @99 DATA - apsk8_p @100 DATA - apsk8_phi @101 DATA - apsk8_r @102 DATA - apsk8_r_slicer @103 DATA - asgramcf_create @104 - asgramcf_destroy @105 - asgramcf_execute @106 - asgramcf_print @107 - asgramcf_push @108 - asgramcf_reset @109 - asgramcf_set_display @110 - asgramcf_set_scale @111 - asgramcf_write @112 - asgramf_create @113 - asgramf_destroy @114 - asgramf_execute @115 - asgramf_print @116 - asgramf_push @117 - asgramf_reset @118 - asgramf_set_display @119 - asgramf_set_scale @120 - asgramf_write @121 - autocorr_cccf_create @122 - autocorr_cccf_destroy @123 - autocorr_cccf_execute @124 - autocorr_cccf_execute_block @125 - autocorr_cccf_get_energy @126 - autocorr_cccf_print @127 - autocorr_cccf_push @128 - autocorr_cccf_reset @129 - autocorr_rrrf_create @130 - autocorr_rrrf_destroy @131 - autocorr_rrrf_execute @132 - autocorr_rrrf_execute_block @133 - autocorr_rrrf_get_energy @134 - autocorr_rrrf_print @135 - autocorr_rrrf_push @136 - autocorr_rrrf_reset @137 - awgn @138 - bessel_azpkf @139 - bilinear_zpkf @140 - blackmanharris @141 - blackmanharris7 @142 - bpacketgen_assemble_header @143 - bpacketgen_assemble_pnsequence @144 - bpacketgen_compute_packet_len @145 - bpacketgen_create @146 - bpacketgen_destroy @147 - bpacketgen_encode @148 - bpacketgen_get_packet_len @149 - bpacketgen_print @150 - bpacketgen_recreate @151 - bpacketsync_assemble_pnsequence @152 - bpacketsync_create @153 - bpacketsync_decode_header @154 - bpacketsync_decode_payload @155 - bpacketsync_destroy @156 - bpacketsync_execute @157 - bpacketsync_execute_bit @158 - bpacketsync_execute_byte @159 - bpacketsync_execute_rxheader @160 - bpacketsync_execute_rxpayload @161 - bpacketsync_execute_seekpn @162 - bpacketsync_execute_sym @163 - bpacketsync_print @164 - bpacketsync_reconfig @165 - bpacketsync_reset @166 - bpresync_cccf_correlate @167 - bpresync_cccf_correlatex @168 - bpresync_cccf_create @169 - bpresync_cccf_destroy @170 - bpresync_cccf_print @171 - bpresync_cccf_push @172 - bpresync_cccf_reset @173 - bsequence_accumulate @174 - bsequence_add @175 - bsequence_circshift @176 - bsequence_correlate @177 - bsequence_create @178 - bsequence_create_ccodes @179 - bsequence_destroy @180 - bsequence_get_length @181 - bsequence_index @182 - bsequence_init @183 - bsequence_init_msequence @184 - bsequence_mul @185 - bsequence_print @186 - bsequence_push @187 - bsequence_reset @188 - bsync_cccf_correlate @189 - bsync_cccf_create @190 - bsync_cccf_create_msequence @191 - bsync_cccf_destroy @192 - bsync_cccf_print @193 - bsync_crcf_correlate @194 - bsync_crcf_create @195 - bsync_crcf_create_msequence @196 - bsync_crcf_destroy @197 - bsync_crcf_print @198 - bsync_rrrf_correlate @199 - bsync_rrrf_create @200 - bsync_rrrf_create_msequence @201 - bsync_rrrf_destroy @202 - bsync_rrrf_print @203 - butter_azpkf @204 - cawgn @205 - cbuffercf_create @206 - cbuffercf_create_max @207 - cbuffercf_debug_print @208 - cbuffercf_destroy @209 - cbuffercf_is_full @210 - cbuffercf_linearize @211 - cbuffercf_max_read @212 - cbuffercf_max_size @213 - cbuffercf_pop @214 - cbuffercf_print @215 - cbuffercf_push @216 - cbuffercf_read @217 - cbuffercf_release @218 - cbuffercf_reset @219 - cbuffercf_size @220 - cbuffercf_space_available @221 - cbuffercf_write @222 - cbufferf_create @223 - cbufferf_create_max @224 - cbufferf_debug_print @225 - cbufferf_destroy @226 - cbufferf_is_full @227 - cbufferf_linearize @228 - cbufferf_max_read @229 - cbufferf_max_size @230 - cbufferf_pop @231 - cbufferf_print @232 - cbufferf_push @233 - cbufferf_read @234 - cbufferf_release @235 - cbufferf_reset @236 - cbufferf_size @237 - cbufferf_space_available @238 - cbufferf_write @239 - channel_cccf_add_awgn @240 - channel_cccf_add_carrier_offset @241 - channel_cccf_add_multipath @242 - channel_cccf_add_shadowing @243 - channel_cccf_create @244 - channel_cccf_destroy @245 - channel_cccf_execute @246 - channel_cccf_execute_block @247 - channel_cccf_print @248 - cheby1_azpkf @249 - cheby2_azpkf @250 - checksum_generate_key @251 - chromosome_copy @252 - chromosome_create @253 - chromosome_create_basic @254 - chromosome_create_clone @255 - chromosome_crossover @256 - chromosome_destroy @257 - chromosome_get_num_traits @258 - chromosome_init @259 - chromosome_init_random @260 - chromosome_initf @261 - chromosome_mutate @262 - chromosome_print @263 - chromosome_printf @264 - chromosome_reset @265 - chromosome_value @266 - chromosome_valuef @267 - compress_cf_mulaw @268 - compress_mulaw @269 - count_bit_errors @270 - count_bit_errors_array @271 - cpfskdem_create @272 - cpfskdem_demodulate @273 - cpfskdem_demodulate_coherent @274 - cpfskdem_demodulate_noncoherent @275 - cpfskdem_destroy @276 - cpfskdem_get_delay @277 - cpfskdem_init_coherent @278 - cpfskdem_init_noncoherent @279 - cpfskdem_print @280 - cpfskdem_reset @281 - cpfskmod_create @282 - cpfskmod_destroy @283 - cpfskmod_firdes @284 - cpfskmod_get_delay @285 - cpfskmod_modulate @286 - cpfskmod_print @287 - cpfskmod_reset @288 - crandnf @289 - crc16_generate_key @290 - crc24_generate_key @291 - crc32_generate_key @292 - crc8_generate_key @293 - crc_append_key @294 - crc_check_key @295 - crc_generate_key @296 - crc_get_length @297 - crc_scheme_str @298 DATA - crc_sizeof_key @299 - crc_validate_message @300 - cvsd_create @301 - cvsd_decode @302 - cvsd_decode8 @303 - cvsd_destroy @304 - cvsd_encode @305 - cvsd_encode8 @306 - cvsd_print @307 - detector_cccf_compute_dotprods @308 - detector_cccf_correlate @309 - detector_cccf_create @310 - detector_cccf_debug_print @311 - detector_cccf_destroy @312 - detector_cccf_estimate_offsets @313 - detector_cccf_print @314 - detector_cccf_reset @315 - detector_cccf_update_sumsq @316 - dotprod_cccf_create @317 - dotprod_cccf_destroy @318 - dotprod_cccf_execute @319 - dotprod_cccf_execute_mmx @320 - dotprod_cccf_execute_mmx4 @321 - dotprod_cccf_print @322 - dotprod_cccf_recreate @323 - dotprod_cccf_run @324 - dotprod_cccf_run4 @325 - dotprod_crcf_create @326 - dotprod_crcf_destroy @327 - dotprod_crcf_execute @328 - dotprod_crcf_execute_mmx @329 - dotprod_crcf_execute_mmx4 @330 - dotprod_crcf_print @331 - dotprod_crcf_recreate @332 - dotprod_crcf_run @333 - dotprod_crcf_run4 @334 - dotprod_rrrf_create @335 - dotprod_rrrf_destroy @336 - dotprod_rrrf_execute @337 - dotprod_rrrf_execute_mmx @338 - dotprod_rrrf_execute_mmx4 @339 - dotprod_rrrf_print @340 - dotprod_rrrf_recreate @341 - dotprod_rrrf_run @342 - dotprod_rrrf_run4 @343 - ellip_acdf @344 - ellip_asnf @345 - ellip_azpkf @346 - ellip_cdf @347 - ellip_snf @348 - ellipdegf @349 - ellipkf @350 - eqlms_cccf_create @351 - eqlms_cccf_create_lowpass @352 - eqlms_cccf_create_rnyquist @353 - eqlms_cccf_destroy @354 - eqlms_cccf_execute @355 - eqlms_cccf_execute_block @356 - eqlms_cccf_get_bw @357 - eqlms_cccf_get_weights @358 - eqlms_cccf_print @359 - eqlms_cccf_push @360 - eqlms_cccf_push_block @361 - eqlms_cccf_recreate @362 - eqlms_cccf_reset @363 - eqlms_cccf_set_bw @364 - eqlms_cccf_step @365 - eqlms_cccf_step_blind @366 - eqlms_cccf_train @367 - eqlms_cccf_update_sumsq @368 - eqlms_rrrf_create @369 - eqlms_rrrf_create_lowpass @370 - eqlms_rrrf_create_rnyquist @371 - eqlms_rrrf_destroy @372 - eqlms_rrrf_execute @373 - eqlms_rrrf_execute_block @374 - eqlms_rrrf_get_bw @375 - eqlms_rrrf_get_weights @376 - eqlms_rrrf_print @377 - eqlms_rrrf_push @378 - eqlms_rrrf_push_block @379 - eqlms_rrrf_recreate @380 - eqlms_rrrf_reset @381 - eqlms_rrrf_set_bw @382 - eqlms_rrrf_step @383 - eqlms_rrrf_step_blind @384 - eqlms_rrrf_train @385 - eqlms_rrrf_update_sumsq @386 - eqrls_cccf_create @387 - eqrls_cccf_destroy @388 - eqrls_cccf_execute @389 - eqrls_cccf_get_bw @390 - eqrls_cccf_get_weights @391 - eqrls_cccf_print @392 - eqrls_cccf_push @393 - eqrls_cccf_recreate @394 - eqrls_cccf_reset @395 - eqrls_cccf_set_bw @396 - eqrls_cccf_step @397 - eqrls_cccf_train @398 - eqrls_rrrf_create @399 - eqrls_rrrf_destroy @400 - eqrls_rrrf_execute @401 - eqrls_rrrf_get_bw @402 - eqrls_rrrf_get_weights @403 - eqrls_rrrf_print @404 - eqrls_rrrf_push @405 - eqrls_rrrf_recreate @406 - eqrls_rrrf_reset @407 - eqrls_rrrf_set_bw @408 - eqrls_rrrf_step @409 - eqrls_rrrf_train @410 - estimate_req_filter_As @411 - estimate_req_filter_df @412 - estimate_req_filter_len @413 - estimate_req_filter_len_Herrmann @414 - estimate_req_filter_len_Kaiser @415 - expand_cf_mulaw @416 - expand_mulaw @417 - fec_block_get_enc_msg_len @418 - fec_conv27_poly @419 DATA - fec_conv27p23_matrix @420 DATA - fec_conv27p34_matrix @421 DATA - fec_conv27p45_matrix @422 DATA - fec_conv27p56_matrix @423 DATA - fec_conv27p67_matrix @424 DATA - fec_conv27p78_matrix @425 DATA - fec_conv29_poly @426 DATA - fec_conv29p23_matrix @427 DATA - fec_conv29p34_matrix @428 DATA - fec_conv29p45_matrix @429 DATA - fec_conv29p56_matrix @430 DATA - fec_conv29p67_matrix @431 DATA - fec_conv29p78_matrix @432 DATA - fec_conv39_poly @433 DATA - fec_conv615_poly @434 DATA - fec_conv_create @435 - fec_conv_destroy @436 - fec_conv_get_enc_msg_len @437 - fec_conv_punctured_create @438 - fec_conv_punctured_decode @439 - fec_conv_punctured_destroy @440 - fec_conv_punctured_encode @441 - fec_create @442 - fec_decode @443 - fec_decode_soft @444 - fec_destroy @445 - fec_encode @446 - fec_get_enc_msg_length @447 - fec_get_rate @448 - fec_golay2412_create @449 - fec_golay2412_decode @450 - fec_golay2412_decode_symbol @451 - fec_golay2412_destroy @452 - fec_golay2412_encode @453 - fec_golay2412_encode_symbol @454 - fec_hamming128_create @455 - fec_hamming128_decode @456 - fec_hamming128_decode_soft @457 - fec_hamming128_decode_symbol @458 - fec_hamming128_destroy @459 - fec_hamming128_encode @460 - fec_hamming128_encode_symbol @461 - fec_hamming1511_decode_symbol @462 - fec_hamming1511_encode_symbol @463 - fec_hamming3126_decode_symbol @464 - fec_hamming3126_encode_symbol @465 - fec_hamming74_create @466 - fec_hamming74_decode @467 - fec_hamming74_decode_soft @468 - fec_hamming74_destroy @469 - fec_hamming74_encode @470 - fec_hamming84_create @471 - fec_hamming84_decode @472 - fec_hamming84_decode_soft @473 - fec_hamming84_destroy @474 - fec_hamming84_encode @475 - fec_pass_create @476 - fec_pass_decode @477 - fec_pass_destroy @478 - fec_pass_encode @479 - fec_pass_print @480 - fec_print @481 - fec_recreate @482 - fec_rep3_create @483 - fec_rep3_decode @484 - fec_rep3_decode_soft @485 - fec_rep3_destroy @486 - fec_rep3_encode @487 - fec_rep3_print @488 - fec_rep5_create @489 - fec_rep5_decode @490 - fec_rep5_decode_soft @491 - fec_rep5_destroy @492 - fec_rep5_encode @493 - fec_rep5_print @494 - fec_rs_create @495 - fec_rs_decode @496 - fec_rs_destroy @497 - fec_rs_encode @498 - fec_rs_get_enc_msg_len @499 - fec_scheme_is_convolutional @500 - fec_scheme_is_hamming @501 - fec_scheme_is_punctured @502 - fec_scheme_is_reedsolomon @503 - fec_scheme_is_repeat @504 - fec_scheme_str @505 DATA - fec_secded2216_compute_parity @506 - fec_secded2216_compute_syndrome @507 - fec_secded2216_create @508 - fec_secded2216_decode @509 - fec_secded2216_decode_symbol @510 - fec_secded2216_destroy @511 - fec_secded2216_encode @512 - fec_secded2216_encode_symbol @513 - fec_secded2216_estimate_ehat @514 - fec_secded3932_compute_parity @515 - fec_secded3932_compute_syndrome @516 - fec_secded3932_create @517 - fec_secded3932_decode @518 - fec_secded3932_decode_symbol @519 - fec_secded3932_destroy @520 - fec_secded3932_encode @521 - fec_secded3932_encode_symbol @522 - fec_secded3932_estimate_ehat @523 - fec_secded7264_compute_parity @524 - fec_secded7264_compute_syndrome @525 - fec_secded7264_create @526 - fec_secded7264_decode @527 - fec_secded7264_decode_symbol @528 - fec_secded7264_destroy @529 - fec_secded7264_encode @530 - fec_secded7264_encode_symbol @531 - fec_secded7264_estimate_ehat @532 - fec_sumproduct @533 - fec_sumproduct_step @534 - fecsoft_hamming128_decode @535 - fecsoft_hamming128_decode_n3 @536 - fecsoft_hamming128_n3 @537 DATA - fecsoft_hamming74_decode @538 - fecsoft_hamming84_decode @539 - fft_create_plan @540 - fft_create_plan_dft @541 - fft_create_plan_mixed_radix @542 - fft_create_plan_r2r_1d @543 - fft_create_plan_rader @544 - fft_create_plan_rader2 @545 - fft_create_plan_radix2 @546 - fft_destroy_plan @547 - fft_destroy_plan_dft @548 - fft_destroy_plan_mixed_radix @549 - fft_destroy_plan_r2r_1d @550 - fft_destroy_plan_rader @551 - fft_destroy_plan_rader2 @552 - fft_destroy_plan_radix2 @553 - fft_estimate_mixed_radix @554 - fft_execute @555 - fft_execute_REDFT00 @556 - fft_execute_REDFT01 @557 - fft_execute_REDFT10 @558 - fft_execute_REDFT11 @559 - fft_execute_RODFT00 @560 - fft_execute_RODFT01 @561 - fft_execute_RODFT10 @562 - fft_execute_RODFT11 @563 - fft_execute_dft @564 - fft_execute_dft_16 @565 - fft_execute_dft_2 @566 - fft_execute_dft_3 @567 - fft_execute_dft_4 @568 - fft_execute_dft_5 @569 - fft_execute_dft_6 @570 - fft_execute_dft_7 @571 - fft_execute_dft_8 @572 - fft_execute_mixed_radix @573 - fft_execute_rader @574 - fft_execute_rader2 @575 - fft_execute_radix2 @576 - fft_is_radix2 @577 - fft_print_plan @578 - fft_print_plan_r2r_1d @579 - fft_print_plan_recursive @580 - fft_r2r_1d_run @581 - fft_reverse_index @582 - fft_run @583 - fft_shift @584 - fftfilt_cccf_create @585 - fftfilt_cccf_destroy @586 - fftfilt_cccf_execute @587 - fftfilt_cccf_get_length @588 - fftfilt_cccf_print @589 - fftfilt_cccf_reset @590 - fftfilt_cccf_set_scale @591 - fftfilt_crcf_create @592 - fftfilt_crcf_destroy @593 - fftfilt_crcf_execute @594 - fftfilt_crcf_get_length @595 - fftfilt_crcf_print @596 - fftfilt_crcf_reset @597 - fftfilt_crcf_set_scale @598 - fftfilt_rrrf_create @599 - fftfilt_rrrf_destroy @600 - fftfilt_rrrf_execute @601 - fftfilt_rrrf_get_length @602 - fftfilt_rrrf_print @603 - fftfilt_rrrf_reset @604 - fftfilt_rrrf_set_scale @605 - fir_group_delay @606 - firdecim_cccf_create @607 - firdecim_cccf_create_kaiser @608 - firdecim_cccf_create_prototype @609 - firdecim_cccf_destroy @610 - firdecim_cccf_execute @611 - firdecim_cccf_execute_block @612 - firdecim_cccf_print @613 - firdecim_cccf_reset @614 - firdecim_crcf_create @615 - firdecim_crcf_create_kaiser @616 - firdecim_crcf_create_prototype @617 - firdecim_crcf_destroy @618 - firdecim_crcf_execute @619 - firdecim_crcf_execute_block @620 - firdecim_crcf_print @621 - firdecim_crcf_reset @622 - firdecim_rrrf_create @623 - firdecim_rrrf_create_kaiser @624 - firdecim_rrrf_create_prototype @625 - firdecim_rrrf_destroy @626 - firdecim_rrrf_execute @627 - firdecim_rrrf_execute_block @628 - firdecim_rrrf_print @629 - firdecim_rrrf_reset @630 - firdespm_compute_error @631 - firdespm_compute_interp @632 - firdespm_compute_taps @633 - firdespm_create @634 - firdespm_create_callback @635 - firdespm_destroy @636 - firdespm_execute @637 - firdespm_iext_search @638 - firdespm_init_grid @639 - firdespm_init_memory @640 - firdespm_is_search_complete @641 - firdespm_lowpass @642 - firdespm_print @643 - firdespm_run @644 - firfarrow_crcf_create @645 - firfarrow_crcf_destroy @646 - firfarrow_crcf_execute @647 - firfarrow_crcf_execute_block @648 - firfarrow_crcf_freqresponse @649 - firfarrow_crcf_genpoly @650 - firfarrow_crcf_get_coefficients @651 - firfarrow_crcf_get_length @652 - firfarrow_crcf_groupdelay @653 - firfarrow_crcf_print @654 - firfarrow_crcf_push @655 - firfarrow_crcf_reset @656 - firfarrow_crcf_set_delay @657 - firfarrow_rrrf_create @658 - firfarrow_rrrf_destroy @659 - firfarrow_rrrf_execute @660 - firfarrow_rrrf_execute_block @661 - firfarrow_rrrf_freqresponse @662 - firfarrow_rrrf_genpoly @663 - firfarrow_rrrf_get_coefficients @664 - firfarrow_rrrf_get_length @665 - firfarrow_rrrf_groupdelay @666 - firfarrow_rrrf_print @667 - firfarrow_rrrf_push @668 - firfarrow_rrrf_reset @669 - firfarrow_rrrf_set_delay @670 - firfilt_cccf_create @671 - firfilt_cccf_create_kaiser @672 - firfilt_cccf_create_rect @673 - firfilt_cccf_create_rnyquist @674 - firfilt_cccf_destroy @675 - firfilt_cccf_execute @676 - firfilt_cccf_execute_block @677 - firfilt_cccf_freqresponse @678 - firfilt_cccf_get_length @679 - firfilt_cccf_groupdelay @680 - firfilt_cccf_print @681 - firfilt_cccf_push @682 - firfilt_cccf_recreate @683 - firfilt_cccf_reset @684 - firfilt_cccf_set_scale @685 - firfilt_crcf_create @686 - firfilt_crcf_create_kaiser @687 - firfilt_crcf_create_rect @688 - firfilt_crcf_create_rnyquist @689 - firfilt_crcf_destroy @690 - firfilt_crcf_execute @691 - firfilt_crcf_execute_block @692 - firfilt_crcf_freqresponse @693 - firfilt_crcf_get_length @694 - firfilt_crcf_groupdelay @695 - firfilt_crcf_print @696 - firfilt_crcf_push @697 - firfilt_crcf_recreate @698 - firfilt_crcf_reset @699 - firfilt_crcf_set_scale @700 - firfilt_rrrf_create @701 - firfilt_rrrf_create_kaiser @702 - firfilt_rrrf_create_rect @703 - firfilt_rrrf_create_rnyquist @704 - firfilt_rrrf_destroy @705 - firfilt_rrrf_execute @706 - firfilt_rrrf_execute_block @707 - firfilt_rrrf_freqresponse @708 - firfilt_rrrf_get_length @709 - firfilt_rrrf_groupdelay @710 - firfilt_rrrf_print @711 - firfilt_rrrf_push @712 - firfilt_rrrf_recreate @713 - firfilt_rrrf_reset @714 - firfilt_rrrf_set_scale @715 - firhilbf_c2r_execute @716 - firhilbf_create @717 - firhilbf_decim_execute @718 - firhilbf_decim_execute_block @719 - firhilbf_destroy @720 - firhilbf_interp_execute @721 - firhilbf_interp_execute_block @722 - firhilbf_print @723 - firhilbf_r2c_execute @724 - firhilbf_reset @725 - firinterp_cccf_create @726 - firinterp_cccf_create_kaiser @727 - firinterp_cccf_create_prototype @728 - firinterp_cccf_destroy @729 - firinterp_cccf_execute @730 - firinterp_cccf_execute_block @731 - firinterp_cccf_print @732 - firinterp_cccf_reset @733 - firinterp_crcf_create @734 - firinterp_crcf_create_kaiser @735 - firinterp_crcf_create_prototype @736 - firinterp_crcf_destroy @737 - firinterp_crcf_execute @738 - firinterp_crcf_execute_block @739 - firinterp_crcf_print @740 - firinterp_crcf_reset @741 - firinterp_rrrf_create @742 - firinterp_rrrf_create_kaiser @743 - firinterp_rrrf_create_prototype @744 - firinterp_rrrf_destroy @745 - firinterp_rrrf_execute @746 - firinterp_rrrf_execute_block @747 - firinterp_rrrf_print @748 - firinterp_rrrf_reset @749 - firpfb_cccf_create @750 - firpfb_cccf_create_drnyquist @751 - firpfb_cccf_create_kaiser @752 - firpfb_cccf_create_rnyquist @753 - firpfb_cccf_destroy @754 - firpfb_cccf_execute @755 - firpfb_cccf_execute_block @756 - firpfb_cccf_print @757 - firpfb_cccf_push @758 - firpfb_cccf_recreate @759 - firpfb_cccf_reset @760 - firpfb_cccf_set_scale @761 - firpfb_crcf_create @762 - firpfb_crcf_create_drnyquist @763 - firpfb_crcf_create_kaiser @764 - firpfb_crcf_create_rnyquist @765 - firpfb_crcf_destroy @766 - firpfb_crcf_execute @767 - firpfb_crcf_execute_block @768 - firpfb_crcf_print @769 - firpfb_crcf_push @770 - firpfb_crcf_recreate @771 - firpfb_crcf_reset @772 - firpfb_crcf_set_scale @773 - firpfb_rrrf_create @774 - firpfb_rrrf_create_drnyquist @775 - firpfb_rrrf_create_kaiser @776 - firpfb_rrrf_create_rnyquist @777 - firpfb_rrrf_destroy @778 - firpfb_rrrf_execute @779 - firpfb_rrrf_execute_block @780 - firpfb_rrrf_print @781 - firpfb_rrrf_push @782 - firpfb_rrrf_recreate @783 - firpfb_rrrf_reset @784 - firpfb_rrrf_set_scale @785 - firpfbch2_crcf_create @786 - firpfbch2_crcf_create_kaiser @787 - firpfbch2_crcf_destroy @788 - firpfbch2_crcf_execute @789 - firpfbch2_crcf_execute_analyzer @790 - firpfbch2_crcf_execute_synthesizer @791 - firpfbch2_crcf_print @792 - firpfbch2_crcf_reset @793 - firpfbch_cccf_analyzer_execute @794 - firpfbch_cccf_analyzer_push @795 - firpfbch_cccf_analyzer_run @796 - firpfbch_cccf_create @797 - firpfbch_cccf_create_kaiser @798 - firpfbch_cccf_create_rnyquist @799 - firpfbch_cccf_destroy @800 - firpfbch_cccf_print @801 - firpfbch_cccf_reset @802 - firpfbch_cccf_synthesizer_execute @803 - firpfbch_crcf_analyzer_execute @804 - firpfbch_crcf_analyzer_push @805 - firpfbch_crcf_analyzer_run @806 - firpfbch_crcf_create @807 - firpfbch_crcf_create_kaiser @808 - firpfbch_crcf_create_rnyquist @809 - firpfbch_crcf_destroy @810 - firpfbch_crcf_print @811 - firpfbch_crcf_reset @812 - firpfbch_crcf_synthesizer_execute @813 - flattop @814 - flexframegen_assemble @815 - flexframegen_create @816 - flexframegen_destroy @817 - flexframegen_generate_header @818 - flexframegen_generate_payload @819 - flexframegen_generate_preamble @820 - flexframegen_generate_symbol @821 - flexframegen_generate_tail @822 - flexframegen_getframelen @823 - flexframegen_getprops @824 - flexframegen_is_assembled @825 - flexframegen_print @826 - flexframegen_reconfigure @827 - flexframegen_reset @828 - flexframegen_setprops @829 - flexframegen_write_samples @830 - flexframegenprops_init_default @831 - flexframesync_create @832 - flexframesync_debug_disable @833 - flexframesync_debug_enable @834 - flexframesync_debug_print @835 - flexframesync_decode_header @836 - flexframesync_destroy @837 - flexframesync_execute @838 - flexframesync_execute_rxheader @839 - flexframesync_execute_rxpayload @840 - flexframesync_execute_rxpreamble @841 - flexframesync_execute_seekpn @842 - flexframesync_get_framedatastats @843 - flexframesync_is_frame_open @844 - flexframesync_print @845 - flexframesync_reset @846 - flexframesync_reset_framedatastats @847 - flexframesync_step @848 - fpoly_bessel @849 - fpoly_bessel_roots @850 - fpoly_bessel_roots_orchard @851 - fpoly_bessel_roots_orchard_recursion @852 - framedatastats_print @853 - framedatastats_reset @854 - framegen64_create @855 - framegen64_destroy @856 - framegen64_execute @857 - framegen64_print @858 - framesync64_create @859 - framesync64_debug_disable @860 - framesync64_debug_enable @861 - framesync64_debug_print @862 - framesync64_destroy @863 - framesync64_execute @864 - framesync64_execute_rxpayload @865 - framesync64_execute_rxpreamble @866 - framesync64_execute_seekpn @867 - framesync64_print @868 - framesync64_reset @869 - framesync64_step @870 - framesyncstats_default @871 DATA - framesyncstats_init_default @872 - framesyncstats_print @873 - freqdem_create @874 - freqdem_demodulate @875 - freqdem_demodulate_block @876 - freqdem_destroy @877 - freqdem_print @878 - freqdem_reset @879 - freqmod_create @880 - freqmod_destroy @881 - freqmod_modulate @882 - freqmod_modulate_block @883 - freqmod_print @884 - freqmod_reset @885 - fskdem_create @886 - fskdem_demodulate @887 - fskdem_destroy @888 - fskdem_get_frequency_error @889 - fskdem_print @890 - fskdem_reset @891 - fskmod_create @892 - fskmod_destroy @893 - fskmod_modulate @894 - fskmod_print @895 - fskmod_reset @896 - gasearch_create @897 - gasearch_create_advanced @898 - gasearch_crossover @899 - gasearch_destroy @900 - gasearch_evaluate @901 - gasearch_evolve @902 - gasearch_getopt @903 - gasearch_mutate @904 - gasearch_print @905 - gasearch_rank @906 - gasearch_run @907 - gasearch_set_mutation_rate @908 - gasearch_set_population_size @909 - gmskdem_create @910 - gmskdem_debug_print @911 - gmskdem_demodulate @912 - gmskdem_destroy @913 - gmskdem_print @914 - gmskdem_reset @915 - gmskdem_set_eq_bw @916 - gmskframegen_assemble @917 - gmskframegen_create @918 - gmskframegen_destroy @919 - gmskframegen_encode_header @920 - gmskframegen_getframelen @921 - gmskframegen_is_assembled @922 - gmskframegen_print @923 - gmskframegen_reset @924 - gmskframegen_write_header @925 - gmskframegen_write_payload @926 - gmskframegen_write_preamble @927 - gmskframegen_write_samples @928 - gmskframegen_write_tail @929 - gmskframesync_create @930 - gmskframesync_debug_disable @931 - gmskframesync_debug_enable @932 - gmskframesync_debug_print @933 - gmskframesync_decode_header @934 - gmskframesync_destroy @935 - gmskframesync_execute @936 - gmskframesync_execute_detectframe @937 - gmskframesync_execute_rxheader @938 - gmskframesync_execute_rxpayload @939 - gmskframesync_execute_rxpreamble @940 - gmskframesync_execute_sample @941 - gmskframesync_is_frame_open @942 - gmskframesync_print @943 - gmskframesync_pushpn @944 - gmskframesync_reset @945 - gmskframesync_syncpn @946 - gmskframesync_update_fi @947 - gmskframesync_update_symsync @948 - gmskmod_create @949 - gmskmod_destroy @950 - gmskmod_modulate @951 - gmskmod_print @952 - gmskmod_reset @953 - golay2412_Gt @954 DATA - golay2412_H @955 DATA - golay2412_P @956 DATA - golay2412_matrix_mul @957 - golay2412_parity_search @958 - gradsearch_create @959 - gradsearch_destroy @960 - gradsearch_execute @961 - gradsearch_gradient @962 - gradsearch_linesearch @963 - gradsearch_norm @964 - gradsearch_print @965 - gradsearch_step @966 - gray_decode @967 - gray_encode @968 - hamming @969 - hamming128_enc_gentab @970 DATA - hamming74_dec_gentab @971 DATA - hamming74_enc_gentab @972 DATA - hamming84_dec_gentab @973 DATA - hamming84_enc_gentab @974 DATA - hann @975 - icrandnf @976 - iir_group_delay @977 - iirdecim_cccf_create @978 - iirdecim_cccf_create_default @979 - iirdecim_cccf_create_prototype @980 - iirdecim_cccf_destroy @981 - iirdecim_cccf_execute @982 - iirdecim_cccf_execute_block @983 - iirdecim_cccf_groupdelay @984 - iirdecim_cccf_print @985 - iirdecim_cccf_reset @986 - iirdecim_crcf_create @987 - iirdecim_crcf_create_default @988 - iirdecim_crcf_create_prototype @989 - iirdecim_crcf_destroy @990 - iirdecim_crcf_execute @991 - iirdecim_crcf_execute_block @992 - iirdecim_crcf_groupdelay @993 - iirdecim_crcf_print @994 - iirdecim_crcf_reset @995 - iirdecim_rrrf_create @996 - iirdecim_rrrf_create_default @997 - iirdecim_rrrf_create_prototype @998 - iirdecim_rrrf_destroy @999 - iirdecim_rrrf_execute @1000 - iirdecim_rrrf_execute_block @1001 - iirdecim_rrrf_groupdelay @1002 - iirdecim_rrrf_print @1003 - iirdecim_rrrf_reset @1004 - iirdes_dzpk2sosf @1005 - iirdes_dzpk2tff @1006 - iirdes_dzpk_lp2bp @1007 - iirdes_dzpk_lp2hp @1008 - iirdes_freqprewarp @1009 - iirdes_isstable @1010 - iirdes_pll_active_PI @1011 - iirdes_pll_active_lag @1012 - iirfilt_cccf_create @1013 - iirfilt_cccf_create_dc_blocker @1014 - iirfilt_cccf_create_differentiator @1015 - iirfilt_cccf_create_integrator @1016 - iirfilt_cccf_create_lowpass @1017 - iirfilt_cccf_create_pll @1018 - iirfilt_cccf_create_prototype @1019 - iirfilt_cccf_create_sos @1020 - iirfilt_cccf_destroy @1021 - iirfilt_cccf_execute @1022 - iirfilt_cccf_execute_block @1023 - iirfilt_cccf_execute_norm @1024 - iirfilt_cccf_execute_sos @1025 - iirfilt_cccf_freqresponse @1026 - iirfilt_cccf_get_length @1027 - iirfilt_cccf_groupdelay @1028 - iirfilt_cccf_init @1029 - iirfilt_cccf_print @1030 - iirfilt_cccf_reset @1031 - iirfilt_crcf_create @1032 - iirfilt_crcf_create_dc_blocker @1033 - iirfilt_crcf_create_differentiator @1034 - iirfilt_crcf_create_integrator @1035 - iirfilt_crcf_create_lowpass @1036 - iirfilt_crcf_create_pll @1037 - iirfilt_crcf_create_prototype @1038 - iirfilt_crcf_create_sos @1039 - iirfilt_crcf_destroy @1040 - iirfilt_crcf_execute @1041 - iirfilt_crcf_execute_block @1042 - iirfilt_crcf_execute_norm @1043 - iirfilt_crcf_execute_sos @1044 - iirfilt_crcf_freqresponse @1045 - iirfilt_crcf_get_length @1046 - iirfilt_crcf_groupdelay @1047 - iirfilt_crcf_init @1048 - iirfilt_crcf_print @1049 - iirfilt_crcf_reset @1050 - iirfilt_rrrf_create @1051 - iirfilt_rrrf_create_dc_blocker @1052 - iirfilt_rrrf_create_differentiator @1053 - iirfilt_rrrf_create_integrator @1054 - iirfilt_rrrf_create_lowpass @1055 - iirfilt_rrrf_create_pll @1056 - iirfilt_rrrf_create_prototype @1057 - iirfilt_rrrf_create_sos @1058 - iirfilt_rrrf_destroy @1059 - iirfilt_rrrf_execute @1060 - iirfilt_rrrf_execute_block @1061 - iirfilt_rrrf_execute_norm @1062 - iirfilt_rrrf_execute_sos @1063 - iirfilt_rrrf_freqresponse @1064 - iirfilt_rrrf_get_length @1065 - iirfilt_rrrf_groupdelay @1066 - iirfilt_rrrf_init @1067 - iirfilt_rrrf_print @1068 - iirfilt_rrrf_reset @1069 - iirfiltsos_cccf_create @1070 - iirfiltsos_cccf_destroy @1071 - iirfiltsos_cccf_execute @1072 - iirfiltsos_cccf_execute_df1 @1073 - iirfiltsos_cccf_execute_df2 @1074 - iirfiltsos_cccf_groupdelay @1075 - iirfiltsos_cccf_print @1076 - iirfiltsos_cccf_reset @1077 - iirfiltsos_cccf_set_coefficients @1078 - iirfiltsos_crcf_create @1079 - iirfiltsos_crcf_destroy @1080 - iirfiltsos_crcf_execute @1081 - iirfiltsos_crcf_execute_df1 @1082 - iirfiltsos_crcf_execute_df2 @1083 - iirfiltsos_crcf_groupdelay @1084 - iirfiltsos_crcf_print @1085 - iirfiltsos_crcf_reset @1086 - iirfiltsos_crcf_set_coefficients @1087 - iirfiltsos_rrrf_create @1088 - iirfiltsos_rrrf_destroy @1089 - iirfiltsos_rrrf_execute @1090 - iirfiltsos_rrrf_execute_df1 @1091 - iirfiltsos_rrrf_execute_df2 @1092 - iirfiltsos_rrrf_groupdelay @1093 - iirfiltsos_rrrf_print @1094 - iirfiltsos_rrrf_reset @1095 - iirfiltsos_rrrf_set_coefficients @1096 - iirinterp_cccf_create @1097 - iirinterp_cccf_create_default @1098 - iirinterp_cccf_create_prototype @1099 - iirinterp_cccf_destroy @1100 - iirinterp_cccf_execute @1101 - iirinterp_cccf_execute_block @1102 - iirinterp_cccf_groupdelay @1103 - iirinterp_cccf_print @1104 - iirinterp_cccf_reset @1105 - iirinterp_crcf_create @1106 - iirinterp_crcf_create_default @1107 - iirinterp_crcf_create_prototype @1108 - iirinterp_crcf_destroy @1109 - iirinterp_crcf_execute @1110 - iirinterp_crcf_execute_block @1111 - iirinterp_crcf_groupdelay @1112 - iirinterp_crcf_print @1113 - iirinterp_crcf_reset @1114 - iirinterp_rrrf_create @1115 - iirinterp_rrrf_create_default @1116 - iirinterp_rrrf_create_prototype @1117 - iirinterp_rrrf_destroy @1118 - iirinterp_rrrf_execute @1119 - iirinterp_rrrf_execute_block @1120 - iirinterp_rrrf_groupdelay @1121 - iirinterp_rrrf_print @1122 - iirinterp_rrrf_reset @1123 - interleaver_create @1124 - interleaver_decode @1125 - interleaver_decode_soft @1126 - interleaver_destroy @1127 - interleaver_encode @1128 - interleaver_encode_soft @1129 - interleaver_permute @1130 - interleaver_permute_mask @1131 - interleaver_permute_mask_soft @1132 - interleaver_permute_soft @1133 - interleaver_print @1134 - interleaver_set_depth @1135 - kaiser @1136 - kaiser_beta_As @1137 - landenf @1138 - liquid_MarcumQ1f @1139 - liquid_MarcumQf @1140 - liquid_Qf @1141 - liquid_apsk128 @1142 DATA - liquid_apsk16 @1143 DATA - liquid_apsk256 @1144 DATA - liquid_apsk32 @1145 DATA - liquid_apsk4 @1146 DATA - liquid_apsk64 @1147 DATA - liquid_apsk8 @1148 DATA - liquid_asechf @1149 - liquid_bdotprod @1150 - liquid_besseli0f @1151 - liquid_besselif @1152 - liquid_besselj0f @1153 - liquid_besseljf @1154 - liquid_c_leading_zeros @1155 DATA - liquid_c_ones @1156 DATA - liquid_c_ones_mod2 @1157 DATA - liquid_cacosf @1158 - liquid_cargf_approx @1159 - liquid_casinf @1160 - liquid_catanf @1161 - liquid_cexpf @1162 - liquid_clogf @1163 - liquid_cosf @1164 - liquid_count_leading_zeros @1165 - liquid_count_ones @1166 - liquid_count_ones_mod2 @1167 - liquid_cplxpair @1168 - liquid_cplxpair_cleanup @1169 - liquid_csqrtf @1170 - liquid_expf @1171 - liquid_factor @1172 - liquid_factorialf @1173 - liquid_fft_estimate_method @1174 - liquid_filter_autocorr @1175 - liquid_filter_crosscorr @1176 - liquid_filter_energy @1177 - liquid_filter_isi @1178 - liquid_firdes_arkaiser @1179 - liquid_firdes_doppler @1180 - liquid_firdes_farcsech @1181 - liquid_firdes_farcsech_freqresponse @1182 - liquid_firdes_fexp @1183 - liquid_firdes_fexp_freqresponse @1184 - liquid_firdes_fnyquist @1185 - liquid_firdes_fsech @1186 - liquid_firdes_fsech_freqresponse @1187 - liquid_firdes_gmskrx @1188 - liquid_firdes_gmsktx @1189 - liquid_firdes_hM3 @1190 - liquid_firdes_kaiser @1191 - liquid_firdes_prototype @1192 - liquid_firdes_rcos @1193 - liquid_firdes_rfarcsech @1194 - liquid_firdes_rfexp @1195 - liquid_firdes_rfsech @1196 - liquid_firdes_rkaiser @1197 - liquid_firdes_rkaiser_bisection @1198 - liquid_firdes_rkaiser_internal_isi @1199 - liquid_firdes_rkaiser_quadratic @1200 - liquid_firdes_rrcos @1201 - liquid_gammaf @1202 - liquid_getopt_str2crc @1203 - liquid_getopt_str2fec @1204 - liquid_getopt_str2firfilt @1205 - liquid_getopt_str2mod @1206 - liquid_getopt_str2window @1207 - liquid_iirdes @1208 - liquid_invgauss @1209 - liquid_is_prime @1210 - liquid_kbd @1211 - liquid_kbd_window @1212 - liquid_lbcircshift @1213 - liquid_lbshift @1214 - liquid_lcircshift @1215 - liquid_levinson @1216 - liquid_libversion @1217 - liquid_libversion_number @1218 - liquid_lnbesselif @1219 - liquid_lngammaf @1220 - liquid_lnlowergammaf @1221 - liquid_lnuppergammaf @1222 - liquid_logf @1223 - liquid_lowergammaf @1224 - liquid_lpc @1225 - liquid_lshift @1226 - liquid_modem_is_apsk @1227 - liquid_modem_is_ask @1228 - liquid_modem_is_dpsk @1229 - liquid_modem_is_psk @1230 - liquid_modem_is_qam @1231 - liquid_modpow @1232 - liquid_msb_index @1233 - liquid_multimodal @1234 - liquid_nchoosek @1235 - liquid_nextpow2 @1236 - liquid_pack_array @1237 - liquid_pack_bytes @1238 - liquid_pack_soft_bits @1239 - liquid_primitive_root @1240 - liquid_primitive_root_prime @1241 - liquid_print_bitstring @1242 - liquid_print_crc_schemes @1243 - liquid_print_fec_schemes @1244 - liquid_print_modulation_schemes @1245 - liquid_print_windows @1246 - liquid_rbcircshift @1247 - liquid_rbshift @1248 - liquid_rcircshift @1249 - liquid_rcostaper_windowf @1250 - liquid_repack_bytes @1251 - liquid_reverse_byte @1252 - liquid_reverse_byte_gentab @1253 DATA - liquid_reverse_uint16 @1254 - liquid_reverse_uint24 @1255 - liquid_reverse_uint32 @1256 - liquid_rosenbrock @1257 - liquid_rshift @1258 - liquid_sincosf @1259 - liquid_sinf @1260 - liquid_spiral @1261 - liquid_sumsqcf @1262 - liquid_sumsqf @1263 - liquid_tanf @1264 - liquid_totient @1265 - liquid_unique_factor @1266 - liquid_unpack_array @1267 - liquid_unpack_bytes @1268 - liquid_unpack_soft_bits @1269 - liquid_unwrap_phase @1270 - liquid_unwrap_phase2 @1271 - liquid_uppergammaf @1272 - liquid_vectorcf_abs @1273 - liquid_vectorcf_add @1274 - liquid_vectorcf_addscalar @1275 - liquid_vectorcf_carg @1276 - liquid_vectorcf_cexpj @1277 - liquid_vectorcf_mul @1278 - liquid_vectorcf_mulscalar @1279 - liquid_vectorcf_norm @1280 - liquid_vectorcf_normalize @1281 - liquid_vectorf_abs @1282 - liquid_vectorf_add @1283 - liquid_vectorf_addscalar @1284 - liquid_vectorf_carg @1285 - liquid_vectorf_cexpj @1286 - liquid_vectorf_mul @1287 - liquid_vectorf_mulscalar @1288 - liquid_vectorf_norm @1289 - liquid_vectorf_normalize @1290 - liquid_version @1291 DATA - liquid_window_str @1292 DATA - matrix_add @1293 - matrix_aug @1294 - matrix_cgsolve @1295 - matrix_chol @1296 - matrix_det @1297 - matrix_det2x2 @1298 - matrix_div @1299 - matrix_eye @1300 - matrix_gjelim @1301 - matrix_gramschmidt @1302 - matrix_hermitian @1303 - matrix_hermitian_mul @1304 - matrix_inv @1305 - matrix_linsolve @1306 - matrix_ludecomp_crout @1307 - matrix_ludecomp_doolittle @1308 - matrix_mul @1309 - matrix_mul_hermitian @1310 - matrix_mul_transpose @1311 - matrix_ones @1312 - matrix_pdiv @1313 - matrix_pivot @1314 - matrix_pmul @1315 - matrix_print @1316 - matrix_proj @1317 - matrix_qrdecomp_gramschmidt @1318 - matrix_sub @1319 - matrix_swaprows @1320 - matrix_trans @1321 - matrix_transpose_mul @1322 - matrix_zeros @1323 - matrixc_add @1324 - matrixc_aug @1325 - matrixc_cgsolve @1326 - matrixc_chol @1327 - matrixc_det @1328 - matrixc_det2x2 @1329 - matrixc_div @1330 - matrixc_eye @1331 - matrixc_gjelim @1332 - matrixc_gramschmidt @1333 - matrixc_hermitian @1334 - matrixc_hermitian_mul @1335 - matrixc_inv @1336 - matrixc_linsolve @1337 - matrixc_ludecomp_crout @1338 - matrixc_ludecomp_doolittle @1339 - matrixc_mul @1340 - matrixc_mul_hermitian @1341 - matrixc_mul_transpose @1342 - matrixc_ones @1343 - matrixc_pdiv @1344 - matrixc_pivot @1345 - matrixc_pmul @1346 - matrixc_print @1347 - matrixc_proj @1348 - matrixc_qrdecomp_gramschmidt @1349 - matrixc_sub @1350 - matrixc_swaprows @1351 - matrixc_trans @1352 - matrixc_transpose_mul @1353 - matrixc_zeros @1354 - matrixcf_add @1355 - matrixcf_aug @1356 - matrixcf_cgsolve @1357 - matrixcf_chol @1358 - matrixcf_det @1359 - matrixcf_det2x2 @1360 - matrixcf_div @1361 - matrixcf_eye @1362 - matrixcf_gjelim @1363 - matrixcf_gramschmidt @1364 - matrixcf_hermitian @1365 - matrixcf_hermitian_mul @1366 - matrixcf_inv @1367 - matrixcf_linsolve @1368 - matrixcf_ludecomp_crout @1369 - matrixcf_ludecomp_doolittle @1370 - matrixcf_mul @1371 - matrixcf_mul_hermitian @1372 - matrixcf_mul_transpose @1373 - matrixcf_ones @1374 - matrixcf_pdiv @1375 - matrixcf_pivot @1376 - matrixcf_pmul @1377 - matrixcf_print @1378 - matrixcf_proj @1379 - matrixcf_qrdecomp_gramschmidt @1380 - matrixcf_sub @1381 - matrixcf_swaprows @1382 - matrixcf_trans @1383 - matrixcf_transpose_mul @1384 - matrixcf_zeros @1385 - matrixf_add @1386 - matrixf_aug @1387 - matrixf_cgsolve @1388 - matrixf_chol @1389 - matrixf_det @1390 - matrixf_det2x2 @1391 - matrixf_div @1392 - matrixf_eye @1393 - matrixf_gjelim @1394 - matrixf_gramschmidt @1395 - matrixf_hermitian @1396 - matrixf_hermitian_mul @1397 - matrixf_inv @1398 - matrixf_linsolve @1399 - matrixf_ludecomp_crout @1400 - matrixf_ludecomp_doolittle @1401 - matrixf_mul @1402 - matrixf_mul_hermitian @1403 - matrixf_mul_transpose @1404 - matrixf_ones @1405 - matrixf_pdiv @1406 - matrixf_pivot @1407 - matrixf_pmul @1408 - matrixf_print @1409 - matrixf_proj @1410 - matrixf_qrdecomp_gramschmidt @1411 - matrixf_sub @1412 - matrixf_swaprows @1413 - matrixf_trans @1414 - matrixf_transpose_mul @1415 - matrixf_zeros @1416 - modem_arb128opt @1417 DATA - modem_arb16opt @1418 DATA - modem_arb256opt @1419 DATA - modem_arb32opt @1420 DATA - modem_arb64opt @1421 DATA - modem_arb_V29 @1422 DATA - modem_arb_balance_iq @1423 - modem_arb_init @1424 - modem_arb_init_file @1425 - modem_arb_scale @1426 - modem_arb_sqam128 @1427 DATA - modem_arb_sqam32 @1428 DATA - modem_arb_vt64 @1429 DATA - modem_create @1430 - modem_create_V29 @1431 - modem_create_apsk @1432 - modem_create_arb @1433 - modem_create_arb128opt @1434 - modem_create_arb16opt @1435 - modem_create_arb256opt @1436 - modem_create_arb32opt @1437 - modem_create_arb64opt @1438 - modem_create_arb64vt @1439 - modem_create_arbitrary @1440 - modem_create_ask @1441 - modem_create_bpsk @1442 - modem_create_dpsk @1443 - modem_create_ook @1444 - modem_create_psk @1445 - modem_create_qam @1446 - modem_create_qpsk @1447 - modem_create_sqam128 @1448 - modem_create_sqam32 @1449 - modem_demodsoft_gentab @1450 - modem_demodulate @1451 - modem_demodulate_apsk @1452 - modem_demodulate_arb @1453 - modem_demodulate_ask @1454 - modem_demodulate_bpsk @1455 - modem_demodulate_dpsk @1456 - modem_demodulate_linear_array @1457 - modem_demodulate_linear_array_ref @1458 - modem_demodulate_ook @1459 - modem_demodulate_psk @1460 - modem_demodulate_qam @1461 - modem_demodulate_qpsk @1462 - modem_demodulate_soft @1463 - modem_demodulate_soft_arb @1464 - modem_demodulate_soft_bpsk @1465 - modem_demodulate_soft_qpsk @1466 - modem_demodulate_soft_table @1467 - modem_demodulate_sqam128 @1468 - modem_demodulate_sqam32 @1469 - modem_destroy @1470 - modem_gen_rand_sym @1471 - modem_get_bps @1472 - modem_get_demodulator_evm @1473 - modem_get_demodulator_phase_error @1474 - modem_get_demodulator_sample @1475 - modem_get_scheme @1476 - modem_init @1477 - modem_init_map @1478 - modem_modulate @1479 - modem_modulate_apsk @1480 - modem_modulate_arb @1481 - modem_modulate_ask @1482 - modem_modulate_bpsk @1483 - modem_modulate_dpsk @1484 - modem_modulate_map @1485 - modem_modulate_ook @1486 - modem_modulate_psk @1487 - modem_modulate_qam @1488 - modem_modulate_qpsk @1489 - modem_modulate_sqam128 @1490 - modem_modulate_sqam32 @1491 - modem_print @1492 - modem_recreate @1493 - modem_reset @1494 - modulation_types @1495 DATA - msequence_advance @1496 - msequence_create @1497 - msequence_create_default @1498 - msequence_create_genpoly @1499 - msequence_default @1500 DATA - msequence_destroy @1501 - msequence_generate_symbol @1502 - msequence_get_length @1503 - msequence_get_state @1504 - msequence_print @1505 - msequence_reset @1506 - msequence_set_state @1507 - msourcecf_add_modem @1508 - msourcecf_add_noise @1509 - msourcecf_add_source @1510 - msourcecf_add_tone @1511 - msourcecf_create @1512 - msourcecf_destroy @1513 - msourcecf_disable @1514 - msourcecf_enable @1515 - msourcecf_get_source @1516 - msourcecf_print @1517 - msourcecf_remove @1518 - msourcecf_reset @1519 - msourcecf_set_frequency @1520 - msourcecf_set_gain @1521 - msourcecf_write_samples @1522 - msresamp2_cccf_create @1523 - msresamp2_cccf_decim_execute @1524 - msresamp2_cccf_destroy @1525 - msresamp2_cccf_execute @1526 - msresamp2_cccf_get_delay @1527 - msresamp2_cccf_interp_execute @1528 - msresamp2_cccf_print @1529 - msresamp2_cccf_reset @1530 - msresamp2_crcf_create @1531 - msresamp2_crcf_decim_execute @1532 - msresamp2_crcf_destroy @1533 - msresamp2_crcf_execute @1534 - msresamp2_crcf_get_delay @1535 - msresamp2_crcf_interp_execute @1536 - msresamp2_crcf_print @1537 - msresamp2_crcf_reset @1538 - msresamp2_rrrf_create @1539 - msresamp2_rrrf_decim_execute @1540 - msresamp2_rrrf_destroy @1541 - msresamp2_rrrf_execute @1542 - msresamp2_rrrf_get_delay @1543 - msresamp2_rrrf_interp_execute @1544 - msresamp2_rrrf_print @1545 - msresamp2_rrrf_reset @1546 - msresamp_cccf_create @1547 - msresamp_cccf_decim_execute @1548 - msresamp_cccf_destroy @1549 - msresamp_cccf_execute @1550 - msresamp_cccf_get_delay @1551 - msresamp_cccf_interp_execute @1552 - msresamp_cccf_print @1553 - msresamp_cccf_reset @1554 - msresamp_crcf_create @1555 - msresamp_crcf_decim_execute @1556 - msresamp_crcf_destroy @1557 - msresamp_crcf_execute @1558 - msresamp_crcf_get_delay @1559 - msresamp_crcf_interp_execute @1560 - msresamp_crcf_print @1561 - msresamp_crcf_reset @1562 - msresamp_rrrf_create @1563 - msresamp_rrrf_decim_execute @1564 - msresamp_rrrf_destroy @1565 - msresamp_rrrf_execute @1566 - msresamp_rrrf_get_delay @1567 - msresamp_rrrf_interp_execute @1568 - msresamp_rrrf_print @1569 - msresamp_rrrf_reset @1570 - nco_crcf_adjust_frequency @1571 - nco_crcf_adjust_phase @1572 - nco_crcf_cexpf @1573 - nco_crcf_compute_sincos_nco @1574 - nco_crcf_compute_sincos_vco @1575 - nco_crcf_constrain_frequency @1576 - nco_crcf_constrain_phase @1577 - nco_crcf_cos @1578 - nco_crcf_create @1579 - nco_crcf_destroy @1580 - nco_crcf_get_frequency @1581 - nco_crcf_get_phase @1582 - nco_crcf_mix_block_down @1583 - nco_crcf_mix_block_up @1584 - nco_crcf_mix_down @1585 - nco_crcf_mix_up @1586 - nco_crcf_pll_reset @1587 - nco_crcf_pll_set_bandwidth @1588 - nco_crcf_pll_step @1589 - nco_crcf_reset @1590 - nco_crcf_set_frequency @1591 - nco_crcf_set_phase @1592 - nco_crcf_sin @1593 - nco_crcf_sincos @1594 - nco_crcf_step @1595 - ofdmflexframegen_assemble @1596 - ofdmflexframegen_create @1597 - ofdmflexframegen_destroy @1598 - ofdmflexframegen_encode_header @1599 - ofdmflexframegen_gen_S0a @1600 - ofdmflexframegen_gen_S0b @1601 - ofdmflexframegen_gen_S1 @1602 - ofdmflexframegen_gen_header @1603 - ofdmflexframegen_gen_payload @1604 - ofdmflexframegen_gen_symbol @1605 - ofdmflexframegen_gen_tail @1606 - ofdmflexframegen_gen_zeros @1607 - ofdmflexframegen_getframelen @1608 - ofdmflexframegen_getprops @1609 - ofdmflexframegen_is_assembled @1610 - ofdmflexframegen_modulate_header @1611 - ofdmflexframegen_print @1612 - ofdmflexframegen_reconfigure @1613 - ofdmflexframegen_reset @1614 - ofdmflexframegen_setprops @1615 - ofdmflexframegen_write @1616 - ofdmflexframegenprops_init_default @1617 - ofdmflexframesync_create @1618 - ofdmflexframesync_debug_disable @1619 - ofdmflexframesync_debug_enable @1620 - ofdmflexframesync_debug_print @1621 - ofdmflexframesync_decode_header @1622 - ofdmflexframesync_destroy @1623 - ofdmflexframesync_execute @1624 - ofdmflexframesync_get_cfo @1625 - ofdmflexframesync_get_rssi @1626 - ofdmflexframesync_internal_callback @1627 - ofdmflexframesync_is_frame_open @1628 - ofdmflexframesync_print @1629 - ofdmflexframesync_reset @1630 - ofdmflexframesync_rxheader @1631 - ofdmflexframesync_rxpayload @1632 - ofdmframe_init_S0 @1633 - ofdmframe_init_S1 @1634 - ofdmframe_init_default_sctype @1635 - ofdmframe_init_sctype_range @1636 - ofdmframe_print_sctype @1637 - ofdmframe_validate_sctype @1638 - ofdmframegen_create @1639 - ofdmframegen_destroy @1640 - ofdmframegen_gensymbol @1641 - ofdmframegen_print @1642 - ofdmframegen_reset @1643 - ofdmframegen_write_S0a @1644 - ofdmframegen_write_S0b @1645 - ofdmframegen_write_S1 @1646 - ofdmframegen_writesymbol @1647 - ofdmframegen_writetail @1648 - ofdmframesync_S0_metrics @1649 - ofdmframesync_create @1650 - ofdmframesync_debug_disable @1651 - ofdmframesync_debug_enable @1652 - ofdmframesync_debug_print @1653 - ofdmframesync_destroy @1654 - ofdmframesync_estimate_eqgain @1655 - ofdmframesync_estimate_eqgain_poly @1656 - ofdmframesync_estimate_gain_S0 @1657 - ofdmframesync_estimate_gain_S1 @1658 - ofdmframesync_execute @1659 - ofdmframesync_execute_S0a @1660 - ofdmframesync_execute_S0b @1661 - ofdmframesync_execute_S1 @1662 - ofdmframesync_execute_rxsymbols @1663 - ofdmframesync_execute_seekplcp @1664 - ofdmframesync_get_cfo @1665 - ofdmframesync_get_rssi @1666 - ofdmframesync_is_frame_open @1667 - ofdmframesync_print @1668 - ofdmframesync_reset @1669 - ofdmframesync_rxsymbol @1670 - optim_sort @1671 - optim_threshold_switch @1672 - packetizer_compute_dec_msg_len @1673 - packetizer_compute_enc_msg_len @1674 - packetizer_create @1675 - packetizer_decode @1676 - packetizer_decode_soft @1677 - packetizer_destroy @1678 - packetizer_encode @1679 - packetizer_get_crc @1680 - packetizer_get_dec_msg_len @1681 - packetizer_get_enc_msg_len @1682 - packetizer_get_fec0 @1683 - packetizer_get_fec1 @1684 - packetizer_print @1685 - packetizer_realloc_buffers @1686 - packetizer_recreate @1687 - packetizer_set_scheme @1688 - poly_expandbinomial @1689 - poly_expandbinomial_pm @1690 - poly_expandroots @1691 - poly_expandroots2 @1692 - poly_findroots @1693 - poly_findroots_bairstow @1694 - poly_findroots_bairstow_recursion @1695 - poly_findroots_durandkerner @1696 - poly_fit @1697 - poly_fit_lagrange @1698 - poly_fit_lagrange_barycentric @1699 - poly_interp_lagrange @1700 - poly_mul @1701 - poly_val @1702 - poly_val_lagrange_barycentric @1703 - polyc_expandbinomial @1704 - polyc_expandbinomial_pm @1705 - polyc_expandroots @1706 - polyc_expandroots2 @1707 - polyc_findroots @1708 - polyc_findroots_bairstow @1709 - polyc_findroots_bairstow_recursion @1710 - polyc_findroots_durandkerner @1711 - polyc_fit @1712 - polyc_fit_lagrange @1713 - polyc_fit_lagrange_barycentric @1714 - polyc_interp_lagrange @1715 - polyc_mul @1716 - polyc_val @1717 - polyc_val_lagrange_barycentric @1718 - polycf_expandbinomial @1719 - polycf_expandbinomial_pm @1720 - polycf_expandroots @1721 - polycf_expandroots2 @1722 - polycf_findroots @1723 - polycf_findroots_bairstow @1724 - polycf_findroots_bairstow_recursion @1725 - polycf_findroots_durandkerner @1726 - polycf_fit @1727 - polycf_fit_lagrange @1728 - polycf_fit_lagrange_barycentric @1729 - polycf_interp_lagrange @1730 - polycf_mul @1731 - polycf_val @1732 - polycf_val_lagrange_barycentric @1733 - polyf_expandbinomial @1734 - polyf_expandbinomial_pm @1735 - polyf_expandroots @1736 - polyf_expandroots2 @1737 - polyf_findroots @1738 - polyf_findroots_bairstow @1739 - polyf_findroots_bairstow_recursion @1740 - polyf_findroots_durandkerner @1741 - polyf_fit @1742 - polyf_fit_lagrange @1743 - polyf_fit_lagrange_barycentric @1744 - polyf_interp_lagrange @1745 - polyf_mul @1746 - polyf_val @1747 - polyf_val_lagrange_barycentric @1748 - presync_cccf_correlate @1749 - presync_cccf_correlatex @1750 - presync_cccf_create @1751 - presync_cccf_destroy @1752 - presync_cccf_print @1753 - presync_cccf_push @1754 - presync_cccf_reset @1755 - qdetector_cccf_create @1756 - qdetector_cccf_create_gmsk @1757 - qdetector_cccf_create_linear @1758 - qdetector_cccf_destroy @1759 - qdetector_cccf_execute @1760 - qdetector_cccf_execute_align @1761 - qdetector_cccf_execute_seek @1762 - qdetector_cccf_get_buf_len @1763 - qdetector_cccf_get_dphi @1764 - qdetector_cccf_get_gamma @1765 - qdetector_cccf_get_phi @1766 - qdetector_cccf_get_seq_len @1767 - qdetector_cccf_get_sequence @1768 - qdetector_cccf_get_tau @1769 - qdetector_cccf_print @1770 - qdetector_cccf_reset @1771 - qdetector_cccf_set_range @1772 - qdetector_cccf_set_threshold @1773 - qnsearch_compute_Hessian @1774 - qnsearch_compute_gradient @1775 - qnsearch_create @1776 - qnsearch_destroy @1777 - qnsearch_normalize_gradient @1778 - qnsearch_print @1779 - qnsearch_reset @1780 - qnsearch_run @1781 - qnsearch_step @1782 - qpacketmodem_configure @1783 - qpacketmodem_create @1784 - qpacketmodem_decode @1785 - qpacketmodem_decode_bits @1786 - qpacketmodem_decode_soft @1787 - qpacketmodem_decode_syms @1788 - qpacketmodem_destroy @1789 - qpacketmodem_encode @1790 - qpacketmodem_encode_syms @1791 - qpacketmodem_get_crc @1792 - qpacketmodem_get_fec0 @1793 - qpacketmodem_get_fec1 @1794 - qpacketmodem_get_frame_len @1795 - qpacketmodem_get_modscheme @1796 - qpacketmodem_get_payload_len @1797 - qpacketmodem_print @1798 - qpacketmodem_reset @1799 - qpilotgen_create @1800 - qpilotgen_destroy @1801 - qpilotgen_execute @1802 - qpilotgen_get_frame_len @1803 - qpilotgen_print @1804 - qpilotgen_recreate @1805 - qpilotgen_reset @1806 - qpilotsync_create @1807 - qpilotsync_destroy @1808 - qpilotsync_execute @1809 - qpilotsync_get_dphi @1810 - qpilotsync_get_frame_len @1811 - qpilotsync_get_gain @1812 - qpilotsync_get_phi @1813 - qpilotsync_print @1814 - qpilotsync_recreate @1815 - qpilotsync_reset @1816 - qsourcecf_create_modem @1817 - qsourcecf_create_noise @1818 - qsourcecf_create_tone @1819 - qsourcecf_destroy @1820 - qsourcecf_disable @1821 - qsourcecf_enable @1822 - qsourcecf_gen_sample @1823 - qsourcecf_print @1824 - qsourcecf_reset @1825 - qsourcecf_set_frequency @1826 - qsourcecf_set_gain @1827 - quantize_adc @1828 - quantize_dac @1829 - quantizercf_create @1830 - quantizercf_destroy @1831 - quantizercf_execute_adc @1832 - quantizercf_execute_dac @1833 - quantizercf_print @1834 - quantizerf_create @1835 - quantizerf_destroy @1836 - quantizerf_execute_adc @1837 - quantizerf_execute_dac @1838 - quantizerf_print @1839 - randexpf @1840 - randexpf_cdf @1841 - randexpf_pdf @1842 - randf @1843 - randf_cdf @1844 - randf_pdf @1845 - randgammaf @1846 - randgammaf_cdf @1847 - randgammaf_delta @1848 - randgammaf_pdf @1849 - randnakmf @1850 - randnakmf_cdf @1851 - randnakmf_pdf @1852 - randnf @1853 - randnf_cdf @1854 - randnf_pdf @1855 - randricekf @1856 - randricekf_cdf @1857 - randricekf_pdf @1858 - randweibf @1859 - randweibf_cdf @1860 - randweibf_pdf @1861 - resamp2_cccf_analyzer_execute @1862 - resamp2_cccf_create @1863 - resamp2_cccf_decim_execute @1864 - resamp2_cccf_destroy @1865 - resamp2_cccf_filter_execute @1866 - resamp2_cccf_get_delay @1867 - resamp2_cccf_interp_execute @1868 - resamp2_cccf_print @1869 - resamp2_cccf_recreate @1870 - resamp2_cccf_reset @1871 - resamp2_cccf_synthesizer_execute @1872 - resamp2_crcf_analyzer_execute @1873 - resamp2_crcf_create @1874 - resamp2_crcf_decim_execute @1875 - resamp2_crcf_destroy @1876 - resamp2_crcf_filter_execute @1877 - resamp2_crcf_get_delay @1878 - resamp2_crcf_interp_execute @1879 - resamp2_crcf_print @1880 - resamp2_crcf_recreate @1881 - resamp2_crcf_reset @1882 - resamp2_crcf_synthesizer_execute @1883 - resamp2_rrrf_analyzer_execute @1884 - resamp2_rrrf_create @1885 - resamp2_rrrf_decim_execute @1886 - resamp2_rrrf_destroy @1887 - resamp2_rrrf_filter_execute @1888 - resamp2_rrrf_get_delay @1889 - resamp2_rrrf_interp_execute @1890 - resamp2_rrrf_print @1891 - resamp2_rrrf_recreate @1892 - resamp2_rrrf_reset @1893 - resamp2_rrrf_synthesizer_execute @1894 - resamp_cccf_adjust_rate @1895 - resamp_cccf_adjust_timing_phase @1896 - resamp_cccf_create @1897 - resamp_cccf_create_default @1898 - resamp_cccf_destroy @1899 - resamp_cccf_execute @1900 - resamp_cccf_execute_block @1901 - resamp_cccf_get_delay @1902 - resamp_cccf_print @1903 - resamp_cccf_reset @1904 - resamp_cccf_set_rate @1905 - resamp_cccf_set_timing_phase @1906 - resamp_cccf_update_timing_state @1907 - resamp_crcf_adjust_rate @1908 - resamp_crcf_adjust_timing_phase @1909 - resamp_crcf_create @1910 - resamp_crcf_create_default @1911 - resamp_crcf_destroy @1912 - resamp_crcf_execute @1913 - resamp_crcf_execute_block @1914 - resamp_crcf_get_delay @1915 - resamp_crcf_print @1916 - resamp_crcf_reset @1917 - resamp_crcf_set_rate @1918 - resamp_crcf_set_timing_phase @1919 - resamp_crcf_update_timing_state @1920 - resamp_rrrf_adjust_rate @1921 - resamp_rrrf_adjust_timing_phase @1922 - resamp_rrrf_create @1923 - resamp_rrrf_create_default @1924 - resamp_rrrf_destroy @1925 - resamp_rrrf_execute @1926 - resamp_rrrf_execute_block @1927 - resamp_rrrf_get_delay @1928 - resamp_rrrf_print @1929 - resamp_rrrf_reset @1930 - resamp_rrrf_set_rate @1931 - resamp_rrrf_set_timing_phase @1932 - resamp_rrrf_update_timing_state @1933 - rkaiser_approximate_rho @1934 - scramble_data @1935 - secded2216_P @1936 DATA - secded2216_syndrome_w1 @1937 DATA - secded3932_P @1938 DATA - secded3932_syndrome_w1 @1939 DATA - secded7264_P @1940 DATA - secded7264_syndrome_w1 @1941 DATA - sincf @1942 - smatrix_indexsearch @1943 - smatrixb_clear @1944 - smatrixb_create @1945 - smatrixb_create_array @1946 - smatrixb_delete @1947 - smatrixb_destroy @1948 - smatrixb_eye @1949 - smatrixb_get @1950 - smatrixb_insert @1951 - smatrixb_isset @1952 - smatrixb_mul @1953 - smatrixb_mulf @1954 - smatrixb_print @1955 - smatrixb_print_expanded @1956 - smatrixb_reset @1957 - smatrixb_reset_max_mlist @1958 - smatrixb_reset_max_nlist @1959 - smatrixb_set @1960 - smatrixb_size @1961 - smatrixb_vmul @1962 - smatrixb_vmulf @1963 - smatrixf_clear @1964 - smatrixf_create @1965 - smatrixf_create_array @1966 - smatrixf_delete @1967 - smatrixf_destroy @1968 - smatrixf_eye @1969 - smatrixf_get @1970 - smatrixf_insert @1971 - smatrixf_isset @1972 - smatrixf_mul @1973 - smatrixf_print @1974 - smatrixf_print_expanded @1975 - smatrixf_reset @1976 - smatrixf_reset_max_mlist @1977 - smatrixf_reset_max_nlist @1978 - smatrixf_set @1979 - smatrixf_size @1980 - smatrixf_vmul @1981 - smatrixi_clear @1982 - smatrixi_create @1983 - smatrixi_create_array @1984 - smatrixi_delete @1985 - smatrixi_destroy @1986 - smatrixi_eye @1987 - smatrixi_get @1988 - smatrixi_insert @1989 - smatrixi_isset @1990 - smatrixi_mul @1991 - smatrixi_print @1992 - smatrixi_print_expanded @1993 - smatrixi_reset @1994 - smatrixi_reset_max_mlist @1995 - smatrixi_reset_max_nlist @1996 - smatrixi_set @1997 - smatrixi_size @1998 - smatrixi_vmul @1999 - spgramcf_clear @2000 - spgramcf_create @2001 - spgramcf_create_default @2002 - spgramcf_destroy @2003 - spgramcf_estimate_psd @2004 - spgramcf_export_gnuplot @2005 - spgramcf_get_delay @2006 - spgramcf_get_nfft @2007 - spgramcf_get_num_samples @2008 - spgramcf_get_num_samples_total @2009 - spgramcf_get_num_transforms @2010 - spgramcf_get_num_transforms_total @2011 - spgramcf_get_psd @2012 - spgramcf_get_window_len @2013 - spgramcf_print @2014 - spgramcf_push @2015 - spgramcf_reset @2016 - spgramcf_set_alpha @2017 - spgramcf_step @2018 - spgramcf_write @2019 - spgramf_clear @2020 - spgramf_create @2021 - spgramf_create_default @2022 - spgramf_destroy @2023 - spgramf_estimate_psd @2024 - spgramf_export_gnuplot @2025 - spgramf_get_delay @2026 - spgramf_get_nfft @2027 - spgramf_get_num_samples @2028 - spgramf_get_num_samples_total @2029 - spgramf_get_num_transforms @2030 - spgramf_get_num_transforms_total @2031 - spgramf_get_psd @2032 - spgramf_get_window_len @2033 - spgramf_print @2034 - spgramf_push @2035 - spgramf_reset @2036 - spgramf_set_alpha @2037 - spgramf_step @2038 - spgramf_write @2039 - spwaterfallcf_clear @2040 - spwaterfallcf_consolidate_buffer @2041 - spwaterfallcf_create @2042 - spwaterfallcf_create_default @2043 - spwaterfallcf_destroy @2044 - spwaterfallcf_export @2045 - spwaterfallcf_export_bin @2046 - spwaterfallcf_export_gnu @2047 - spwaterfallcf_print @2048 - spwaterfallcf_push @2049 - spwaterfallcf_reset @2050 - spwaterfallcf_step @2051 - spwaterfallcf_write @2052 - spwaterfallf_clear @2053 - spwaterfallf_consolidate_buffer @2054 - spwaterfallf_create @2055 - spwaterfallf_create_default @2056 - spwaterfallf_destroy @2057 - spwaterfallf_export @2058 - spwaterfallf_export_bin @2059 - spwaterfallf_export_gnu @2060 - spwaterfallf_print @2061 - spwaterfallf_push @2062 - spwaterfallf_reset @2063 - spwaterfallf_step @2064 - spwaterfallf_write @2065 - sumproduct_phi @2066 - symstreamcf_create @2067 - symstreamcf_create_linear @2068 - symstreamcf_destroy @2069 - symstreamcf_fill_buffer @2070 - symstreamcf_print @2071 - symstreamcf_reset @2072 - symstreamcf_write_samples @2073 - symsync_crcf_advance_internal_loop @2074 - symsync_crcf_create @2075 - symsync_crcf_create_kaiser @2076 - symsync_crcf_create_rnyquist @2077 - symsync_crcf_destroy @2078 - symsync_crcf_execute @2079 - symsync_crcf_get_tau @2080 - symsync_crcf_lock @2081 - symsync_crcf_output_debug_file @2082 - symsync_crcf_print @2083 - symsync_crcf_reset @2084 - symsync_crcf_set_lf_bw @2085 - symsync_crcf_set_output_rate @2086 - symsync_crcf_step @2087 - symsync_crcf_unlock @2088 - symsync_rrrf_advance_internal_loop @2089 - symsync_rrrf_create @2090 - symsync_rrrf_create_kaiser @2091 - symsync_rrrf_create_rnyquist @2092 - symsync_rrrf_destroy @2093 - symsync_rrrf_execute @2094 - symsync_rrrf_get_tau @2095 - symsync_rrrf_lock @2096 - symsync_rrrf_output_debug_file @2097 - symsync_rrrf_print @2098 - symsync_rrrf_reset @2099 - symsync_rrrf_set_lf_bw @2100 - symsync_rrrf_set_output_rate @2101 - symsync_rrrf_step @2102 - symsync_rrrf_unlock @2103 - symtrack_cccf_adjust_phase @2104 - symtrack_cccf_create @2105 - symtrack_cccf_create_default @2106 - symtrack_cccf_destroy @2107 - symtrack_cccf_execute @2108 - symtrack_cccf_execute_block @2109 - symtrack_cccf_print @2110 - symtrack_cccf_reset @2111 - symtrack_cccf_set_bandwidth @2112 - symtrack_cccf_set_modscheme @2113 - triangular @2114 - tvmpch_cccf_create @2115 - tvmpch_cccf_destroy @2116 - tvmpch_cccf_execute @2117 - tvmpch_cccf_execute_block @2118 - tvmpch_cccf_print @2119 - tvmpch_cccf_push @2120 - tvmpch_cccf_reset @2121 - unscramble_data @2122 - unscramble_data_soft @2123 - wdelaycf_create @2124 - wdelaycf_destroy @2125 - wdelaycf_print @2126 - wdelaycf_push @2127 - wdelaycf_read @2128 - wdelaycf_recreate @2129 - wdelaycf_reset @2130 - wdelayf_create @2131 - wdelayf_destroy @2132 - wdelayf_print @2133 - wdelayf_push @2134 - wdelayf_read @2135 - wdelayf_recreate @2136 - wdelayf_reset @2137 - windowcf_create @2138 - windowcf_debug_print @2139 - windowcf_destroy @2140 - windowcf_index @2141 - windowcf_print @2142 - windowcf_push @2143 - windowcf_read @2144 - windowcf_recreate @2145 - windowcf_reset @2146 - windowcf_write @2147 - windowf_create @2148 - windowf_debug_print @2149 - windowf_destroy @2150 - windowf_index @2151 - windowf_print @2152 - windowf_push @2153 - windowf_read @2154 - windowf_recreate @2155 - windowf_reset @2156 - windowf_write @2157 diff --git a/external/liquid-dsp/gcc/64/libliquid.dll b/external/liquid-dsp/gcc/64/libliquid.dll index ac24a45..ab8945e 100644 Binary files a/external/liquid-dsp/gcc/64/libliquid.dll and b/external/liquid-dsp/gcc/64/libliquid.dll differ diff --git a/external/liquid-dsp/gcc/64/libliquid.lib b/external/liquid-dsp/gcc/64/libliquid.lib new file mode 100644 index 0000000..79b6a2d Binary files /dev/null and b/external/liquid-dsp/gcc/64/libliquid.lib differ diff --git a/external/liquid-dsp/include/liquid/liquid.h b/external/liquid-dsp/include/liquid/liquid.h index c776eee..7a23574 100644 --- a/external/liquid-dsp/include/liquid/liquid.h +++ b/external/liquid-dsp/include/liquid/liquid.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007 - 2017 Joseph Gaeddert + * Copyright (c) 2007 - 2019 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 @@ -54,8 +54,8 @@ extern "C" { // LIQUID_VERSION = "X.Y.Z" // LIQUID_VERSION_NUMBER = (X*1000000 + Y*1000 + Z) // -#define LIQUID_VERSION "1.3.0" -#define LIQUID_VERSION_NUMBER 1003000 +#define LIQUID_VERSION "1.3.1" +#define LIQUID_VERSION_NUMBER 1003001 // // Run-time library version numbers @@ -65,12 +65,12 @@ const char * liquid_libversion(void); int liquid_libversion_number(void); // run-time library validation -#define LIQUID_VALIDATE_LIBVERSION \ - if (LIQUID_VERSION_NUMBER != liquid_libversion_number()) { \ - fprintf(stderr,"%s:%u: ", __FILE__,__LINE__); \ - fprintf(stderr,"error: invalid liquid runtime library\n"); \ - exit(1); \ - } \ +#define LIQUID_VALIDATE_LIBVERSION \ + if (LIQUID_VERSION_NUMBER != liquid_libversion_number()) { \ + fprintf(stderr,"%s:%u: ", __FILE__,__LINE__); \ + fprintf(stderr,"error: invalid liquid runtime library\n"); \ + exit(1); \ + } \ #define LIQUID_CONCAT(prefix, name) prefix ## name #define LIQUID_VALIDATE_INPUT @@ -118,96 +118,142 @@ typedef enum { // AGC : name-mangling macro // T : primitive data type // TC : input/output data type -#define LIQUID_AGC_DEFINE_API(AGC,T,TC) \ -typedef struct AGC(_s) * AGC(); \ - \ -/* create automatic gain control object */ \ -AGC() AGC(_create)(void); \ - \ -/* destroy object, freeing all internally-allocated memory */ \ -void AGC(_destroy)(AGC() _q); \ - \ -/* print object properties to stdout */ \ -void AGC(_print)(AGC() _q); \ - \ -/* reset object's internal state */ \ -void AGC(_reset)(AGC() _q); \ - \ -/* execute automatic gain control on an single input sample */ \ -/* _q : automatic gain control object */ \ -/* _x : input sample */ \ -/* _y : output sample */ \ -void AGC(_execute)(AGC() _q, \ - TC _x, \ - TC * _y); \ - \ -/* execute automatic gain control on block of samples */ \ -/* _q : automatic gain control object */ \ -/* _x : input data array, [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -/* _y : output data array, [size: _n x 1] */ \ -void AGC(_execute_block)(AGC() _q, \ - TC * _x, \ - unsigned int _n, \ - TC * _y); \ - \ -/* lock/unlock gain control */ \ -void AGC(_lock)( AGC() _q); \ -void AGC(_unlock)(AGC() _q); \ - \ -/* get/set loop filter bandwidth; attack/release time */ \ -float AGC(_get_bandwidth)(AGC() _q); \ -void AGC(_set_bandwidth)(AGC() _q, float _bt); \ - \ -/* get/set signal level (linear) relative to unity energy */ \ -float AGC(_get_signal_level)(AGC() _q); \ -void AGC(_set_signal_level)(AGC() _q, float _signal_level); \ - \ -/* get/set signal level (dB) relative to unity energy */ \ -float AGC(_get_rssi)(AGC() _q); \ -void AGC(_set_rssi)(AGC() _q, float _rssi); \ - \ -/* get/set gain value (linear) relative to unity energy */ \ -float AGC(_get_gain)(AGC() _q); \ -void AGC(_set_gain)(AGC() _q, float _gain); \ - \ -/* initialize internal gain on input array */ \ -/* _q : automatic gain control object */ \ -/* _x : input data array, [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -void AGC(_init)(AGC() _q, \ - TC * _x, \ - unsigned int _n); \ - \ -/* enable squelch mode */ \ -void AGC(_squelch_enable)(AGC() _q); \ - \ -/* disable squelch mode */ \ -void AGC(_squelch_disable)(AGC() _q); \ - \ -/* is squelch enabled? */ \ -int AGC(_squelch_is_enabled)(AGC() _q); \ - \ -/* set squelch threshold */ \ -/* _q : automatic gain control object */ \ -/* _thresh_dB : threshold for enabling squelch [dB] */ \ -void AGC(_squelch_set_threshold)(AGC() _q, \ - T _threshold); \ - \ -/* get squelch threshold [dB] */ \ -T AGC(_squelch_get_threshold)(AGC() _q); \ - \ -/* set squelch timeout */ \ -/* _q : automatic gain control object */ \ -/* _timeout : timeout before enabling squelch [samples] */ \ -void AGC(_squelch_set_timeout)(AGC() _q, \ - unsigned int _timeout); \ - \ -/* get squelch timeout [samples] */ \ -unsigned int AGC(_squelch_get_timeout)(AGC() _q); \ - \ -/* get squelch status */ \ -int AGC(_squelch_get_status)(AGC() _q); \ +#define LIQUID_AGC_DEFINE_API(AGC,T,TC) \ + \ +/* Automatic gain control (agc) for level correction and signal */ \ +/* detection */ \ +typedef struct AGC(_s) * AGC(); \ + \ +/* Create automatic gain control object. */ \ +AGC() AGC(_create)(void); \ + \ +/* Destroy object, freeing all internally-allocated memory. */ \ +void AGC(_destroy)(AGC() _q); \ + \ +/* Print object properties to stdout, including received signal */ \ +/* strength indication (RSSI), loop bandwidth, lock status, and squelch */ \ +/* status. */ \ +void AGC(_print)(AGC() _q); \ + \ +/* Reset internal state of agc object, including gain estimate, input */ \ +/* signal level estimate, lock status, and squelch mode */ \ +/* If the squelch mode is disabled, it stays disabled, but all enabled */ \ +/* modes (e.g. LIQUID_AGC_SQUELCH_TIMEOUT) resets to just */ \ +/* LIQUID_AGC_SQUELCH_ENABLED. */ \ +void AGC(_reset)(AGC() _q); \ + \ +/* Execute automatic gain control on an single input sample */ \ +/* _q : automatic gain control object */ \ +/* _x : input sample */ \ +/* _y : output sample */ \ +void AGC(_execute)(AGC() _q, \ + TC _x, \ + TC * _y); \ + \ +/* Execute automatic gain control on block of samples pointed to by _x */ \ +/* and store the result in the array of the same length _y. */ \ +/* _q : automatic gain control object */ \ +/* _x : input data array, [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +/* _y : output data array, [size: _n x 1] */ \ +void AGC(_execute_block)(AGC() _q, \ + TC * _x, \ + unsigned int _n, \ + TC * _y); \ + \ +/* Lock agc object. When locked, the agc object still makes an estimate */ \ +/* of the signal level, but the gain setting is fixed and does not */ \ +/* change. */ \ +/* This is useful for providing coarse input signal level correction */ \ +/* and quickly detecting a packet burst but not distorting signals with */ \ +/* amplitude variation due to modulation. */ \ +void AGC(_lock)(AGC() _q); \ + \ +/* Unlock agc object, and allow amplitude correction to resume. */ \ +void AGC(_unlock)(AGC() _q); \ + \ +/* Set loop filter bandwidth: attack/release time. */ \ +/* _q : automatic gain control object */ \ +/* _bt : bandwidth-time constant, _bt > 0 */ \ +void AGC(_set_bandwidth)(AGC() _q, float _bt); \ + \ +/* Get the agc object's loop filter bandwidth. */ \ +float AGC(_get_bandwidth)(AGC() _q); \ + \ +/* Get the input signal's estimated energy level, relative to unity. */ \ +/* The result is a linear value. */ \ +float AGC(_get_signal_level)(AGC() _q); \ + \ +/* Set the agc object's estimate of the input signal by specifying an */ \ +/* explicit linear value. This is useful for initializing the agc */ \ +/* object with a preliminary estimate of the signal level to help gain */ \ +/* convergence. */ \ +/* _q : automatic gain control object */ \ +/* _x2 : signal level of input, _x2 > 0 */ \ +void AGC(_set_signal_level)(AGC() _q, \ + float _x2); \ + \ +/* Get the agc object's estimated received signal strength indication */ \ +/* (RSSI) on the input signal. */ \ +/* This is similar to getting the signal level (above), but returns the */ \ +/* result in dB rather than on a linear scale. */ \ +float AGC(_get_rssi)(AGC() _q); \ + \ +/* Set the agc object's estimated received signal strength indication */ \ +/* (RSSI) on the input signal by specifying an explicit value in dB. */ \ +/* _q : automatic gain control object */ \ +/* _rssi : signal level of input [dB] */ \ +void AGC(_set_rssi)(AGC() _q, float _rssi); \ + \ +/* Get the gain value currently being applied to the input signal */ \ +/* (linear). */ \ +float AGC(_get_gain)(AGC() _q); \ + \ +/* Set the agc object's internal gain by specifying an explicit linear */ \ +/* value. */ \ +/* _q : automatic gain control object */ \ +/* _gain : gain to apply to input signal, _gain > 0 */ \ +void AGC(_set_gain)(AGC() _q, \ + float _gain); \ + \ +/* Estimate signal level and initialize internal gain on an input */ \ +/* array. */ \ +/* _q : automatic gain control object */ \ +/* _x : input data array, [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +void AGC(_init)(AGC() _q, \ + TC * _x, \ + unsigned int _n); \ + \ +/* Enable squelch mode. */ \ +void AGC(_squelch_enable)(AGC() _q); \ + \ +/* Disable squelch mode. */ \ +void AGC(_squelch_disable)(AGC() _q); \ + \ +/* Return flag indicating if squelch is enabled or not. */ \ +int AGC(_squelch_is_enabled)(AGC() _q); \ + \ +/* Set threshold for enabling/disabling squelch. */ \ +/* _q : automatic gain control object */ \ +/* _thresh : threshold for enabling squelch [dB] */ \ +void AGC(_squelch_set_threshold)(AGC() _q, \ + T _thresh); \ + \ +/* Get squelch threshold (value in dB) */ \ +T AGC(_squelch_get_threshold)(AGC() _q); \ + \ +/* Set timeout before enabling squelch. */ \ +/* _q : automatic gain control object */ \ +/* _timeout : timeout before enabling squelch [samples] */ \ +void AGC(_squelch_set_timeout)(AGC() _q, \ + unsigned int _timeout); \ + \ +/* Get squelch timeout (number of samples) */ \ +unsigned int AGC(_squelch_get_timeout)(AGC() _q); \ + \ +/* Get squelch status (e.g. LIQUID_AGC_SQUELCH_TIMEOUT) */ \ +int AGC(_squelch_get_status)(AGC() _q); \ // Define agc APIs LIQUID_AGC_DEFINE_API(LIQUID_AGC_MANGLE_CRCF, float, liquid_float_complex) @@ -257,83 +303,89 @@ void cvsd_decode8(cvsd _q, unsigned char _data, float * _audio); // large macro // CBUFFER : name-mangling macro // T : data type -#define LIQUID_CBUFFER_DEFINE_API(CBUFFER,T) \ -typedef struct CBUFFER(_s) * CBUFFER(); \ - \ -/* create circular buffer object of a particular size */ \ -/* _max_size : maximum buffer size, _max_size > 0 */ \ -CBUFFER() CBUFFER(_create)(unsigned int _max_size); \ - \ -/* create circular buffer object of a particular size and */ \ -/* specify the maximum number of elements that can be read */ \ -/* at any given time. */ \ -/* _max_size : maximum buffer size, _max_size > 0 */ \ -/* _max_read : maximum size that will be read from buffer */ \ -CBUFFER() CBUFFER(_create_max)(unsigned int _max_size, \ - unsigned int _max_read); \ - \ -/* destroy cbuffer object, freeing all internal memory */ \ -void CBUFFER(_destroy)(CBUFFER() _q); \ - \ -/* print cbuffer object properties */ \ -void CBUFFER(_print)(CBUFFER() _q); \ - \ -/* print cbuffer object properties and internal state */ \ -void CBUFFER(_debug_print)(CBUFFER() _q); \ - \ -/* clear internal buffer */ \ -void CBUFFER(_reset)(CBUFFER() _q); \ - \ -/* get the number of elements currently in the buffer */ \ -unsigned int CBUFFER(_size)(CBUFFER() _q); \ - \ -/* get the maximum number of elements the buffer can hold */ \ -unsigned int CBUFFER(_max_size)(CBUFFER() _q); \ - \ -/* get the maximum number of elements you may read at once */ \ -unsigned int CBUFFER(_max_read)(CBUFFER() _q); \ - \ -/* get the number of available slots (max_size - size) */ \ -unsigned int CBUFFER(_space_available)(CBUFFER() _q); \ - \ -/* is buffer full? */ \ -int CBUFFER(_is_full)(CBUFFER() _q); \ - \ -/* write a single sample into the buffer */ \ -/* _q : circular buffer object */ \ -/* _v : input sample */ \ -void CBUFFER(_push)(CBUFFER() _q, \ - T _v); \ - \ -/* write samples to the buffer */ \ -/* _q : circular buffer object */ \ -/* _v : output array */ \ -/* _n : number of samples to write */ \ -void CBUFFER(_write)(CBUFFER() _q, \ - T * _v, \ - unsigned int _n); \ - \ -/* remove and return a single element from the buffer */ \ -/* _q : circular buffer object */ \ -/* _v : pointer to sample output */ \ -void CBUFFER(_pop)(CBUFFER() _q, \ - T * _v); \ - \ -/* read buffer contents */ \ -/* _q : circular buffer object */ \ -/* _num_requested : number of elements requested */ \ -/* _v : output pointer */ \ -/* _num_read : number of elements referenced by _v */ \ -void CBUFFER(_read)(CBUFFER() _q, \ - unsigned int _num_requested, \ - T ** _v, \ - unsigned int * _num_read); \ - \ -/* release _n samples from the buffer */ \ -/* _q : circular buffer object */ \ -/* _n : number of elements to release */ \ -void CBUFFER(_release)(CBUFFER() _q, \ - unsigned int _n); \ +#define LIQUID_CBUFFER_DEFINE_API(CBUFFER,T) \ + \ +/* Circular buffer object for storing and retrieving samples in a */ \ +/* first-in/first-out (FIFO) manner using a minimal amount of memory */ \ +typedef struct CBUFFER(_s) * CBUFFER(); \ + \ +/* Create circular buffer object of a particular maximum storage length */ \ +/* _max_size : maximum buffer size, _max_size > 0 */ \ +CBUFFER() CBUFFER(_create)(unsigned int _max_size); \ + \ +/* Create circular buffer object of a particular maximum storage size */ \ +/* and specify the maximum number of elements that can be read at any */ \ +/* any given time */ \ +/* _max_size : maximum buffer size, _max_size > 0 */ \ +/* _max_read : maximum size that will be read from buffer */ \ +CBUFFER() CBUFFER(_create_max)(unsigned int _max_size, \ + unsigned int _max_read); \ + \ +/* Destroy cbuffer object, freeing all internal memory */ \ +void CBUFFER(_destroy)(CBUFFER() _q); \ + \ +/* Print cbuffer object properties to stdout */ \ +void CBUFFER(_print)(CBUFFER() _q); \ + \ +/* Print cbuffer object properties and internal state */ \ +void CBUFFER(_debug_print)(CBUFFER() _q); \ + \ +/* Clear internal buffer */ \ +void CBUFFER(_reset)(CBUFFER() _q); \ + \ +/* Get the number of elements currently in the buffer */ \ +unsigned int CBUFFER(_size)(CBUFFER() _q); \ + \ +/* Get the maximum number of elements the buffer can hold */ \ +unsigned int CBUFFER(_max_size)(CBUFFER() _q); \ + \ +/* Get the maximum number of elements you may read at once */ \ +unsigned int CBUFFER(_max_read)(CBUFFER() _q); \ + \ +/* Get the number of available slots (max_size - size) */ \ +unsigned int CBUFFER(_space_available)(CBUFFER() _q); \ + \ +/* Return flag indicating if the buffer is full or not */ \ +int CBUFFER(_is_full)(CBUFFER() _q); \ + \ +/* Write a single sample into the buffer */ \ +/* _q : circular buffer object */ \ +/* _v : input sample */ \ +void CBUFFER(_push)(CBUFFER() _q, \ + T _v); \ + \ +/* Write a block of samples to the buffer */ \ +/* _q : circular buffer object */ \ +/* _v : array of samples to write to buffer */ \ +/* _n : number of samples to write */ \ +void CBUFFER(_write)(CBUFFER() _q, \ + T * _v, \ + unsigned int _n); \ + \ +/* Remove and return a single element from the buffer by setting the */ \ +/* value of the output sample pointed to by _v */ \ +/* _q : circular buffer object */ \ +/* _v : pointer to sample output */ \ +void CBUFFER(_pop)(CBUFFER() _q, \ + T * _v); \ + \ +/* Read buffer contents by returning a pointer to the linearized array; */ \ +/* note that the returned pointer is only valid until another operation */ \ +/* is performed on the circular buffer object */ \ +/* _q : circular buffer object */ \ +/* _num_requested : number of elements requested */ \ +/* _v : output pointer */ \ +/* _num_read : number of elements referenced by _v */ \ +void CBUFFER(_read)(CBUFFER() _q, \ + unsigned int _num_requested, \ + T ** _v, \ + unsigned int * _num_read); \ + \ +/* Release _n samples from the buffer */ \ +/* _q : circular buffer object */ \ +/* _n : number of elements to release */ \ +void CBUFFER(_release)(CBUFFER() _q, \ + unsigned int _n); \ // Define buffer APIs LIQUID_CBUFFER_DEFINE_API(LIQUID_CBUFFER_MANGLE_FLOAT, float) @@ -348,56 +400,80 @@ LIQUID_CBUFFER_DEFINE_API(LIQUID_CBUFFER_MANGLE_CFLOAT, liquid_float_complex) // large macro // WINDOW : name-mangling macro // T : data type -#define LIQUID_WINDOW_DEFINE_API(WINDOW,T) \ - \ -typedef struct WINDOW(_s) * WINDOW(); \ - \ -/* create window buffer object of length _n */ \ -WINDOW() WINDOW(_create)(unsigned int _n); \ - \ -/* recreate window buffer object with new length */ \ -/* _q : old window object */ \ -/* _n : new window length */ \ -WINDOW() WINDOW(_recreate)(WINDOW() _q, unsigned int _n); \ - \ -/* destroy window object, freeing all internally memory */ \ -void WINDOW(_destroy)(WINDOW() _q); \ - \ -/* print window object to stdout */ \ -void WINDOW(_print)(WINDOW() _q); \ - \ -/* print window object to stdout (with extra information) */ \ -void WINDOW(_debug_print)(WINDOW() _q); \ - \ -/* reset window object (initialize to zeros) */ \ -void WINDOW(_reset)(WINDOW() _q); \ - \ -/* read window buffer contents */ \ -/* _q : window object */ \ -/* _v : output pointer (set to internal array) */ \ -void WINDOW(_read)(WINDOW() _q, T ** _v); \ - \ -/* index single element in buffer at a particular index */ \ -/* _q : window object */ \ -/* _i : index of element to read */ \ -/* _v : output value pointer */ \ -void WINDOW(_index)(WINDOW() _q, \ - unsigned int _i, \ - T * _v); \ - \ -/* push single element onto window buffer */ \ -/* _q : window object */ \ -/* _v : single input element */ \ -void WINDOW(_push)(WINDOW() _q, \ - T _v); \ - \ -/* write array of elements onto window buffer */ \ -/* _q : window object */ \ -/* _v : input array of values to write */ \ -/* _n : number of input values to write */ \ -void WINDOW(_write)(WINDOW() _q, \ - T * _v, \ - unsigned int _n); \ +#define LIQUID_WINDOW_DEFINE_API(WINDOW,T) \ + \ +/* Sliding window first-in/first-out buffer with a fixed size */ \ +typedef struct WINDOW(_s) * WINDOW(); \ + \ +/* Create window buffer object of a fixed length */ \ +WINDOW() WINDOW(_create)(unsigned int _n); \ + \ +/* Recreate window buffer object with new length. */ \ +/* This extends an existing window's size, similar to the standard C */ \ +/* library's realloc() to n samples. */ \ +/* If the size of the new window is larger than the old one, the newest */ \ +/* values are retained at the beginning of the buffer and the oldest */ \ +/* values are truncated. If the size of the new window is smaller than */ \ +/* the old one, the oldest values are truncated. */ \ +/* _q : old window object */ \ +/* _n : new window length */ \ +WINDOW() WINDOW(_recreate)(WINDOW() _q, unsigned int _n); \ + \ +/* Destroy window object, freeing all internally memory */ \ +void WINDOW(_destroy)(WINDOW() _q); \ + \ +/* Print window object to stdout */ \ +void WINDOW(_print)(WINDOW() _q); \ + \ +/* Print window object to stdout (with extra information) */ \ +void WINDOW(_debug_print)(WINDOW() _q); \ + \ +/* Reset window object (initialize to zeros) */ \ +void WINDOW(_reset)(WINDOW() _q); \ + \ +/* Read the contents of the window by returning a pointer to the */ \ +/* aligned internal memory array. This method guarantees that the */ \ +/* elements are linearized. This method should only be used for */ \ +/* reading; writing values to the buffer has unspecified results. */ \ +/* Note that the returned pointer is only valid until another operation */ \ +/* is performed on the window buffer object */ \ +/* _q : window object */ \ +/* _v : output pointer (set to internal array) */ \ +void WINDOW(_read)(WINDOW() _q, \ + T ** _v); \ + \ +/* Index single element in buffer at a particular index */ \ +/* This retrieves the \(i^{th}\) sample in the window, storing the */ \ +/* output value in _v. */ \ +/* This is equivalent to first invoking read() and then indexing on the */ \ +/* resulting pointer; however the result is obtained much faster. */ \ +/* Therefore setting the index to 0 returns the oldest value in the */ \ +/* window. */ \ +/* _q : window object */ \ +/* _i : index of element to read */ \ +/* _v : output value pointer */ \ +void WINDOW(_index)(WINDOW() _q, \ + unsigned int _i, \ + T * _v); \ + \ +/* Shifts a single sample into the right side of the window, pushing */ \ +/* the oldest (left-most) sample out of the end. Unlike stacks, the */ \ +/* window object has no equivalent "pop" method, as values are retained */ \ +/* in memory until they are overwritten. */ \ +/* _q : window object */ \ +/* _v : single input element */ \ +void WINDOW(_push)(WINDOW() _q, \ + T _v); \ + \ +/* Write array of elements onto window buffer */ \ +/* Effectively, this is equivalent to pushing each sample one at a */ \ +/* time, but executes much faster. */ \ +/* _q : window object */ \ +/* _v : input array of values to write */ \ +/* _n : number of input values to write */ \ +void WINDOW(_write)(WINDOW() _q, \ + T * _v, \ + unsigned int _n); \ // Define window APIs LIQUID_WINDOW_DEFINE_API(LIQUID_WINDOW_MANGLE_FLOAT, float) @@ -414,38 +490,44 @@ LIQUID_WINDOW_DEFINE_API(LIQUID_WINDOW_MANGLE_CFLOAT, liquid_float_complex) // large macro // WDELAY : name-mangling macro // T : data type -#define LIQUID_WDELAY_DEFINE_API(WDELAY,T) \ -typedef struct WDELAY(_s) * WDELAY(); \ - \ -/* create delay buffer object with '_delay' samples */ \ -WDELAY() WDELAY(_create)(unsigned int _delay); \ - \ -/* re-create delay buffer object with '_delay' samples */ \ -/* _q : old delay buffer object */ \ -/* _delay : delay for new object */ \ -WDELAY() WDELAY(_recreate)(WDELAY() _q, \ - unsigned int _delay); \ - \ -/* destroy delay buffer object, freeing internal memory */ \ -void WDELAY(_destroy)(WDELAY() _q); \ - \ -/* print delay buffer object's state to stdout */ \ -void WDELAY(_print)(WDELAY() _q); \ - \ -/* clear/reset state of object */ \ -void WDELAY(_reset)(WDELAY() _q); \ - \ -/* read delayed sample from delay buffer object */ \ -/* _q : delay buffer object */ \ -/* _v : value of delayed element */ \ -void WDELAY(_read)(WDELAY() _q, \ - T * _v); \ - \ -/* push new sample into delay buffer object */ \ -/* _q : delay buffer object */ \ -/* _v : new value to be added to buffer */ \ -void WDELAY(_push)(WDELAY() _q, \ - T _v); \ +#define LIQUID_WDELAY_DEFINE_API(WDELAY,T) \ + \ +/* Efficient digital delay line using a minimal amount of memory */ \ +typedef struct WDELAY(_s) * WDELAY(); \ + \ +/* Create delay buffer object with a particular number of samples of */ \ +/* delay */ \ +/* _delay : number of samples of delay in the wdelay object */ \ +WDELAY() WDELAY(_create)(unsigned int _delay); \ + \ +/* Re-create delay buffer object, adjusting the delay size, preserving */ \ +/* the internal state of the object */ \ +/* _q : old delay buffer object */ \ +/* _delay : delay for new object */ \ +WDELAY() WDELAY(_recreate)(WDELAY() _q, \ + unsigned int _delay); \ + \ +/* Destroy delay buffer object, freeing internal memory */ \ +void WDELAY(_destroy)(WDELAY() _q); \ + \ +/* Print delay buffer object's state to stdout */ \ +void WDELAY(_print)(WDELAY() _q); \ + \ +/* Clear/reset state of object */ \ +void WDELAY(_reset)(WDELAY() _q); \ + \ +/* Read delayed sample at the head of the buffer and store it to the */ \ +/* output pointer */ \ +/* _q : delay buffer object */ \ +/* _v : value of delayed element */ \ +void WDELAY(_read)(WDELAY() _q, \ + T * _v); \ + \ +/* Push new sample into delay buffer object */ \ +/* _q : delay buffer object */ \ +/* _v : new value to be added to buffer */ \ +void WDELAY(_push)(WDELAY() _q, \ + T _v); \ // Define wdelay APIs LIQUID_WDELAY_DEFINE_API(LIQUID_WDELAY_MANGLE_FLOAT, float) @@ -465,68 +547,69 @@ LIQUID_WDELAY_DEFINE_API(LIQUID_WDELAY_MANGLE_CFLOAT, liquid_float_complex) // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_CHANNEL_DEFINE_API(CHANNEL,TO,TC,TI) \ - \ -typedef struct CHANNEL(_s) * CHANNEL(); \ - \ -/* create channel object with default parameters */ \ -CHANNEL() CHANNEL(_create)(void); \ - \ -/* destroy channel object, freeing all internal memory */ \ -void CHANNEL(_destroy)(CHANNEL() _q); \ - \ -/* print channel object internals to standard output */ \ -void CHANNEL(_print)(CHANNEL() _q); \ - \ -/* apply additive white Gausss noise impairment */ \ -/* _q : channel object */ \ -/* _N0dB : noise floor power spectral density [dB] */ \ -/* _SNRdB : signal-to-noise ratio [dB] */ \ -void CHANNEL(_add_awgn)(CHANNEL() _q, \ - float _N0dB, \ - float _SNRdB); \ - \ -/* apply carrier offset impairment */ \ -/* _q : channel object */ \ -/* _frequency : carrier frequency offset [radians/sample] */ \ -/* _phase : carrier phase offset [radians] */ \ -void CHANNEL(_add_carrier_offset)(CHANNEL() _q, \ - float _frequency, \ - float _phase); \ - \ -/* apply multi-path channel impairment */ \ -/* _q : channel object */ \ -/* _h : channel coefficients (NULL for random) */ \ -/* _h_len : number of channel coefficients */ \ -void CHANNEL(_add_multipath)(CHANNEL() _q, \ - TC * _h, \ - unsigned int _h_len); \ - \ -/* apply slowly-varying shadowing impairment */ \ -/* _q : channel object */ \ -/* _sigma : std. deviation for log-normal shadowing */ \ -/* _fd : Doppler frequency, _fd in (0,0.5) */ \ -void CHANNEL(_add_shadowing)(CHANNEL() _q, \ - float _sigma, \ - float _fd); \ - \ -/* apply channel impairments on single input sample */ \ -/* _q : channel object */ \ -/* _x : input sample */ \ -/* _y : pointer to output sample */ \ -void CHANNEL(_execute)(CHANNEL() _q, \ - TI _x, \ - TO * _y); \ - \ -/* apply channel impairments on block of samples */ \ -/* _q : channel object */ \ -/* _x : input array, [size: _n x 1] */ \ -/* _n : input array, length */ \ -/* _y : output array, [size: _n x 1] */ \ -void CHANNEL(_execute_block)(CHANNEL() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ +#define LIQUID_CHANNEL_DEFINE_API(CHANNEL,TO,TC,TI) \ + \ +/* Channel emulation */ \ +typedef struct CHANNEL(_s) * CHANNEL(); \ + \ +/* Create channel object with default parameters */ \ +CHANNEL() CHANNEL(_create)(void); \ + \ +/* Destroy channel object, freeing all internal memory */ \ +void CHANNEL(_destroy)(CHANNEL() _q); \ + \ +/* Print channel object internals to standard output */ \ +void CHANNEL(_print)(CHANNEL() _q); \ + \ +/* Include additive white Gausss noise impairment */ \ +/* _q : channel object */ \ +/* _N0dB : noise floor power spectral density [dB] */ \ +/* _SNRdB : signal-to-noise ratio [dB] */ \ +void CHANNEL(_add_awgn)(CHANNEL() _q, \ + float _N0dB, \ + float _SNRdB); \ + \ +/* Include carrier offset impairment */ \ +/* _q : channel object */ \ +/* _frequency : carrier frequency offset [radians/sample] */ \ +/* _phase : carrier phase offset [radians] */ \ +void CHANNEL(_add_carrier_offset)(CHANNEL() _q, \ + float _frequency, \ + float _phase); \ + \ +/* Include multi-path channel impairment */ \ +/* _q : channel object */ \ +/* _h : channel coefficients (NULL for random) */ \ +/* _h_len : number of channel coefficients */ \ +void CHANNEL(_add_multipath)(CHANNEL() _q, \ + TC * _h, \ + unsigned int _h_len); \ + \ +/* Include slowly-varying shadowing impairment */ \ +/* _q : channel object */ \ +/* _sigma : standard deviation for log-normal shadowing */ \ +/* _fd : Doppler frequency, 0 <= _fd < 0.5 */ \ +void CHANNEL(_add_shadowing)(CHANNEL() _q, \ + float _sigma, \ + float _fd); \ + \ +/* Apply channel impairments on single input sample */ \ +/* _q : channel object */ \ +/* _x : input sample */ \ +/* _y : pointer to output sample */ \ +void CHANNEL(_execute)(CHANNEL() _q, \ + TI _x, \ + TO * _y); \ + \ +/* Apply channel impairments on block of samples */ \ +/* _q : channel object */ \ +/* _x : input array, [size: _n x 1] */ \ +/* _n : input array, length */ \ +/* _y : output array, [size: _n x 1] */ \ +void CHANNEL(_execute_block)(CHANNEL() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ LIQUID_CHANNEL_DEFINE_API(LIQUID_CHANNEL_MANGLE_CCCF, liquid_float_complex, @@ -544,49 +627,53 @@ LIQUID_CHANNEL_DEFINE_API(LIQUID_CHANNEL_MANGLE_CCCF, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_TVMPCH_DEFINE_API(TVMPCH,TO,TC,TI) \ - \ -typedef struct TVMPCH(_s) * TVMPCH(); \ - \ -/* create channel object with default parameters */ \ -/* create time-varying multi-path channel emulator object */ \ -/* _n : number of coefficients, _n > 0 */ \ -/* _std : standard deviation */ \ -/* _tau : coherence time */ \ -TVMPCH() TVMPCH(_create)(unsigned int _n, \ - float _std, \ - float _tau); \ - \ -/* destroy channel object, freeing all internal memory */ \ -void TVMPCH(_destroy)(TVMPCH() _q); \ - \ -/* reset object */ \ -void TVMPCH(_reset)(TVMPCH() _q); \ - \ -/* print channel object internals to standard output */ \ -void TVMPCH(_print)(TVMPCH() _q); \ - \ -/* push sample into emulator */ \ -/* _q : channel object */ \ -/* _x : input sample */ \ -void TVMPCH(_push)(TVMPCH() _q, \ - TI _x); \ - \ -/* compute output sample */ \ -/* _q : channel object */ \ -/* _y : output sample */ \ -void TVMPCH(_execute)(TVMPCH() _q, \ - TO * _y); \ - \ -/* apply channel impairments on a block of samples */ \ -/* _q : channel object */ \ -/* _x : input array [size: _nx x 1] */ \ -/* _nx : input array length */ \ -/* _y : output array */ \ -void TVMPCH(_execute_block)(TVMPCH() _q, \ - TI * _x, \ - unsigned int _nx, \ - TO * _y); \ +#define LIQUID_TVMPCH_DEFINE_API(TVMPCH,TO,TC,TI) \ + \ +/* Time-varying multipath channel emulation */ \ +typedef struct TVMPCH(_s) * TVMPCH(); \ + \ +/* Create time-varying multi-path channel emulator object, specifying */ \ +/* the number of coefficients, the standard deviation of coefficients, */ \ +/* and the coherence time. The larger the standard deviation, the more */ \ +/* dramatic the frequency response of the channel. The shorter the */ \ +/* coeherent time, the faster the channel effects. */ \ +/* _n : number of coefficients, _n > 0 */ \ +/* _std : standard deviation, _std >= 0 */ \ +/* _tau : normalized coherence time, 0 < _tau < 1 */ \ +TVMPCH() TVMPCH(_create)(unsigned int _n, \ + float _std, \ + float _tau); \ + \ +/* Destroy channel object, freeing all internal memory */ \ +void TVMPCH(_destroy)(TVMPCH() _q); \ + \ +/* Reset object */ \ +void TVMPCH(_reset)(TVMPCH() _q); \ + \ +/* Print channel object internals to standard output */ \ +void TVMPCH(_print)(TVMPCH() _q); \ + \ +/* Push sample into emulator */ \ +/* _q : channel object */ \ +/* _x : input sample */ \ +void TVMPCH(_push)(TVMPCH() _q, \ + TI _x); \ + \ +/* Compute output sample */ \ +/* _q : channel object */ \ +/* _y : output sample */ \ +void TVMPCH(_execute)(TVMPCH() _q, \ + TO * _y); \ + \ +/* Apply channel impairments on a block of samples */ \ +/* _q : channel object */ \ +/* _x : input array, [size: _n x 1] */ \ +/* _n : input array length */ \ +/* _y : output array, [size: _n x 1] */ \ +void TVMPCH(_execute_block)(TVMPCH() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ LIQUID_TVMPCH_DEFINE_API(LIQUID_TVMPCH_MANGLE_CCCF, liquid_float_complex, @@ -607,45 +694,67 @@ LIQUID_TVMPCH_DEFINE_API(LIQUID_TVMPCH_MANGLE_CCCF, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_DOTPROD_DEFINE_API(DOTPROD,TO,TC,TI) \ - \ -/* run dot product without creating object [unrolled loop] */ \ -/* _v : coefficients array [size: _n x 1] */ \ -/* _x : input array [size: _n x 1] */ \ -/* _n : dotprod length, _n > 0 */ \ -/* _y : output sample pointer */ \ -void DOTPROD(_run)( TC *_v, TI *_x, unsigned int _n, TO *_y); \ -void DOTPROD(_run4)(TC *_v, TI *_x, unsigned int _n, TO *_y); \ - \ -typedef struct DOTPROD(_s) * DOTPROD(); \ - \ -/* create dot product object */ \ -/* _v : coefficients array [size: _n x 1] */ \ -/* _n : dotprod length, _n > 0 */ \ -DOTPROD() DOTPROD(_create)(TC * _v, \ - unsigned int _n); \ - \ -/* re-create dot product object */ \ -/* _q : old dotprod object */ \ -/* _v : coefficients array [size: _n x 1] */ \ -/* _n : dotprod length, _n > 0 */ \ -DOTPROD() DOTPROD(_recreate)(DOTPROD() _q, \ - TC * _v, \ - unsigned int _n); \ - \ -/* destroy dotprod object, freeing all internal memory */ \ -void DOTPROD(_destroy)(DOTPROD() _q); \ - \ -/* print dotprod object internals to standard output */ \ -void DOTPROD(_print)(DOTPROD() _q); \ - \ -/* execute dot product */ \ -/* _q : dotprod object */ \ -/* _x : input array [size: _n x 1] */ \ -/* _y : output sample pointer */ \ -void DOTPROD(_execute)(DOTPROD() _q, \ - TI * _x, \ - TO * _y); \ +#define LIQUID_DOTPROD_DEFINE_API(DOTPROD,TO,TC,TI) \ + \ +/* Vector dot product operation */ \ +typedef struct DOTPROD(_s) * DOTPROD(); \ + \ +/* Run dot product without creating object. This is less efficient than */ \ +/* creating the object as it is an unoptimized portable implementation */ \ +/* that doesn't take advantage of processor extensions. It is meant to */ \ +/* provide a baseline for performance comparison and a convenient way */ \ +/* to invoke a dot product operation when fast operation is not */ \ +/* necessary. */ \ +/* _v : coefficients array [size: _n x 1] */ \ +/* _x : input array [size: _n x 1] */ \ +/* _n : dotprod length, _n > 0 */ \ +/* _y : output sample pointer */ \ +void DOTPROD(_run)( TC * _v, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* This provides the same unoptimized operation as the 'run()' method */ \ +/* above, but with the loop unrolled by a factor of 4. It is marginally */ \ +/* faster than 'run()' without unrolling the loop. */ \ +/* _v : coefficients array [size: _n x 1] */ \ +/* _x : input array [size: _n x 1] */ \ +/* _n : dotprod length, _n > 0 */ \ +/* _y : output sample pointer */ \ +void DOTPROD(_run4)( TC * _v, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* Create vector dot product object */ \ +/* _v : coefficients array [size: _n x 1] */ \ +/* _n : dotprod length, _n > 0 */ \ +DOTPROD() DOTPROD(_create)(TC * _v, \ + unsigned int _n); \ + \ +/* Re-create dot product object of potentially a different length with */ \ +/* different coefficients. If the length of the dot product object does */ \ +/* not change, not memory reallocation is invoked. */ \ +/* _q : old dotprod object */ \ +/* _v : coefficients array [size: _n x 1] */ \ +/* _n : dotprod length, _n > 0 */ \ +DOTPROD() DOTPROD(_recreate)(DOTPROD() _q, \ + TC * _v, \ + unsigned int _n); \ + \ +/* Destroy dotprod object, freeing all internal memory */ \ +void DOTPROD(_destroy)(DOTPROD() _q); \ + \ +/* Print dotprod object internals to standard output */ \ +void DOTPROD(_print)(DOTPROD() _q); \ + \ +/* Execute dot product on an input array */ \ +/* _q : dotprod object */ \ +/* _x : input array [size: _n x 1] */ \ +/* _y : output sample pointer */ \ +void DOTPROD(_execute)(DOTPROD() _q, \ + TI * _x, \ + TO * _y); \ LIQUID_DOTPROD_DEFINE_API(LIQUID_DOTPROD_MANGLE_RRRF, float, @@ -684,118 +793,131 @@ float liquid_sumsqcf(liquid_float_complex * _v, // large macro // EQLMS : name-mangling macro // T : data type -#define LIQUID_EQLMS_DEFINE_API(EQLMS,T) \ -typedef struct EQLMS(_s) * EQLMS(); \ - \ -/* create LMS EQ initialized with external coefficients */ \ -/* _h : filter coefficients (NULL for {1,0,0...}) */ \ -/* _h_len : filter length */ \ -EQLMS() EQLMS(_create)(T * _h, \ - unsigned int _h_len); \ - \ -/* create LMS EQ initialized with square-root Nyquist */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ -/* _k : samples/symbol */ \ -/* _m : filter delay (symbols) */ \ -/* _beta : rolloff factor (0 < beta <= 1) */ \ -/* _dt : fractional sample delay */ \ -EQLMS() EQLMS(_create_rnyquist)(int _type, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - float _dt); \ - \ -/* create LMS EQ initialized with low-pass filter */ \ -/* _h_len : filter length */ \ -/* _fc : filter cut-off, _fc in (0,0.5] */ \ -EQLMS() EQLMS(_create_lowpass)(unsigned int _h_len, \ - float _fc); \ - \ -/* re-create EQ initialized with external coefficients */ \ -/* _q : equalizer object */ \ -/* _h : filter coefficients (NULL for {1,0,0...}) */ \ -/* _h_len : filter length */ \ -EQLMS() EQLMS(_recreate)(EQLMS() _q, \ - T * _h, \ - unsigned int _h_len); \ - \ -/* destroy equalizer object, freeing all internal memory */ \ -void EQLMS(_destroy)(EQLMS() _q); \ - \ -/* reset equalizer object, clearing internal state */ \ -void EQLMS(_reset)(EQLMS() _q); \ - \ -/* print equalizer internal state */ \ -void EQLMS(_print)(EQLMS() _q); \ - \ -/* get/set equalizer learning rate */ \ -float EQLMS(_get_bw)(EQLMS() _q); \ -void EQLMS(_set_bw)(EQLMS() _q, \ - float _lambda); \ - \ -/* push sample into equalizer internal buffer */ \ -void EQLMS(_push)(EQLMS() _q, \ - T _x); \ - \ -/* push sample into equalizer internal buffer as block */ \ -/* _q : equalizer object */ \ -/* _x : input sample array */ \ -/* _n : input sample array length */ \ -void EQLMS(_push_block)(EQLMS() _q, \ - T * _x, \ - unsigned int _n); \ - \ -/* execute internal dot product and return result */ \ -/* _q : equalizer object */ \ -/* _y : output sample */ \ -void EQLMS(_execute)(EQLMS() _q, \ - T * _y); \ - \ -/* execute equalizer with block of samples using constant */ \ -/* modulus algorithm, operating on a decimation rate of _k */ \ -/* samples. */ \ -/* _q : equalizer object */ \ -/* _k : down-sampling rate */ \ -/* _x : input sample array [size: _n x 1] */ \ -/* _n : input sample array length */ \ -/* _y : output sample array [size: _n x 1] */ \ -void EQLMS(_execute_block)(EQLMS() _q, \ - unsigned int _k, \ - T * _x, \ - unsigned int _n, \ - T * _y); \ - \ -/* step through one cycle of equalizer training */ \ -/* _q : equalizer object */ \ -/* _d : desired output */ \ -/* _d_hat : actual output */ \ -void EQLMS(_step)(EQLMS() _q, \ - T _d, \ - T _d_hat); \ - \ -/* step through one cycle of equalizer training (blind) */ \ -/* _q : equalizer object */ \ -/* _d_hat : actual output */ \ -void EQLMS(_step_blind)(EQLMS() _q, \ - T _d_hat); \ - \ -/* get equalizer's internal coefficients */ \ -/* _q : equalizer object */ \ -/* _w : weights [size: _p x 1] */ \ -void EQLMS(_get_weights)(EQLMS() _q, \ - T * _w); \ - \ -/* train equalizer object on group of samples */ \ -/* _q : equalizer object */ \ -/* _w : input/output weights [size: _p x 1] */ \ -/* _x : received sample vector [size: _n x 1] */ \ -/* _d : desired output vector [size: _n x 1] */ \ -/* _n : input, output vector length */ \ -void EQLMS(_train)(EQLMS() _q, \ - T * _w, \ - T * _x, \ - T * _d, \ - unsigned int _n); \ +#define LIQUID_EQLMS_DEFINE_API(EQLMS,T) \ + \ +/* Least mean-squares equalization object */ \ +typedef struct EQLMS(_s) * EQLMS(); \ + \ +/* Create LMS EQ initialized with external coefficients */ \ +/* _h : filter coefficients; set to NULL for {1,0,0...},[size: _n x 1] */ \ +/* _n : filter length */ \ +EQLMS() EQLMS(_create)(T * _h, \ + unsigned int _n); \ + \ +/* Create LMS EQ initialized with square-root Nyquist prototype filter */ \ +/* as initial set of coefficients. This is useful for applications */ \ +/* where the baseline matched filter is a good starting point, but */ \ +/* where equalization is needed to properly remove inter-symbol */ \ +/* interference. */ \ +/* The filter length is \(2 k m + 1\) */ \ +/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ +/* _k : samples/symbol */ \ +/* _m : filter delay (symbols) */ \ +/* _beta : rolloff factor (0 < beta <= 1) */ \ +/* _dt : fractional sample delay */ \ +EQLMS() EQLMS(_create_rnyquist)(int _type, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta, \ + float _dt); \ + \ +/* Create LMS EQ initialized with low-pass filter */ \ +/* _n : filter length */ \ +/* _fc : filter cut-off normalized to sample rate, 0 < _fc <= 0.5 */ \ +EQLMS() EQLMS(_create_lowpass)(unsigned int _n, \ + float _fc); \ + \ +/* Re-create EQ initialized with external coefficients */ \ +/* _q : equalizer object */ \ +/* _h : filter coefficients (NULL for {1,0,0...}), [size: _n x 1] */ \ +/* _h_len : filter length */ \ +EQLMS() EQLMS(_recreate)(EQLMS() _q, \ + T * _h, \ + unsigned int _h_len); \ + \ +/* Destroy equalizer object, freeing all internal memory */ \ +void EQLMS(_destroy)(EQLMS() _q); \ + \ +/* Reset equalizer object, clearing internal state */ \ +void EQLMS(_reset)(EQLMS() _q); \ + \ +/* Print equalizer internal state */ \ +void EQLMS(_print)(EQLMS() _q); \ + \ +/* Get equalizer learning rate */ \ +float EQLMS(_get_bw)(EQLMS() _q); \ + \ +/* Set equalizer learning rate */ \ +/* _q : equalizer object */ \ +/* _lambda : learning rate, _lambda > 0 */ \ +void EQLMS(_set_bw)(EQLMS() _q, \ + float _lambda); \ + \ +/* Push sample into equalizer internal buffer */ \ +/* _q : equalizer object */ \ +/* _x : input sample */ \ +void EQLMS(_push)(EQLMS() _q, \ + T _x); \ + \ +/* Push block of samples into internal buffer of equalizer object */ \ +/* _q : equalizer object */ \ +/* _x : input sample array, [size: _n x 1] */ \ +/* _n : input sample array length */ \ +void EQLMS(_push_block)(EQLMS() _q, \ + T * _x, \ + unsigned int _n); \ + \ +/* Execute internal dot product and return result */ \ +/* _q : equalizer object */ \ +/* _y : output sample */ \ +void EQLMS(_execute)(EQLMS() _q, \ + T * _y); \ + \ +/* Execute equalizer with block of samples using constant */ \ +/* modulus algorithm, operating on a decimation rate of _k */ \ +/* samples. */ \ +/* _q : equalizer object */ \ +/* _k : down-sampling rate */ \ +/* _x : input sample array [size: _n x 1] */ \ +/* _n : input sample array length */ \ +/* _y : output sample array [size: _n x 1] */ \ +void EQLMS(_execute_block)(EQLMS() _q, \ + unsigned int _k, \ + T * _x, \ + unsigned int _n, \ + T * _y); \ + \ +/* Step through one cycle of equalizer training */ \ +/* _q : equalizer object */ \ +/* _d : desired output */ \ +/* _d_hat : actual output */ \ +void EQLMS(_step)(EQLMS() _q, \ + T _d, \ + T _d_hat); \ + \ +/* Step through one cycle of equalizer training (blind) */ \ +/* _q : equalizer object */ \ +/* _d_hat : actual output */ \ +void EQLMS(_step_blind)(EQLMS() _q, \ + T _d_hat); \ + \ +/* Get equalizer's internal coefficients */ \ +/* _q : equalizer object */ \ +/* _w : weights, [size: _p x 1] */ \ +void EQLMS(_get_weights)(EQLMS() _q, \ + T * _w); \ + \ +/* Train equalizer object on group of samples */ \ +/* _q : equalizer object */ \ +/* _w : input/output weights, [size: _p x 1] */ \ +/* _x : received sample vector,[size: _n x 1] */ \ +/* _d : desired output vector, [size: _n x 1] */ \ +/* _n : input, output vector length */ \ +void EQLMS(_train)(EQLMS() _q, \ + T * _w, \ + T * _x, \ + T * _d, \ + unsigned int _n); \ LIQUID_EQLMS_DEFINE_API(LIQUID_EQLMS_MANGLE_RRRF, float) LIQUID_EQLMS_DEFINE_API(LIQUID_EQLMS_MANGLE_CCCF, liquid_float_complex) @@ -808,68 +930,76 @@ LIQUID_EQLMS_DEFINE_API(LIQUID_EQLMS_MANGLE_CCCF, liquid_float_complex) // large macro // EQRLS : name-mangling macro // T : data type -#define LIQUID_EQRLS_DEFINE_API(EQRLS,T) \ -typedef struct EQRLS(_s) * EQRLS(); \ - \ -/* create RLS EQ initialized with external coefficients */ \ -/* _h : filter coefficients (NULL for {1,0,0...}) */ \ -/* _p : filter length */ \ -EQRLS() EQRLS(_create)(T * _h, \ - unsigned int _p); \ - \ -/* re-create RLS EQ initialized with external coefficients */ \ -/* _q : initial equalizer object */ \ -/* _h : filter coefficients (NULL for {1,0,0...}) */ \ -/* _p : filter length */ \ -EQRLS() EQRLS(_recreate)(EQRLS() _q, \ - T * _h, \ - unsigned int _p); \ - \ -/* destroy equalizer object, freeing all internal memory */ \ -void EQRLS(_destroy)(EQRLS() _q); \ - \ -/* print equalizer internal state */ \ -void EQRLS(_print)(EQRLS() _q); \ - \ -/* reset equalizer object, clearing internal state */ \ -void EQRLS(_reset)(EQRLS() _q); \ - \ -/* get/set equalizer learning rate */ \ -float EQRLS(_get_bw)(EQRLS() _q); \ -void EQRLS(_set_bw)(EQRLS() _q, \ - float _mu); \ - \ -/* push sample into equalizer internal buffer */ \ -void EQRLS(_push)(EQRLS() _q, T _x); \ - \ -/* execute internal dot product and return result */ \ -/* _q : equalizer object */ \ -/* _y : output sample */ \ -void EQRLS(_execute)(EQRLS() _q, T * _y); \ - \ -/* step through one cycle of equalizer training */ \ -/* _q : equalizer object */ \ -/* _d : desired output */ \ -/* _d_hat : actual output */ \ -void EQRLS(_step)(EQRLS() _q, T _d, T _d_hat); \ - \ -/* retrieve internal filter coefficients */ \ -/* _q : equalizer object */ \ -/* _w : weights [size: _p x 1] */ \ -void EQRLS(_get_weights)(EQRLS() _q, \ - T * _w); \ - \ -/* train equalizer object on group of samples */ \ -/* _q : equalizer object */ \ -/* _w : input/output weights [size: _p x 1] */ \ -/* _x : received sample vector [size: _n x 1] */ \ -/* _d : desired output vector [size: _n x 1] */ \ -/* _n : input, output vector length */ \ -void EQRLS(_train)(EQRLS() _q, \ - T * _w, \ - T * _x, \ - T * _d, \ - unsigned int _n); \ +#define LIQUID_EQRLS_DEFINE_API(EQRLS,T) \ + \ +/* Recursive least mean-squares equalization object */ \ +typedef struct EQRLS(_s) * EQRLS(); \ + \ +/* Create RLS EQ initialized with external coefficients */ \ +/* _h : filter coefficients; set to NULL for {1,0,0...},[size: _n x 1] */ \ +/* _n : filter length */ \ +EQRLS() EQRLS(_create)(T * _h, \ + unsigned int _n); \ + \ +/* Re-create EQ initialized with external coefficients */ \ +/* _q : equalizer object */ \ +/* _h : filter coefficients (NULL for {1,0,0...}), [size: _n x 1] */ \ +/* _n : filter length */ \ +EQRLS() EQRLS(_recreate)(EQRLS() _q, \ + T * _h, \ + unsigned int _n); \ + \ +/* Destroy equalizer object, freeing all internal memory */ \ +void EQRLS(_destroy)(EQRLS() _q); \ + \ +/* Reset equalizer object, clearing internal state */ \ +void EQRLS(_reset)(EQRLS() _q); \ + \ +/* Print equalizer internal state */ \ +void EQRLS(_print)(EQRLS() _q); \ + \ +/* Get equalizer learning rate */ \ +float EQRLS(_get_bw)(EQRLS() _q); \ + \ +/* Set equalizer learning rate */ \ +/* _q : equalizer object */ \ +/* _mu : learning rate, _mu > 0 */ \ +void EQRLS(_set_bw)(EQRLS() _q, \ + float _mu); \ + \ +/* Push sample into equalizer internal buffer */ \ +/* _q : equalizer object */ \ +/* _x : input sample */ \ +void EQRLS(_push)(EQRLS() _q, T _x); \ + \ +/* Execute internal dot product and return result */ \ +/* _q : equalizer object */ \ +/* _y : output sample */ \ +void EQRLS(_execute)(EQRLS() _q, T * _y); \ + \ +/* Step through one cycle of equalizer training */ \ +/* _q : equalizer object */ \ +/* _d : desired output */ \ +/* _d_hat : actual output */ \ +void EQRLS(_step)(EQRLS() _q, T _d, T _d_hat); \ + \ +/* Get equalizer's internal coefficients */ \ +/* _q : equalizer object */ \ +/* _w : weights, [size: _p x 1] */ \ +void EQRLS(_get_weights)(EQRLS() _q, \ + T * _w); \ + \ +/* Train equalizer object on group of samples */ \ +/* _q : equalizer object */ \ +/* _w : input/output weights, [size: _p x 1] */ \ +/* _x : received sample vector,[size: _n x 1] */ \ +/* _d : desired output vector, [size: _n x 1] */ \ +/* _n : input, output vector length */ \ +void EQRLS(_train)(EQRLS() _q, \ + T * _w, \ + T * _x, \ + T * _d, \ + unsigned int _n); \ LIQUID_EQRLS_DEFINE_API(LIQUID_EQRLS_MANGLE_RRRF, float) LIQUID_EQRLS_DEFINE_API(LIQUID_EQRLS_MANGLE_CCCF, liquid_float_complex) @@ -1248,72 +1378,75 @@ typedef enum { // FFT : name-mangling macro // T : primitive data type // TC : primitive data type (complex) -#define LIQUID_FFT_DEFINE_API(FFT,T,TC) \ - \ -typedef struct FFT(plan_s) * FFT(plan); \ - \ -/* create regular complex one-dimensional transform */ \ -/* _n : transform size */ \ -/* _x : pointer to input array [size: _n x 1] */ \ -/* _y : pointer to output array [size: _n x 1] */ \ -/* _dir : direction (e.g. LIQUID_FFT_FORWARD) */ \ -/* _flags : options, optimization */ \ -FFT(plan) FFT(_create_plan)(unsigned int _n, \ - TC * _x, \ - TC * _y, \ - int _dir, \ - int _flags); \ - \ -/* create real-to-real transform */ \ -/* _n : transform size */ \ -/* _x : pointer to input array [size: _n x 1] */ \ -/* _y : pointer to output array [size: _n x 1] */ \ -/* _type : transform type (e.g. LIQUID_FFT_REDFT00) */ \ -/* _flags : options, optimization */ \ -FFT(plan) FFT(_create_plan_r2r_1d)(unsigned int _n, \ - T * _x, \ - T * _y, \ - int _type, \ - int _flags); \ - \ -/* destroy transform */ \ -void FFT(_destroy_plan)(FFT(plan) _p); \ - \ -/* print transform plan and internal strategy */ \ -void FFT(_print_plan)(FFT(plan) _p); \ - \ -/* run the transform */ \ -void FFT(_execute)(FFT(plan) _p); \ - \ -/* object-independent methods */ \ - \ -/* perform n-point FFT allocating plan internally */ \ -/* _nfft : fft size */ \ -/* _x : input array [size: _nfft x 1] */ \ -/* _y : output array [size: _nfft x 1] */ \ -/* _dir : fft direction: LIQUID_FFT_{FORWARD,BACKWARD} */ \ -/* _flags : fft flags */ \ -void FFT(_run)(unsigned int _n, \ - TC * _x, \ - TC * _y, \ - int _dir, \ - int _flags); \ - \ -/* perform n-point real FFT allocating plan internally */ \ -/* _nfft : fft size */ \ -/* _x : input array [size: _nfft x 1] */ \ -/* _y : output array [size: _nfft x 1] */ \ -/* _type : fft type, e.g. LIQUID_FFT_REDFT10 */ \ -/* _flags : fft flags */ \ -void FFT(_r2r_1d_run)(unsigned int _n, \ - T * _x, \ - T * _y, \ - int _type, \ - int _flags); \ - \ -/* perform _n-point fft shift */ \ -void FFT(_shift)(TC * _x, \ - unsigned int _n); \ +#define LIQUID_FFT_DEFINE_API(FFT,T,TC) \ + \ +/* Fast Fourier Transform (FFT) and inverse (plan) object */ \ +typedef struct FFT(plan_s) * FFT(plan); \ + \ +/* Create regular complex one-dimensional transform */ \ +/* _n : transform size */ \ +/* _x : pointer to input array [size: _n x 1] */ \ +/* _y : pointer to output array [size: _n x 1] */ \ +/* _dir : direction (e.g. LIQUID_FFT_FORWARD) */ \ +/* _flags : options, optimization */ \ +FFT(plan) FFT(_create_plan)(unsigned int _n, \ + TC * _x, \ + TC * _y, \ + int _dir, \ + int _flags); \ + \ +/* Create real-to-real one-dimensional transform */ \ +/* _n : transform size */ \ +/* _x : pointer to input array [size: _n x 1] */ \ +/* _y : pointer to output array [size: _n x 1] */ \ +/* _type : transform type (e.g. LIQUID_FFT_REDFT00) */ \ +/* _flags : options, optimization */ \ +FFT(plan) FFT(_create_plan_r2r_1d)(unsigned int _n, \ + T * _x, \ + T * _y, \ + int _type, \ + int _flags); \ + \ +/* Destroy transform and free all internally-allocated memory */ \ +void FFT(_destroy_plan)(FFT(plan) _p); \ + \ +/* Print transform plan and internal strategy to stdout. This includes */ \ +/* information on the strategy for computing large transforms with many */ \ +/* prime factors or with large prime factors. */ \ +void FFT(_print_plan)(FFT(plan) _p); \ + \ +/* Run the transform */ \ +void FFT(_execute)(FFT(plan) _p); \ + \ +/* Perform n-point FFT allocating plan internally */ \ +/* _nfft : fft size */ \ +/* _x : input array [size: _nfft x 1] */ \ +/* _y : output array [size: _nfft x 1] */ \ +/* _dir : fft direction: LIQUID_FFT_{FORWARD,BACKWARD} */ \ +/* _flags : fft flags */ \ +void FFT(_run)(unsigned int _n, \ + TC * _x, \ + TC * _y, \ + int _dir, \ + int _flags); \ + \ +/* Perform n-point real one-dimensional FFT allocating plan internally */ \ +/* _nfft : fft size */ \ +/* _x : input array [size: _nfft x 1] */ \ +/* _y : output array [size: _nfft x 1] */ \ +/* _type : fft type, e.g. LIQUID_FFT_REDFT10 */ \ +/* _flags : fft flags */ \ +void FFT(_r2r_1d_run)(unsigned int _n, \ + T * _x, \ + T * _y, \ + int _type, \ + int _flags); \ + \ +/* Perform _n-point fft shift */ \ +/* _x : input array [size: _n x 1] */ \ +/* _n : input array size */ \ +void FFT(_shift)(TC * _x, \ + unsigned int _n); \ LIQUID_FFT_DEFINE_API(LIQUID_FFT_MANGLE_FLOAT,float,liquid_float_complex) @@ -1338,87 +1471,137 @@ LIQUID_FFT_DEFINE_API(LIQUID_FFT_MANGLE_FLOAT,float,liquid_float_complex) // T : primitive data type // TC : primitive data type (complex) // TI : primitive data type (input) -#define LIQUID_SPGRAM_DEFINE_API(SPGRAM,T,TC,TI) \ - \ -typedef struct SPGRAM(_s) * SPGRAM(); \ - \ -/* create spgram object */ \ -/* _nfft : FFT size */ \ -/* _wtype : window type, e.g. LIQUID_WINDOW_HAMMING */ \ -/* _window_len : window length, _window_len in [1,_nfft] */ \ -/* _delay : delay between transforms, _delay > 0 */ \ -SPGRAM() SPGRAM(_create)(unsigned int _nfft, \ - int _wtype, \ - unsigned int _window_len, \ - unsigned int _delay); \ - \ -/* create default spgram object (Kaiser-Bessel window) */ \ -SPGRAM() SPGRAM(_create_default)(unsigned int _nfft); \ - \ -/* destroy spgram object */ \ -void SPGRAM(_destroy)(SPGRAM() _q); \ - \ -/* clears the internal state of the spgram object, but not */ \ -/* the internal buffer */ \ -void SPGRAM(_clear)(SPGRAM() _q); \ - \ -/* reset the spgram object to its original state completely */ \ -void SPGRAM(_reset)(SPGRAM() _q); \ - \ -/* print internal state of the spgram object */ \ -void SPGRAM(_print)(SPGRAM() _q); \ - \ -/* set methods */ \ -int SPGRAM(_set_alpha)(SPGRAM() _q, float _alpha); \ - \ -/* access methods */ \ -unsigned int SPGRAM(_get_nfft) (SPGRAM() _q); \ -unsigned int SPGRAM(_get_window_len) (SPGRAM() _q); \ -unsigned int SPGRAM(_get_delay) (SPGRAM() _q); \ -uint64_t SPGRAM(_get_num_samples) (SPGRAM() _q); \ -uint64_t SPGRAM(_get_num_samples_total) (SPGRAM() _q); \ -uint64_t SPGRAM(_get_num_transforms) (SPGRAM() _q); \ -uint64_t SPGRAM(_get_num_transforms_total)(SPGRAM() _q); \ -float SPGRAM(_get_alpha) (SPGRAM() _q); \ - \ -/* push a single sample into the spgram object */ \ -/* _q : spgram object */ \ -/* _x : input sample */ \ -void SPGRAM(_push)(SPGRAM() _q, \ - TI _x); \ - \ -/* write a block of samples to the spgram object */ \ -/* _q : spgram object */ \ -/* _x : input buffer [size: _n x 1] */ \ -/* _n : input buffer length */ \ -void SPGRAM(_write)(SPGRAM() _q, \ - TI * _x, \ - unsigned int _n); \ - \ -/* compute spectral periodogram output (fft-shifted values */ \ -/* in dB) from current buffer contents */ \ -/* _q : spgram object */ \ -/* _X : output spectrum (dB) [size: _nfft x 1] */ \ -void SPGRAM(_get_psd)(SPGRAM() _q, \ - T * _X); \ - \ -/* export gnuplot file */ \ -/* _q : spgram object */ \ -/* _filename : input buffer [size: _n x 1] */ \ -int SPGRAM(_export_gnuplot)(SPGRAM() _q, \ - const char * _filename); \ - \ -/* object-independent methods */ \ - \ -/* estimate spectrum on input signal */ \ -/* _nfft : FFT size */ \ -/* _x : input signal [size: _n x 1] */ \ -/* _n : input signal length */ \ -/* _psd : output spectrum, [size: _nfft x 1] */ \ -void SPGRAM(_estimate_psd)(unsigned int _nfft, \ - TI * _x, \ - unsigned int _n, \ - T * _psd); \ +#define LIQUID_SPGRAM_DEFINE_API(SPGRAM,T,TC,TI) \ + \ +/* Spectral periodogram object for computing power spectral density */ \ +/* estimates of various signals */ \ +typedef struct SPGRAM(_s) * SPGRAM(); \ + \ +/* Create spgram object, fully defined */ \ +/* _nfft : transform (FFT) size, _nfft >= 2 */ \ +/* _wtype : window type, e.g. LIQUID_WINDOW_HAMMING */ \ +/* _window_len : window length, 1 <= _window_len <= _nfft */ \ +/* _delay : delay between transforms, _delay > 0 */ \ +SPGRAM() SPGRAM(_create)(unsigned int _nfft, \ + int _wtype, \ + unsigned int _window_len, \ + unsigned int _delay); \ + \ +/* Create default spgram object of a particular transform size using */ \ +/* the Kaiser-Bessel window (LIQUID_WINDOW_KAISER), a window length */ \ +/* equal to _nfft/2, and a delay of _nfft/4 */ \ +/* _nfft : FFT size, _nfft >= 2 */ \ +SPGRAM() SPGRAM(_create_default)(unsigned int _nfft); \ + \ +/* Destroy spgram object, freeing all internally-allocated memory */ \ +void SPGRAM(_destroy)(SPGRAM() _q); \ + \ +/* Clears the internal state of the object, but not the internal buffer */ \ +void SPGRAM(_clear)(SPGRAM() _q); \ + \ +/* Reset the object to its original state completely. This effectively */ \ +/* executes the clear() method and then resets the internal buffer */ \ +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. */ \ +/* This is used to compute a running time-average power spectral */ \ +/* density output. */ \ +/* The value of _alpha determines how the power spectral estimate is */ \ +/* accumulated across transforms and can range from 0 to 1 with a */ \ +/* special case of -1 to accumulate infinitely. */ \ +/* Setting _alpha to 0 minimizes the bandwidth and the PSD estimate */ \ +/* will never update. */ \ +/* Setting _alpha to 1 forces the object to always use the most recent */ \ +/* spectral estimate. */ \ +/* Setting _alpha to -1 is a special case to enable infinite spectral */ \ +/* accumulation. */ \ +/* _q : spectral periodogram object */ \ +/* _alpha : forgetting factor, set to -1 for infinite, 0<=_alpha<=1 */ \ +int SPGRAM(_set_alpha)(SPGRAM() _q, \ + float _alpha); \ + \ +/* Set the center frequency of the received signal. */ \ +/* This is for display purposes only when generating the output image. */ \ +/* _q : spectral periodogram object */ \ +/* _freq : center frequency [Hz] */ \ +int SPGRAM(_set_freq)(SPGRAM() _q, \ + float _freq); \ + \ +/* Set the sample rate (frequency) of the received signal. */ \ +/* This is for display purposes only when generating the output image. */ \ +/* _q : spectral periodogram object */ \ +/* _rate : sample rate [Hz] */ \ +int SPGRAM(_set_rate)(SPGRAM() _q, \ + float _rate); \ + \ +/* Get transform (FFT) size */ \ +unsigned int SPGRAM(_get_nfft)(SPGRAM() _q); \ + \ +/* Get window length */ \ +unsigned int SPGRAM(_get_window_len)(SPGRAM() _q); \ + \ +/* Get delay between transforms */ \ +unsigned int SPGRAM(_get_delay)(SPGRAM() _q); \ + \ +/* Get number of samples processed since reset */ \ +uint64_t SPGRAM(_get_num_samples)(SPGRAM() _q); \ + \ +/* Get number of samples processed since object was created */ \ +uint64_t SPGRAM(_get_num_samples_total)(SPGRAM() _q); \ + \ +/* Get number of transforms processed since reset */ \ +uint64_t SPGRAM(_get_num_transforms)(SPGRAM() _q); \ + \ +/* Get number of transforms processed since object was created */ \ +uint64_t 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 */ \ +/* _x : input sample */ \ +void SPGRAM(_push)(SPGRAM() _q, \ + TI _x); \ + \ +/* Write a block of samples to the object, executing internal */ \ +/* transform as necessary. */ \ +/* _q : spgram object */ \ +/* _x : input buffer [size: _n x 1] */ \ +/* _n : input buffer length */ \ +void SPGRAM(_write)(SPGRAM() _q, \ + TI * _x, \ + unsigned int _n); \ + \ +/* Compute spectral periodogram output (fft-shifted values in dB) from */ \ +/* current buffer contents */ \ +/* _q : spgram object */ \ +/* _X : output spectrum (dB), [size: _nfft x 1] */ \ +void SPGRAM(_get_psd)(SPGRAM() _q, \ + T * _X); \ + \ +/* Export stand-alone gnuplot file for plotting output spectrum, */ \ +/* returning 0 on sucess, anything other than 0 for failure */ \ +/* _q : spgram object */ \ +/* _filename : input buffer [size: _n x 1] */ \ +int SPGRAM(_export_gnuplot)(SPGRAM() _q, \ + const char * _filename); \ + \ +/* Estimate spectrum on input signal (create temporary object for */ \ +/* convenience */ \ +/* _nfft : FFT size */ \ +/* _x : input signal [size: _n x 1] */ \ +/* _n : input signal length */ \ +/* _psd : output spectrum, [size: _nfft x 1] */ \ +void SPGRAM(_estimate_psd)(unsigned int _nfft, \ + TI * _x, \ + unsigned int _n, \ + T * _psd); \ LIQUID_SPGRAM_DEFINE_API(LIQUID_SPGRAM_MANGLE_CFLOAT, float, @@ -1437,66 +1620,74 @@ LIQUID_SPGRAM_DEFINE_API(LIQUID_SPGRAM_MANGLE_FLOAT, #define LIQUID_ASGRAM_MANGLE_CFLOAT(name) LIQUID_CONCAT(asgramcf,name) #define LIQUID_ASGRAM_MANGLE_FLOAT(name) LIQUID_CONCAT(asgramf, name) -// Macro : ASGRAM -// ASGRAM : name-mangling macro -// T : primitive data type -// TC : primitive data type (complex) -// TI : primitive data type (input) -#define LIQUID_ASGRAM_DEFINE_API(ASGRAM,T,TC,TI) \ - \ -typedef struct ASGRAM(_s) * ASGRAM(); \ - \ -/* create asgram object with size _nfft */ \ -ASGRAM() ASGRAM(_create)(unsigned int _nfft); \ - \ -/* destroy asgram object */ \ -void ASGRAM(_destroy)(ASGRAM() _q); \ - \ -/* resets the internal state of the asgram object */ \ -void ASGRAM(_reset)(ASGRAM() _q); \ - \ -/* set scale and offset for spectrogram */ \ -/* _q : asgram object */ \ -/* _ref : signal reference level [dB] */ \ -/* _div : signal division [dB] */ \ -void ASGRAM(_set_scale)(ASGRAM() _q, \ - float _ref, \ - float _div); \ - \ -/* set display characters for output string */ \ -/* _q : asgram object */ \ -/* _ascii : 10-character display, default: " .,-+*&NM#" */ \ -void ASGRAM(_set_display)(ASGRAM() _q, \ - const char * _ascii); \ - \ -/* push a single sample into the asgram object */ \ -/* _q : asgram object */ \ -/* _x : input sample */ \ -void ASGRAM(_push)(ASGRAM() _q, \ - TI _x); \ - \ -/* write a block of samples to the asgram object */ \ -/* _q : asgram object */ \ -/* _x : input buffer [size: _n x 1] */ \ -/* _n : input buffer length */ \ -void ASGRAM(_write)(ASGRAM() _q, \ - TI * _x, \ - unsigned int _n); \ - \ -/* compute spectral periodogram output from current buffer */ \ -/* contents */ \ -/* _q : spgram object */ \ -/* _ascii : output ASCII string [size: _nfft x 1] */ \ -/* _peakval : peak power spectral density value [dB] */ \ -/* _peakfreq : peak power spectral density frequency */ \ -void ASGRAM(_execute)(ASGRAM() _q, \ - char * _ascii, \ - float * _peakval, \ - float * _peakfreq); \ - \ -/* compute spectral periodogram output from current buffer */ \ -/* contents and print standard format to stdout */ \ -void ASGRAM(_print)(ASGRAM() _q); \ +// Macro : ASGRAM +// ASGRAM : name-mangling macro +// T : primitive data type +// TC : primitive data type (complex) +// TI : primitive data type (input) +#define LIQUID_ASGRAM_DEFINE_API(ASGRAM,T,TC,TI) \ + \ +/* ASCII spectral periodogram for computing and displaying an estimate */ \ +/* of a signal's power spectrum with ASCII characters */ \ +typedef struct ASGRAM(_s) * ASGRAM(); \ + \ +/* Create asgram object with size _nfft */ \ +/* _nfft : size of FFT taken for each transform (character width) */ \ +ASGRAM() ASGRAM(_create)(unsigned int _nfft); \ + \ +/* Destroy asgram object, freeing all internally-allocated memory */ \ +void ASGRAM(_destroy)(ASGRAM() _q); \ + \ +/* Reset the internal state of the asgram object */ \ +void ASGRAM(_reset)(ASGRAM() _q); \ + \ +/* Set the scale and offset for spectrogram in terms of dB for display */ \ +/* purposes */ \ +/* _q : asgram object */ \ +/* _ref : signal reference level [dB] */ \ +/* _div : signal division [dB] */ \ +void ASGRAM(_set_scale)(ASGRAM() _q, \ + float _ref, \ + float _div); \ + \ +/* Set the display's 10 characters for output string starting from the */ \ +/* weakest and ending with the strongest */ \ +/* _q : asgram object */ \ +/* _ascii : 10-character display, default: " .,-+*&NM#" */ \ +void ASGRAM(_set_display)(ASGRAM() _q, \ + const char * _ascii); \ + \ +/* Push a single sample into the asgram object, executing internal */ \ +/* transform as necessary. */ \ +/* _q : asgram object */ \ +/* _x : input sample */ \ +void ASGRAM(_push)(ASGRAM() _q, \ + TI _x); \ + \ +/* Write a block of samples to the asgram object, executing internal */ \ +/* transforms as necessary. */ \ +/* _q : asgram object */ \ +/* _x : input buffer [size: _n x 1] */ \ +/* _n : input buffer length */ \ +void ASGRAM(_write)(ASGRAM() _q, \ + TI * _x, \ + unsigned int _n); \ + \ +/* Compute spectral periodogram output from current buffer contents */ \ +/* and return the ascii character string to display along with the peak */ \ +/* value and its frequency location */ \ +/* _q : asgram object */ \ +/* _ascii : output ASCII string [size: _nfft x 1] */ \ +/* _peakval : peak power spectral density value [dB] */ \ +/* _peakfreq : peak power spectral density frequency */ \ +void ASGRAM(_execute)(ASGRAM() _q, \ + char * _ascii, \ + float * _peakval, \ + float * _peakfreq); \ + \ +/* Compute spectral periodogram output from current buffer contents and */ \ +/* print standard format to stdout */ \ +void ASGRAM(_print)(ASGRAM() _q); \ LIQUID_ASGRAM_DEFINE_API(LIQUID_ASGRAM_MANGLE_CFLOAT, float, @@ -1520,59 +1711,93 @@ LIQUID_ASGRAM_DEFINE_API(LIQUID_ASGRAM_MANGLE_FLOAT, // T : primitive data type // TC : primitive data type (complex) // TI : primitive data type (input) -#define LIQUID_SPWATERFALL_DEFINE_API(SPWATERFALL,T,TC,TI) \ - \ -typedef struct SPWATERFALL(_s) * SPWATERFALL(); \ - \ -/* create spgram object */ \ -/* _nfft : FFT size */ \ -/* _wtype : window type, e.g. LIQUID_WINDOW_HAMMING */ \ -/* _window_len : window length, _window_len in [1,_nfft] */ \ -/* _delay : delay between transforms, _delay > 0 */ \ -/* _time : number of aggregated transforms, _time > 0*/ \ -SPWATERFALL() SPWATERFALL(_create)(unsigned int _nfft, \ - int _wtype, \ - unsigned int _window_len, \ - unsigned int _delay, \ - unsigned int _time); \ - \ -/* create default spgram object (Kaiser-Bessel window) */ \ -SPWATERFALL() SPWATERFALL(_create_default)(unsigned int _nfft, \ - unsigned int _time); \ - \ -/* destroy spgram object */ \ -void SPWATERFALL(_destroy)(SPWATERFALL() _q); \ - \ -/* clears the internal state of the spgram object, but not */ \ -/* the internal buffer */ \ -void SPWATERFALL(_clear)(SPWATERFALL() _q); \ - \ -/* reset the spgram object to its original state completely */ \ -void SPWATERFALL(_reset)(SPWATERFALL() _q); \ - \ -/* print internal state of the spgram object */ \ -void SPWATERFALL(_print)(SPWATERFALL() _q); \ - \ -/* push a single sample into the spgram object */ \ -/* _q : spgram object */ \ -/* _x : input sample */ \ -void SPWATERFALL(_push)(SPWATERFALL() _q, \ - TI _x); \ - \ -/* write a block of samples to the spgram object */ \ -/* _q : spgram object */ \ -/* _x : input buffer [size: _n x 1] */ \ -/* _n : input buffer length */ \ -void SPWATERFALL(_write)(SPWATERFALL() _q, \ - TI * _x, \ - unsigned int _n); \ - \ -/* export files for plotting */ \ -/* _q : spgram object */ \ -/* _filename_base : base filename (will export files with */ \ -/* .gnu, .bin, and .png extensions) */ \ -int SPWATERFALL(_export)(SPWATERFALL() _q, \ - const char * _filename_base); \ +#define LIQUID_SPWATERFALL_DEFINE_API(SPWATERFALL,T,TC,TI) \ + \ +/* Spectral periodogram waterfall object for computing time-varying */ \ +/* power spectral density estimates */ \ +typedef struct SPWATERFALL(_s) * SPWATERFALL(); \ + \ +/* Create spwaterfall object, fully defined */ \ +/* _nfft : transform (FFT) size, _nfft >= 2 */ \ +/* _wtype : window type, e.g. LIQUID_WINDOW_HAMMING */ \ +/* _window_len : window length, 1 <= _window_len <= _nfft */ \ +/* _delay : delay between transforms, _delay > 0 */ \ +/* _time : number of aggregated transforms, _time > 0 */ \ +SPWATERFALL() SPWATERFALL(_create)(unsigned int _nfft, \ + int _wtype, \ + unsigned int _window_len, \ + unsigned int _delay, \ + unsigned int _time); \ + \ +/* Create default spwatefall object (Kaiser-Bessel window) */ \ +/* _nfft : transform size, _nfft >= 2 */ \ +/* _time : delay between transforms, _delay > 0 */ \ +SPWATERFALL() SPWATERFALL(_create_default)(unsigned int _nfft, \ + unsigned int _time); \ + \ +/* Destroy spwaterfall object, freeing all internally-allocated memory */ \ +void SPWATERFALL(_destroy)(SPWATERFALL() _q); \ + \ +/* Clears the internal state of the object, but not the internal buffer */ \ +void SPWATERFALL(_clear)(SPWATERFALL() _q); \ + \ +/* Reset the object to its original state completely. This effectively */ \ +/* executes the clear() method and then resets the internal buffer */ \ +void SPWATERFALL(_reset)(SPWATERFALL() _q); \ + \ +/* Print internal state of the object to stdout */ \ +void SPWATERFALL(_print)(SPWATERFALL() _q); \ + \ +/* Set the center frequency of the received signal. */ \ +/* This is for display purposes only when generating the output image. */ \ +/* _q : spectral periodogram waterfall object */ \ +/* _freq : center frequency [Hz] */ \ +int SPWATERFALL(_set_freq)(SPWATERFALL() _q, \ + float _freq); \ + \ +/* Set the sample rate (frequency) of the received signal. */ \ +/* This is for display purposes only when generating the output image. */ \ +/* _q : spectral periodogram waterfall object */ \ +/* _rate : sample rate [Hz] */ \ +int SPWATERFALL(_set_rate)(SPWATERFALL() _q, \ + float _rate); \ + \ +/* Set the canvas size. */ \ +/* This is for display purposes only when generating the output image. */ \ +/* _q : spectral periodogram waterfall object */ \ +/* _width : image width [pixels] */ \ +/* _height : image height [pixels] */ \ +int SPWATERFALL(_set_dims)(SPWATERFALL() _q, \ + unsigned int _width, \ + unsigned int _height); \ + \ +/* Set commands for executing directly before 'plot' statement. */ \ +/* _q : spectral periodogram waterfall object */ \ +/* _commands : gnuplot commands separated by semicolons */ \ +int SPWATERFALL(_set_commands)(SPWATERFALL() _q, \ + const char * _commands); \ + \ +/* Push a single sample into the object, executing internal transform */ \ +/* as necessary. */ \ +/* _q : spwaterfall object */ \ +/* _x : input sample */ \ +void SPWATERFALL(_push)(SPWATERFALL() _q, \ + TI _x); \ + \ +/* Write a block of samples to the object, executing internal */ \ +/* transform as necessary. */ \ +/* _q : spwaterfall object */ \ +/* _x : input buffer, [size: _n x 1] */ \ +/* _n : input buffer length */ \ +void SPWATERFALL(_write)(SPWATERFALL() _q, \ + TI * _x, \ + unsigned int _n); \ + \ +/* Export set of files for plotting */ \ +/* _q : spwaterfall object */ \ +/* _base : base filename (will export .gnu, .bin, and .png files) */ \ +int SPWATERFALL(_export)(SPWATERFALL() _q, \ + const char * _base); \ LIQUID_SPWATERFALL_DEFINE_API(LIQUID_SPWATERFALL_MANGLE_CFLOAT, @@ -2137,46 +2362,60 @@ void liquid_levinson(float * _r, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_AUTOCORR_DEFINE_API(AUTOCORR,TO,TC,TI) \ - \ -typedef struct AUTOCORR(_s) * AUTOCORR(); \ - \ -/* create auto-correlator object */ \ -/* _window_size : size of the correlator window */ \ -/* _delay : correlator delay [samples] */ \ -AUTOCORR() AUTOCORR(_create)(unsigned int _window_size, \ - unsigned int _delay); \ - \ -/* destroy auto-correlator object, freeing internal memory */ \ -void AUTOCORR(_destroy)(AUTOCORR() _q); \ - \ -/* reset auto-correlator object's internals */ \ -void AUTOCORR(_reset)(AUTOCORR() _q); \ - \ -/* print auto-correlator parameters to stdout */ \ -void AUTOCORR(_print)(AUTOCORR() _q); \ - \ -/* push sample into auto-correlator object */ \ -void AUTOCORR(_push)(AUTOCORR() _q, \ - TI _x); \ - \ -/* compute single auto-correlation output */ \ -void AUTOCORR(_execute)(AUTOCORR() _q, \ - TO * _rxx); \ - \ -/* compute auto-correlation on block of samples; the input */ \ -/* and output arrays may have the same pointer */ \ -/* _q : auto-correlation object */ \ -/* _x : input array [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -/* _rxx : input array [size: _n x 1] */ \ -void AUTOCORR(_execute_block)(AUTOCORR() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _rxx); \ - \ -/* return sum of squares of buffered samples */ \ -float AUTOCORR(_get_energy)(AUTOCORR() _q); \ +#define LIQUID_AUTOCORR_DEFINE_API(AUTOCORR,TO,TC,TI) \ + \ +/* Computes auto-correlation with a fixed lag on input signals */ \ +typedef struct AUTOCORR(_s) * AUTOCORR(); \ + \ +/* Create auto-correlator object with a particular window length and */ \ +/* delay */ \ +/* _window_size : size of the correlator window */ \ +/* _delay : correlator delay [samples] */ \ +AUTOCORR() AUTOCORR(_create)(unsigned int _window_size, \ + unsigned int _delay); \ + \ +/* Destroy auto-correlator object, freeing internal memory */ \ +void AUTOCORR(_destroy)(AUTOCORR() _q); \ + \ +/* Reset auto-correlator object's internals */ \ +void AUTOCORR(_reset)(AUTOCORR() _q); \ + \ +/* Print auto-correlator parameters to stdout */ \ +void AUTOCORR(_print)(AUTOCORR() _q); \ + \ +/* Push sample into auto-correlator object */ \ +/* _q : auto-correlator object */ \ +/* _x : single input sample */ \ +void AUTOCORR(_push)(AUTOCORR() _q, \ + TI _x); \ + \ +/* Write block of samples to auto-correlator object */ \ +/* _q : auto-correlation object */ \ +/* _x : input array [size: _n x 1] */ \ +/* _n : number of input samples */ \ +void AUTOCORR(_write)(AUTOCORR() _q, \ + TI * _x, \ + unsigned int _n); \ + \ +/* Compute single auto-correlation output */ \ +/* _q : auto-correlator object */ \ +/* _rxx : auto-correlated output */ \ +void AUTOCORR(_execute)(AUTOCORR() _q, \ + TO * _rxx); \ + \ +/* Compute auto-correlation on block of samples; the input and output */ \ +/* arrays may have the same pointer */ \ +/* _q : auto-correlation object */ \ +/* _x : input array [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +/* _rxx : input array [size: _n x 1] */ \ +void AUTOCORR(_execute_block)(AUTOCORR() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _rxx); \ + \ +/* return sum of squares of buffered samples */ \ +float AUTOCORR(_get_energy)(AUTOCORR() _q); \ LIQUID_AUTOCORR_DEFINE_API(LIQUID_AUTOCORR_MANGLE_CCCF, liquid_float_complex, @@ -2198,100 +2437,130 @@ LIQUID_AUTOCORR_DEFINE_API(LIQUID_AUTOCORR_MANGLE_RRRF, #define LIQUID_FIRFILT_MANGLE_CCCF(name) LIQUID_CONCAT(firfilt_cccf,name) // Macro: -// FIRFILT : name-mangling macro +// FIRFILT : name-mangling macro // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_FIRFILT_DEFINE_API(FIRFILT,TO,TC,TI) \ -typedef struct FIRFILT(_s) * FIRFILT(); \ - \ -FIRFILT() FIRFILT(_create)(TC * _h, unsigned int _n); \ - \ -/* create using Kaiser-Bessel windowed sinc method */ \ -/* _n : filter length, _n > 0 */ \ -/* _fc : filter cut-off frequency 0 < _fc < 0.5 */ \ -/* _As : filter stop-band attenuation [dB], _As > 0 */ \ -/* _mu : fractional sample offset, -0.5 < _mu < 0.5 */ \ -FIRFILT() FIRFILT(_create_kaiser)(unsigned int _n, \ - float _fc, \ - float _As, \ - float _mu); \ - \ -/* create from square-root Nyquist prototype */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ -/* _k : nominal samples/symbol, _k > 1 */ \ -/* _m : filter delay [symbols], _m > 0 */ \ -/* _beta : rolloff factor, 0 < beta <= 1 */ \ -/* _mu : fractional sample offset,-0.5 < _mu < 0.5 */ \ -FIRFILT() FIRFILT(_create_rnyquist)(int _type, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - float _mu); \ - \ -/* create rectangular filter prototype */ \ -FIRFILT() FIRFILT(_create_rect)(unsigned int _n); \ - \ -/* re-create filter */ \ -/* _q : original filter object */ \ -/* _h : pointer to filter coefficients [size: _n x 1] */ \ -/* _n : filter length, _n > 0 */ \ -FIRFILT() FIRFILT(_recreate)(FIRFILT() _q, \ - TC * _h, \ - unsigned int _n); \ - \ -/* destroy filter object and free all internal memory */ \ -void FIRFILT(_destroy)(FIRFILT() _q); \ - \ -/* reset filter object's internal buffer */ \ -void FIRFILT(_reset)(FIRFILT() _q); \ - \ -/* print filter object information */ \ -void FIRFILT(_print)(FIRFILT() _q); \ - \ -/* set output scaling for filter */ \ -void FIRFILT(_set_scale)(FIRFILT() _q, \ - TC _scale); \ - \ -/* push sample into filter object's internal buffer */ \ -/* _q : filter object */ \ -/* _x : single input sample */ \ -void FIRFILT(_push)(FIRFILT() _q, \ - TI _x); \ - \ -/* execute the filter on internal buffer and coefficients */ \ -/* _q : filter object */ \ -/* _y : pointer to single output sample */ \ -void FIRFILT(_execute)(FIRFILT() _q, \ - TO * _y); \ - \ -/* execute the filter on a block of input samples; the */ \ -/* input and output buffers may be the same */ \ -/* _q : filter object */ \ -/* _x : pointer to input array [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -/* _y : pointer to output array [size: _n x 1] */ \ -void FIRFILT(_execute_block)(FIRFILT() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ - \ -/* return length of filter object */ \ -unsigned int FIRFILT(_get_length)(FIRFILT() _q); \ - \ -/* compute complex frequency response of filter object */ \ -/* _q : filter object */ \ -/* _fc : frequency to evaluate */ \ -/* _H : pointer to output complex frequency response */ \ -void FIRFILT(_freqresponse)(FIRFILT() _q, \ - float _fc, \ - liquid_float_complex * _H); \ - \ -/* compute and return group delay of filter object */ \ -/* _q : filter object */ \ -/* _fc : frequency to evaluate */ \ -float FIRFILT(_groupdelay)(FIRFILT() _q, \ - float _fc); \ +#define LIQUID_FIRFILT_DEFINE_API(FIRFILT,TO,TC,TI) \ + \ +/* Finite impulse response (FIR) filter */ \ +typedef struct FIRFILT(_s) * FIRFILT(); \ + \ +/* Create a finite impulse response filter (firfilt) object by directly */ \ +/* specifying the filter coefficients in an array */ \ +/* _h : filter coefficients [size: _n x 1] */ \ +/* _n : number of filter coefficients, _n > 0 */ \ +FIRFILT() FIRFILT(_create)(TC * _h, \ + unsigned int _n); \ + \ +/* Create object using Kaiser-Bessel windowed sinc method */ \ +/* _n : filter length, _n > 0 */ \ +/* _fc : filter normalized cut-off frequency, 0 < _fc < 0.5 */ \ +/* _As : filter stop-band attenuation [dB], _As > 0 */ \ +/* _mu : fractional sample offset, -0.5 < _mu < 0.5 */ \ +FIRFILT() FIRFILT(_create_kaiser)(unsigned int _n, \ + float _fc, \ + float _As, \ + float _mu); \ + \ +/* 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) */ \ +/* _k : nominal samples per symbol, _k > 1 */ \ +/* _m : filter delay [symbols], _m > 0 */ \ +/* _beta : rolloff factor, 0 < beta <= 1 */ \ +/* _mu : fractional sample offset [samples], -0.5 < _mu < 0.5 */ \ +FIRFILT() FIRFILT(_create_rnyquist)(int _type, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta, \ + float _mu); \ + \ +/* Create rectangular filter prototype; that is */ \ +/* \( \vec{h} = \{ 1, 1, 1, \ldots 1 \} \) */ \ +/* _n : length of filter [samples], 0 < _n <= 1024 */ \ +FIRFILT() FIRFILT(_create_rect)(unsigned int _n); \ + \ +/* Re-create filter object of potentially a different length with */ \ +/* different coefficients. If the length of the filter does not change, */ \ +/* not memory reallocation is invoked. */ \ +/* _q : original filter object */ \ +/* _h : pointer to filter coefficients, [size: _n x 1] */ \ +/* _n : filter length, _n > 0 */ \ +FIRFILT() FIRFILT(_recreate)(FIRFILT() _q, \ + TC * _h, \ + unsigned int _n); \ + \ +/* Destroy filter object and free all internal memory */ \ +void FIRFILT(_destroy)(FIRFILT() _q); \ + \ +/* Reset filter object's internal buffer */ \ +void FIRFILT(_reset)(FIRFILT() _q); \ + \ +/* Print filter object information to stdout */ \ +void FIRFILT(_print)(FIRFILT() _q); \ + \ +/* Set output scaling for filter */ \ +/* _q : filter object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void FIRFILT(_set_scale)(FIRFILT() _q, \ + TC _scale); \ + \ +/* Get output scaling for filter */ \ +/* _q : filter object */ \ +/* _scale : scaling factor applied to each output sample */ \ +void FIRFILT(_get_scale)(FIRFILT() _q, \ + TC * _scale); \ + \ +/* Push sample into filter object's internal buffer */ \ +/* _q : filter object */ \ +/* _x : single input sample */ \ +void FIRFILT(_push)(FIRFILT() _q, \ + TI _x); \ + \ +/* Write block of samples into filter object's internal buffer */ \ +/* _q : filter object */ \ +/* _x : buffer of input samples, [size: _n x 1] */ \ +/* _n : number of input samples */ \ +void FIRFILT(_write)(FIRFILT() _q, \ + TI * _x, \ + unsigned int _n); \ + \ +/* Execute vector dot product on the filter's internal buffer and */ \ +/* coefficients */ \ +/* _q : filter object */ \ +/* _y : pointer to single output sample */ \ +void FIRFILT(_execute)(FIRFILT() _q, \ + TO * _y); \ + \ +/* Execute the filter on a block of input samples; in-place operation */ \ +/* is permitted (_x and _y may point to the same place in memory) */ \ +/* _q : filter object */ \ +/* _x : pointer to input array, [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +/* _y : pointer to output array, [size: _n x 1] */ \ +void FIRFILT(_execute_block)(FIRFILT() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* Get length of filter object (number of internal coefficients) */ \ +unsigned int FIRFILT(_get_length)(FIRFILT() _q); \ + \ +/* Compute complex frequency response of filter object */ \ +/* _q : filter object */ \ +/* _fc : normalized frequency for evaluation */ \ +/* _H : pointer to output complex frequency response */ \ +void FIRFILT(_freqresponse)(FIRFILT() _q, \ + float _fc, \ + liquid_float_complex * _H); \ + \ +/* Compute and return group delay of filter object */ \ +/* _q : filter object */ \ +/* _fc : frequency to evaluate */ \ +float FIRFILT(_groupdelay)(FIRFILT() _q, \ + float _fc); \ LIQUID_FIRFILT_DEFINE_API(LIQUID_FIRFILT_MANGLE_RRRF, float, @@ -2320,82 +2589,189 @@ LIQUID_FIRFILT_DEFINE_API(LIQUID_FIRFILT_MANGLE_CCCF, // NOTES: // Although firhilb is a placeholder for both decimation and // interpolation, separate objects should be used for each task. -#define LIQUID_FIRHILB_DEFINE_API(FIRHILB,T,TC) \ -typedef struct FIRHILB(_s) * FIRHILB(); \ - \ -/* create finite impulse reponse Hilbert transform */ \ -/* _m : filter semi-length, delay is 2*m+1 */ \ -/* _As : filter stop-band attenuation [dB] */ \ -FIRHILB() FIRHILB(_create)(unsigned int _m, \ - float _As); \ - \ -/* destroy finite impulse reponse Hilbert transform */ \ -void FIRHILB(_destroy)(FIRHILB() _q); \ - \ -/* print firhilb object internals to stdout */ \ -void FIRHILB(_print)(FIRHILB() _q); \ - \ -/* reset firhilb object internal state */ \ -void FIRHILB(_reset)(FIRHILB() _q); \ - \ -/* execute Hilbert transform (real to complex) */ \ -/* _q : Hilbert transform object */ \ -/* _x : real-valued input sample */ \ -/* _y : complex-valued output sample */ \ -void FIRHILB(_r2c_execute)(FIRHILB() _q, \ - T _x, \ - TC * _y); \ - \ -/* execute Hilbert transform (complex to real) */ \ -/* _q : Hilbert transform object */ \ -/* _x : complex-valued input sample */ \ -/* _y : real-valued output sample */ \ -void FIRHILB(_c2r_execute)(FIRHILB() _q, \ - TC _x, \ - T * _y); \ - \ -/* execute Hilbert transform decimator (real to complex) */ \ -/* _q : Hilbert transform object */ \ -/* _x : real-valued input array [size: 2 x 1] */ \ -/* _y : complex-valued output sample */ \ -void FIRHILB(_decim_execute)(FIRHILB() _q, \ - T * _x, \ - TC * _y); \ - \ -/* execute Hilbert transform decimator (real to complex) on */ \ -/* a block of samples */ \ -/* _q : Hilbert transform object */ \ -/* _x : real-valued input array [size: 2*_n x 1] */ \ -/* _n : number of *output* samples */ \ -/* _y : complex-valued output array [size: _n x 1] */ \ -void FIRHILB(_decim_execute_block)(FIRHILB() _q, \ - T * _x, \ - unsigned int _n, \ - TC * _y); \ - \ -/* execute Hilbert transform interpolator (real to complex) */ \ -/* _q : Hilbert transform object */ \ -/* _x : complex-valued input sample */ \ -/* _y : real-valued output array [size: 2 x 1] */ \ -void FIRHILB(_interp_execute)(FIRHILB() _q, \ - TC _x, \ - T * _y); \ - \ -/* execute Hilbert transform interpolator (complex to real) */ \ -/* on a block of samples */ \ -/* _q : Hilbert transform object */ \ -/* _x : complex-valued input array [size: _n x 1] */ \ -/* _n : number of *input* samples */ \ -/* _y : real-valued output array [size: 2*_n x 1] */ \ -void FIRHILB(_interp_execute_block)(FIRHILB() _q, \ - TC * _x, \ - unsigned int _n, \ - T * _y); \ +#define LIQUID_FIRHILB_DEFINE_API(FIRHILB,T,TC) \ + \ +/* Finite impulse response (FIR) Hilbert transform */ \ +typedef struct FIRHILB(_s) * FIRHILB(); \ + \ +/* Create a firhilb object with a particular filter semi-length and */ \ +/* desired stop-band attenuation. */ \ +/* Internally the object designs a half-band filter based on applying */ \ +/* a Kaiser-Bessel window to a sinc function to guarantee zeros at all */ \ +/* off-center odd indexed samples. */ \ +/* _m : filter semi-length, delay is \( 2 m + 1 \) */ \ +/* _As : filter stop-band attenuation [dB] */ \ +FIRHILB() FIRHILB(_create)(unsigned int _m, \ + float _As); \ + \ +/* Destroy finite impulse response Hilbert transform, freeing all */ \ +/* internally-allocted memory and objects. */ \ +void FIRHILB(_destroy)(FIRHILB() _q); \ + \ +/* Print firhilb object internals to stdout */ \ +void FIRHILB(_print)(FIRHILB() _q); \ + \ +/* Reset firhilb object internal state */ \ +void FIRHILB(_reset)(FIRHILB() _q); \ + \ +/* Execute Hilbert transform (real to complex) */ \ +/* _q : Hilbert transform object */ \ +/* _x : real-valued input sample */ \ +/* _y : complex-valued output sample */ \ +void FIRHILB(_r2c_execute)(FIRHILB() _q, \ + T _x, \ + TC * _y); \ + \ +/* Execute Hilbert transform (complex to real) */ \ +/* _q : Hilbert transform object */ \ +/* _x : complex-valued input sample */ \ +/* _y : real-valued output sample */ \ +void FIRHILB(_c2r_execute)(FIRHILB() _q, \ + TC _x, \ + T * _y); \ + \ +/* Execute Hilbert transform decimator (real to complex) */ \ +/* _q : Hilbert transform object */ \ +/* _x : real-valued input array, [size: 2 x 1] */ \ +/* _y : complex-valued output sample */ \ +void FIRHILB(_decim_execute)(FIRHILB() _q, \ + T * _x, \ + TC * _y); \ + \ +/* Execute Hilbert transform decimator (real to complex) on a block of */ \ +/* samples */ \ +/* _q : Hilbert transform object */ \ +/* _x : real-valued input array, [size: 2*_n x 1] */ \ +/* _n : number of output samples */ \ +/* _y : complex-valued output array, [size: _n x 1] */ \ +void FIRHILB(_decim_execute_block)(FIRHILB() _q, \ + T * _x, \ + unsigned int _n, \ + TC * _y); \ + \ +/* Execute Hilbert transform interpolator (real to complex) */ \ +/* _q : Hilbert transform object */ \ +/* _x : complex-valued input sample */ \ +/* _y : real-valued output array, [size: 2 x 1] */ \ +void FIRHILB(_interp_execute)(FIRHILB() _q, \ + TC _x, \ + T * _y); \ + \ +/* Execute Hilbert transform interpolator (complex to real) on a block */ \ +/* of samples */ \ +/* _q : Hilbert transform object */ \ +/* _x : complex-valued input array, [size: _n x 1] */ \ +/* _n : number of *input* samples */ \ +/* _y : real-valued output array, [size: 2*_n x 1] */ \ +void FIRHILB(_interp_execute_block)(FIRHILB() _q, \ + TC * _x, \ + unsigned int _n, \ + T * _y); \ LIQUID_FIRHILB_DEFINE_API(LIQUID_FIRHILB_MANGLE_FLOAT, float, liquid_float_complex) //LIQUID_FIRHILB_DEFINE_API(LIQUID_FIRHILB_MANGLE_DOUBLE, double, liquid_double_complex) +// +// Infinite impulse response (IIR) Hilbert transform +// 2:1 real-to-complex decimator +// 1:2 complex-to-real interpolator +// + +#define LIQUID_IIRHILB_MANGLE_FLOAT(name) LIQUID_CONCAT(iirhilbf, name) +//#define LIQUID_IIRHILB_MANGLE_DOUBLE(name) LIQUID_CONCAT(iirhilb, name) + +// NOTES: +// Although iirhilb is a placeholder for both decimation and +// interpolation, separate objects should be used for each task. +#define LIQUID_IIRHILB_DEFINE_API(IIRHILB,T,TC) \ + \ +/* Infinite impulse response (IIR) Hilbert transform */ \ +typedef struct IIRHILB(_s) * IIRHILB(); \ + \ +/* Create a iirhilb object with a particular filter type, order, and */ \ +/* desired pass- and stop-band attenuation. */ \ +/* _ftype : filter type (e.g. LIQUID_IIRDES_BUTTER) */ \ +/* _n : filter order, _n > 0 */ \ +/* _Ap : pass-band ripple [dB], _Ap > 0 */ \ +/* _As : stop-band ripple [dB], _Ap > 0 */ \ +IIRHILB() IIRHILB(_create)(liquid_iirdes_filtertype _ftype, \ + unsigned int _n, \ + float _Ap, \ + float _As); \ + \ +/* Create a default iirhilb object with a particular filter order. */ \ +/* _n : filter order, _n > 0 */ \ +IIRHILB() IIRHILB(_create_default)(unsigned int _n); \ + \ +/* Destroy finite impulse response Hilbert transform, freeing all */ \ +/* internally-allocted memory and objects. */ \ +void IIRHILB(_destroy)(IIRHILB() _q); \ + \ +/* Print iirhilb object internals to stdout */ \ +void IIRHILB(_print)(IIRHILB() _q); \ + \ +/* Reset iirhilb object internal state */ \ +void IIRHILB(_reset)(IIRHILB() _q); \ + \ +/* Execute Hilbert transform (real to complex) */ \ +/* _q : Hilbert transform object */ \ +/* _x : real-valued input sample */ \ +/* _y : complex-valued output sample */ \ +void IIRHILB(_r2c_execute)(IIRHILB() _q, \ + T _x, \ + TC * _y); \ + \ +/* Execute Hilbert transform (complex to real) */ \ +/* _q : Hilbert transform object */ \ +/* _x : complex-valued input sample */ \ +/* _y : real-valued output sample */ \ +void IIRHILB(_c2r_execute)(IIRHILB() _q, \ + TC _x, \ + T * _y); \ + \ +/* Execute Hilbert transform decimator (real to complex) */ \ +/* _q : Hilbert transform object */ \ +/* _x : real-valued input array, [size: 2 x 1] */ \ +/* _y : complex-valued output sample */ \ +void IIRHILB(_decim_execute)(IIRHILB() _q, \ + T * _x, \ + TC * _y); \ + \ +/* Execute Hilbert transform decimator (real to complex) on a block of */ \ +/* samples */ \ +/* _q : Hilbert transform object */ \ +/* _x : real-valued input array, [size: 2*_n x 1] */ \ +/* _n : number of output samples */ \ +/* _y : complex-valued output array, [size: _n x 1] */ \ +void IIRHILB(_decim_execute_block)(IIRHILB() _q, \ + T * _x, \ + unsigned int _n, \ + TC * _y); \ + \ +/* Execute Hilbert transform interpolator (real to complex) */ \ +/* _q : Hilbert transform object */ \ +/* _x : complex-valued input sample */ \ +/* _y : real-valued output array, [size: 2 x 1] */ \ +void IIRHILB(_interp_execute)(IIRHILB() _q, \ + TC _x, \ + T * _y); \ + \ +/* Execute Hilbert transform interpolator (complex to real) on a block */ \ +/* of samples */ \ +/* _q : Hilbert transform object */ \ +/* _x : complex-valued input array, [size: _n x 1] */ \ +/* _n : number of *input* samples */ \ +/* _y : real-valued output array, [size: 2*_n x 1] */ \ +void IIRHILB(_interp_execute_block)(IIRHILB() _q, \ + TC * _x, \ + unsigned int _n, \ + T * _y); \ + +LIQUID_IIRHILB_DEFINE_API(LIQUID_IIRHILB_MANGLE_FLOAT, float, liquid_float_complex) +//LIQUID_IIRHILB_DEFINE_API(LIQUID_IIRHILB_MANGLE_DOUBLE, double, liquid_double_complex) + + // // FFT-based finite impulse response filter // @@ -2409,40 +2785,48 @@ LIQUID_FIRHILB_DEFINE_API(LIQUID_FIRHILB_MANGLE_FLOAT, float, liquid_float_compl // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_FFTFILT_DEFINE_API(FFTFILT,TO,TC,TI) \ -typedef struct FFTFILT(_s) * FFTFILT(); \ - \ -/* create FFT-based FIR filter using external coefficients */ \ -/* _h : filter coefficients [size: _h_len x 1] */ \ -/* _h_len : filter length, _h_len > 0 */ \ -/* _n : block size = nfft/2, at least _h_len-1 */ \ -FFTFILT() FFTFILT(_create)(TC * _h, \ - unsigned int _h_len, \ - unsigned int _n); \ - \ -/* destroy filter object and free all internal memory */ \ -void FFTFILT(_destroy)(FFTFILT() _q); \ - \ -/* reset filter object's internal buffer */ \ -void FFTFILT(_reset)(FFTFILT() _q); \ - \ -/* print filter object information */ \ -void FFTFILT(_print)(FFTFILT() _q); \ - \ -/* set output scaling for filter */ \ -void FFTFILT(_set_scale)(FFTFILT() _q, \ - TC _scale); \ - \ -/* execute the filter on internal buffer and coefficients */ \ -/* _q : filter object */ \ -/* _x : pointer to input data array [size: _n x 1] */ \ -/* _y : pointer to output data array [size: _n x 1] */ \ -void FFTFILT(_execute)(FFTFILT() _q, \ - TI * _x, \ - TO * _y); \ - \ -/* return length of filter object's internal coefficients */ \ -unsigned int FFTFILT(_get_length)(FFTFILT() _q); \ +#define LIQUID_FFTFILT_DEFINE_API(FFTFILT,TO,TC,TI) \ + \ +/* Fast Fourier transform (FFT) finite impulse response filter */ \ +typedef struct FFTFILT(_s) * FFTFILT(); \ + \ +/* Create FFT-based FIR filter using external coefficients */ \ +/* _h : filter coefficients, [size: _h_len x 1] */ \ +/* _h_len : filter length, _h_len > 0 */ \ +/* _n : block size = nfft/2, _n >= _h_len-1 */ \ +FFTFILT() FFTFILT(_create)(TC * _h, \ + unsigned int _h_len, \ + unsigned int _n); \ + \ +/* Destroy filter object and free all internal memory */ \ +void FFTFILT(_destroy)(FFTFILT() _q); \ + \ +/* Reset filter object's internal buffer */ \ +void FFTFILT(_reset)(FFTFILT() _q); \ + \ +/* Print filter object information to stdout */ \ +void FFTFILT(_print)(FFTFILT() _q); \ + \ +/* Set output scaling for filter */ \ +void FFTFILT(_set_scale)(FFTFILT() _q, \ + TC _scale); \ + \ +/* Get output scaling for filter */ \ +void FFTFILT(_get_scale)(FFTFILT() _q, \ + TC * _scale); \ + \ +/* Execute the filter on internal buffer and coefficients given a block */ \ +/* of input samples; in-place operation is permitted (_x and _y may */ \ +/* point to the same place in memory) */ \ +/* _q : filter object */ \ +/* _x : pointer to input data array, [size: _n x 1] */ \ +/* _y : pointer to output data array, [size: _n x 1] */ \ +void FFTFILT(_execute)(FFTFILT() _q, \ + TI * _x, \ + TO * _y); \ + \ +/* Get length of filter object's internal coefficients */ \ +unsigned int FFTFILT(_get_length)(FFTFILT() _q); \ LIQUID_FFTFILT_DEFINE_API(LIQUID_FFTFILT_MANGLE_RRRF, float, @@ -2473,113 +2857,128 @@ LIQUID_FFTFILT_DEFINE_API(LIQUID_FFTFILT_MANGLE_CCCF, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_IIRFILT_DEFINE_API(IIRFILT,TO,TC,TI) \ - \ -typedef struct IIRFILT(_s) * IIRFILT(); \ - \ -/* create infinite impulse reponse filter */ \ -/* _b : feed-forward coefficients [size: _nb x 1] */ \ -/* _nb : number of feed-forward coefficients */ \ -/* _a : feed-back coefficients [size: _na x 1] */ \ -/* _na : number of feed-back coefficients */ \ -IIRFILT() IIRFILT(_create)(TC * _b, \ - unsigned int _nb, \ - TC * _a, \ - unsigned int _na); \ - \ -/* create IIR filter using 2nd-order secitons */ \ -/* _B : feed-forward coefficients [size: _nsos x 3] */ \ -/* _A : feed-back coefficients [size: _nsos x 3] */ \ -IIRFILT() IIRFILT(_create_sos)(TC * _B, \ - TC * _A, \ - unsigned int _nsos); \ - \ -/* create IIR filter from design template */ \ -/* _ftype : filter type (e.g. LIQUID_IIRDES_BUTTER) */ \ -/* _btype : band type (e.g. LIQUID_IIRDES_BANDPASS) */ \ -/* _format : coefficients format (e.g. LIQUID_IIRDES_SOS) */ \ -/* _order : filter order */ \ -/* _fc : low-pass prototype cut-off frequency */ \ -/* _f0 : center frequency (band-pass, band-stop) */ \ -/* _Ap : pass-band ripple in dB */ \ -/* _As : stop-band ripple in dB */ \ -IIRFILT() IIRFILT(_create_prototype)( \ - liquid_iirdes_filtertype _ftype, \ - liquid_iirdes_bandtype _btype, \ - liquid_iirdes_format _format, \ - unsigned int _order, \ - float _fc, \ - float _f0, \ - float _Ap, \ - float _As); \ - \ -/* create simplified low-pass Butterworth IIR filter */ \ -/* _order : filter order */ \ -/* _fc : low-pass prototype cut-off frequency */ \ -IIRFILT() IIRFILT(_create_lowpass)( \ - unsigned int _order, \ - float _fc); \ - \ -/* create 8th-order integrator filter */ \ -IIRFILT() IIRFILT(_create_integrator)(); \ - \ -/* create 8th-order differentiator filter */ \ -IIRFILT() IIRFILT(_create_differentiator)(); \ - \ -/* create simple DC-blocking filter */ \ -IIRFILT() IIRFILT(_create_dc_blocker)(float _alpha); \ - \ -/* create phase-locked loop iirfilt object */ \ -/* _w : filter bandwidth */ \ -/* _zeta : damping factor (1/sqrt(2) suggested) */ \ -/* _K : loop gain (1000 suggested) */ \ -IIRFILT() IIRFILT(_create_pll)(float _w, \ - float _zeta, \ - float _K); \ - \ -/* destroy iirfilt object, freeing all internal memory */ \ -void IIRFILT(_destroy)(IIRFILT() _q); \ - \ -/* print iirfilt object properties to stdout */ \ -void IIRFILT(_print)(IIRFILT() _q); \ - \ -/* clear/reset iirfilt object internals */ \ -void IIRFILT(_reset)(IIRFILT() _q); \ - \ -/* compute filter output */ \ -/* _q : iirfilt object */ \ -/* _x : input sample */ \ -/* _y : output sample pointer */ \ -void IIRFILT(_execute)(IIRFILT() _q, \ - TI _x, \ - TO * _y); \ - \ -/* execute the filter on a block of input samples; the */ \ -/* input and output buffers may be the same */ \ -/* _q : filter object */ \ -/* _x : pointer to input array [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -/* _y : pointer to output array [size: _n x 1] */ \ -void IIRFILT(_execute_block)(IIRFILT() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ - \ -/* return iirfilt object's filter length (order + 1) */ \ -unsigned int IIRFILT(_get_length)(IIRFILT() _q); \ - \ -/* compute complex frequency response of filter object */ \ -/* _q : filter object */ \ -/* _fc : frequency to evaluate */ \ -/* _H : pointer to output complex frequency response */ \ -void IIRFILT(_freqresponse)(IIRFILT() _q, \ - float _fc, \ - liquid_float_complex * _H); \ - \ -/* compute and return group delay of filter object */ \ -/* _q : filter object */ \ -/* _fc : frequency to evaluate */ \ -float IIRFILT(_groupdelay)(IIRFILT() _q, float _fc); \ +#define LIQUID_IIRFILT_DEFINE_API(IIRFILT,TO,TC,TI) \ + \ +/* Infinite impulse response (IIR) filter */ \ +typedef struct IIRFILT(_s) * IIRFILT(); \ + \ +/* Create infinite impulse response filter from external coefficients. */ \ +/* Note that the number of feed-forward and feed-back coefficients do */ \ +/* not need to be equal, but they do need to be non-zero. */ \ +/* Furthermore, the first feed-back coefficient \(a_0\) cannot be */ \ +/* equal to zero, otherwise the filter will be invalid as this value is */ \ +/* factored out from all coefficients. */ \ +/* For stability reasons the number of coefficients should reasonably */ \ +/* not exceed about 8 for single-precision floating-point. */ \ +/* _b : feed-forward coefficients (numerator), [size: _nb x 1] */ \ +/* _nb : number of feed-forward coefficients, _nb > 0 */ \ +/* _a : feed-back coefficients (denominator), [size: _na x 1] */ \ +/* _na : number of feed-back coefficients, _na > 0 */ \ +IIRFILT() IIRFILT(_create)(TC * _b, \ + unsigned int _nb, \ + TC * _a, \ + unsigned int _na); \ + \ +/* Create IIR filter using 2nd-order secitons from external */ \ +/* coefficients. */ \ +/* _B : feed-forward coefficients [size: _nsos x 3] */ \ +/* _A : feed-back coefficients [size: _nsos x 3] */ \ +/* _nsos : number of second-order sections (sos), _nsos > 0 */ \ +IIRFILT() IIRFILT(_create_sos)(TC * _B, \ + TC * _A, \ + unsigned int _nsos); \ + \ +/* Create IIR filter from design template */ \ +/* _ftype : filter type (e.g. LIQUID_IIRDES_BUTTER) */ \ +/* _btype : band type (e.g. LIQUID_IIRDES_BANDPASS) */ \ +/* _format : coefficients format (e.g. LIQUID_IIRDES_SOS) */ \ +/* _order : filter order, _order > 0 */ \ +/* _fc : low-pass prototype cut-off frequency, 0 <= _fc <= 0.5 */ \ +/* _f0 : center frequency (band-pass, band-stop), 0 <= _f0 <= 0.5 */ \ +/* _Ap : pass-band ripple in dB, _Ap > 0 */ \ +/* _As : stop-band ripple in dB, _As > 0 */ \ +IIRFILT() IIRFILT(_create_prototype)( \ + liquid_iirdes_filtertype _ftype, \ + liquid_iirdes_bandtype _btype, \ + liquid_iirdes_format _format, \ + unsigned int _order, \ + float _fc, \ + float _f0, \ + float _Ap, \ + float _As); \ + \ +/* Create simplified low-pass Butterworth IIR filter */ \ +/* _order : filter order, _order > 0 */ \ +/* _fc : low-pass prototype cut-off frequency */ \ +IIRFILT() IIRFILT(_create_lowpass)(unsigned int _order, \ + float _fc); \ + \ +/* Create 8th-order integrator filter */ \ +IIRFILT() IIRFILT(_create_integrator)(void); \ + \ +/* Create 8th-order differentiator filter */ \ +IIRFILT() IIRFILT(_create_differentiator)(void); \ + \ +/* Create simple first-order DC-blocking filter with transfer function */ \ +/* \( H(z) = \frac{1 - z^{-1}}{1 - (1-\alpha)z^{-1}} \) */ \ +/* _alpha : normalized filter bandwidth, _alpha > 0 */ \ +IIRFILT() IIRFILT(_create_dc_blocker)(float _alpha); \ + \ +/* Create filter to operate as second-order integrating phase-locked */ \ +/* loop (active lag design) */ \ +/* _w : filter bandwidth, 0 < _w < 1 */ \ +/* _zeta : damping factor, \( 1/\sqrt{2} \) suggested, 0 < _zeta < 1 */ \ +/* _K : loop gain, 1000 suggested, _K > 0 */ \ +IIRFILT() IIRFILT(_create_pll)(float _w, \ + float _zeta, \ + float _K); \ + \ +/* Destroy iirfilt object, freeing all internal memory */ \ +void IIRFILT(_destroy)(IIRFILT() _q); \ + \ +/* Print iirfilt object properties to stdout */ \ +void IIRFILT(_print)(IIRFILT() _q); \ + \ +/* Reset iirfilt object internals */ \ +void IIRFILT(_reset)(IIRFILT() _q); \ + \ +/* Compute filter output given a signle input sample */ \ +/* _q : iirfilt object */ \ +/* _x : input sample */ \ +/* _y : output sample pointer */ \ +void IIRFILT(_execute)(IIRFILT() _q, \ + TI _x, \ + TO * _y); \ + \ +/* Execute the filter on a block of input samples; */ \ +/* in-place operation is permitted (the input and output buffers may be */ \ +/* the same) */ \ +/* _q : filter object */ \ +/* _x : pointer to input array, [size: _n x 1] */ \ +/* _n : number of input, output samples, _n > 0 */ \ +/* _y : pointer to output array, [size: _n x 1] */ \ +void IIRFILT(_execute_block)(IIRFILT() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* Return number of coefficients for iirfilt object (maximum between */ \ +/* the feed-forward and feed-back coefficients). Note that the filter */ \ +/* length = filter order + 1 */ \ +unsigned int IIRFILT(_get_length)(IIRFILT() _q); \ + \ +/* Compute complex frequency response of filter object */ \ +/* _q : filter object */ \ +/* _fc : normalized frequency for evaluation */ \ +/* _H : pointer to output complex frequency response */ \ +void IIRFILT(_freqresponse)(IIRFILT() _q, \ + float _fc, \ + liquid_float_complex * _H); \ + \ +/* Compute and return group delay of filter object */ \ +/* _q : filter object */ \ +/* _fc : frequency to evaluate */ \ +float IIRFILT(_groupdelay)(IIRFILT() _q, float _fc); \ LIQUID_IIRFILT_DEFINE_API(LIQUID_IIRFILT_MANGLE_RRRF, float, @@ -2609,98 +3008,117 @@ LIQUID_IIRFILT_DEFINE_API(LIQUID_IIRFILT_MANGLE_CCCF, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_FIRPFB_DEFINE_API(FIRPFB,TO,TC,TI) \ - \ -typedef struct FIRPFB(_s) * FIRPFB(); \ - \ -/* create firpfb from external coefficients */ \ -/* _M : number of filters in the bank */ \ -/* _h : coefficients [size: _M*_h_len x 1] */ \ -/* _h_len : filter delay (symbols) */ \ -FIRPFB() FIRPFB(_create)(unsigned int _M, \ - TC * _h, \ - unsigned int _h_len); \ - \ -/* create firpfb from external coefficients */ \ -/* _M : number of filters in the bank */ \ -/* _m : filter semi-length [samples] */ \ -/* _fc : filter cut-off frequency 0 < _fc < 0.5 */ \ -/* _As : filter stop-band suppression [dB] */ \ -FIRPFB() FIRPFB(_create_kaiser)(unsigned int _M, \ - unsigned int _m, \ - float _fc, \ - float _As); \ - \ -/* create firpfb from square-root Nyquist prototype */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ -/* _npfb : number of filters in the bank */ \ -/* _k : nominal samples/symbol */ \ -/* _m : filter delay (symbols) */ \ -/* _beta : rolloff factor (0 < beta <= 1) */ \ -FIRPFB() FIRPFB(_create_rnyquist)(int _type, \ - unsigned int _npfb, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta); \ - \ -/* create from square-root derivative Nyquist prototype */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ -/* _npfb : number of filters in the bank */ \ -/* _k : nominal samples/symbol */ \ -/* _m : filter delay (symbols) */ \ -/* _beta : rolloff factor (0 < beta <= 1) */ \ -FIRPFB() FIRPFB(_create_drnyquist)(int _type, \ - unsigned int _npfb, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta); \ - \ -/* re-create filterbank object */ \ -/* _q : original firpfb object */ \ -/* _M : number of filters in the bank */ \ -/* _h : coefficients [size: _M x _h_len] */ \ -/* _h_len : length of each filter */ \ -FIRPFB() FIRPFB(_recreate)(FIRPFB() _q, \ - unsigned int _M, \ - TC * _h, \ - unsigned int _h_len); \ - \ -/* destroy firpfb object, freeing all internal memory */ \ -void FIRPFB(_destroy)(FIRPFB() _q); \ - \ -/* print firpfb object's parameters */ \ -void FIRPFB(_print)(FIRPFB() _q); \ - \ -/* set output scaling for filter */ \ -void FIRPFB(_set_scale)(FIRPFB() _q, \ - TC _g); \ - \ -/* clear/reset firpfb object internal state */ \ -void FIRPFB(_reset)(FIRPFB() _q); \ - \ -/* push sample into firpfb internal buffer */ \ -void FIRPFB(_push)(FIRPFB() _q, TI _x); \ - \ -/* execute the filter on internal buffer and coefficients */ \ -/* _q : firpfb object */ \ -/* _i : index of filter to use */ \ -/* _y : pointer to output sample */ \ -void FIRPFB(_execute)(FIRPFB() _q, \ - unsigned int _i, \ - TO * _y); \ - \ -/* execute the filter on a block of input samples; the */ \ -/* input and output buffers may be the same */ \ -/* _q : firpfb object */ \ -/* _i : index of filter to use */ \ -/* _x : pointer to input array [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -/* _y : pointer to output array [size: _n x 1] */ \ -void FIRPFB(_execute_block)(FIRPFB() _q, \ - unsigned int _i, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ +#define LIQUID_FIRPFB_DEFINE_API(FIRPFB,TO,TC,TI) \ + \ +/* Finite impulse response (FIR) polyphase filter bank (PFB) */ \ +typedef struct FIRPFB(_s) * FIRPFB(); \ + \ +/* Create firpfb object with _M sub-filter each of length _h_len/_M */ \ +/* from an external array of coefficients */ \ +/* _M : number of filters in the bank, _M > 1 */ \ +/* _h : coefficients, [size: _h_len x 1] */ \ +/* _h_len : filter length (multiple of _M), _h_len >= _M */ \ +FIRPFB() FIRPFB(_create)(unsigned int _M, \ + TC * _h, \ + unsigned int _h_len); \ + \ +/* Create firpfb object using Kaiser-Bessel windowed sinc filter design */ \ +/* method */ \ +/* _M : number of filters in the bank, _M > 0 */ \ +/* _m : filter semi-length [samples], _m > 0 */ \ +/* _fc : filter normalized cut-off frequency, 0 < _fc < 0.5 */ \ +/* _As : filter stop-band suppression [dB], _As > 0 */ \ +FIRPFB() FIRPFB(_create_kaiser)(unsigned int _M, \ + unsigned int _m, \ + float _fc, \ + float _As); \ + \ +/* Create firpfb from square-root Nyquist prototype */ \ +/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ +/* _M : number of filters in the bank, _M > 0 */ \ +/* _k : nominal samples/symbol, _k > 1 */ \ +/* _m : filter delay [symbols], _m > 0 */ \ +/* _beta : rolloff factor, 0 < _beta <= 1 */ \ +FIRPFB() FIRPFB(_create_rnyquist)(int _type, \ + unsigned int _M, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta); \ + \ +/* Create from square-root derivative Nyquist prototype */ \ +/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ +/* _M : number of filters in the bank, _M > 0 */ \ +/* _k : nominal samples/symbol, _k > 1 */ \ +/* _m : filter delay [symbols], _m > 0 */ \ +/* _beta : rolloff factor, 0 < _beta <= 1 */ \ +FIRPFB() FIRPFB(_create_drnyquist)(int _type, \ + unsigned int _M, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta); \ + \ +/* Re-create firpfb object of potentially a different length with */ \ +/* different coefficients. If the length of the filter does not change, */ \ +/* not memory reallocation is invoked. */ \ +/* _q : original firpfb object */ \ +/* _M : number of filters in the bank, _M > 1 */ \ +/* _h : coefficients, [size: _h_len x 1] */ \ +/* _h_len : filter length (multiple of _M), _h_len >= _M */ \ +FIRPFB() FIRPFB(_recreate)(FIRPFB() _q, \ + unsigned int _M, \ + TC * _h, \ + unsigned int _h_len); \ + \ +/* Destroy firpfb object, freeing all internal memory and destroying */ \ +/* all internal objects */ \ +void FIRPFB(_destroy)(FIRPFB() _q); \ + \ +/* Print firpfb object's parameters to stdout */ \ +void FIRPFB(_print)(FIRPFB() _q); \ + \ +/* Set output scaling for filter */ \ +/* _q : filter object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void FIRPFB(_set_scale)(FIRPFB() _q, \ + TC _scale); \ + \ +/* Get output scaling for filter */ \ +/* _q : filter object */ \ +/* _scale : scaling factor applied to each output sample */ \ +void FIRPFB(_get_scale)(FIRPFB() _q, \ + TC * _scale); \ + \ +/* Reset firpfb object's internal buffer */ \ +void FIRPFB(_reset)(FIRPFB() _q); \ + \ +/* Push sample into filter object's internal buffer */ \ +/* _q : filter object */ \ +/* _x : single input sample */ \ +void FIRPFB(_push)(FIRPFB() _q, \ + TI _x); \ + \ +/* Execute vector dot product on the filter's internal buffer and */ \ +/* coefficients using the coefficients from sub-filter at index _i */ \ +/* _q : firpfb object */ \ +/* _i : index of filter to use */ \ +/* _y : pointer to output sample */ \ +void FIRPFB(_execute)(FIRPFB() _q, \ + unsigned int _i, \ + TO * _y); \ + \ +/* Execute the filter on a block of input samples, all using index _i. */ \ +/* In-place operation is permitted (_x and _y may point to the same */ \ +/* place in memory) */ \ +/* _q : firpfb object */ \ +/* _i : index of filter to use */ \ +/* _x : pointer to input array [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +/* _y : pointer to output array [size: _n x 1] */ \ +void FIRPFB(_execute_block)(FIRPFB() _q, \ + unsigned int _i, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ LIQUID_FIRPFB_DEFINE_API(LIQUID_FIRPFB_MANGLE_RRRF, float, @@ -2726,64 +3144,84 @@ LIQUID_FIRPFB_DEFINE_API(LIQUID_FIRPFB_MANGLE_CCCF, #define LIQUID_FIRINTERP_MANGLE_CRCF(name) LIQUID_CONCAT(firinterp_crcf,name) #define LIQUID_FIRINTERP_MANGLE_CCCF(name) LIQUID_CONCAT(firinterp_cccf,name) -#define LIQUID_FIRINTERP_DEFINE_API(FIRINTERP,TO,TC,TI) \ - \ -typedef struct FIRINTERP(_s) * FIRINTERP(); \ - \ -/* create interpolator from external coefficients */ \ -/* _M : interpolation factor */ \ -/* _h : filter coefficients [size: _h_len x 1] */ \ -/* _h_len : filter length */ \ -FIRINTERP() FIRINTERP(_create)(unsigned int _M, \ - TC * _h, \ - unsigned int _h_len); \ - \ -/* create interpolator from Kaiser prototype */ \ -/* _M : interpolation factor */ \ -/* _m : filter delay (symbols) */ \ -/* _As : stop-band attenuation [dB] */ \ -FIRINTERP() FIRINTERP(_create_kaiser)(unsigned int _M, \ - unsigned int _m, \ - float _As); \ - \ -/* create prorotype (root-)Nyquist interpolator */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RCOS) */ \ -/* _k : samples/symbol, _k > 1 */ \ -/* _m : filter delay (symbols), _m > 0 */ \ -/* _beta : excess bandwidth factor, _beta < 1 */ \ -/* _dt : fractional sample delay, _dt in (-1, 1) */ \ -FIRINTERP() FIRINTERP(_create_prototype)(int _type, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - float _dt); \ - \ -/* destroy firinterp object, freeing all internal memory */ \ -void FIRINTERP(_destroy)(FIRINTERP() _q); \ - \ -/* print firinterp object's internal properties to stdout */ \ -void FIRINTERP(_print)(FIRINTERP() _q); \ - \ -/* reset internal state */ \ -void FIRINTERP(_reset)(FIRINTERP() _q); \ - \ -/* execute interpolation on single input sample */ \ -/* _q : firinterp object */ \ -/* _x : input sample */ \ -/* _y : output sample array [size: _M x 1] */ \ -void FIRINTERP(_execute)(FIRINTERP() _q, \ - TI _x, \ - TO * _y); \ - \ -/* execute interpolation on block of input samples */ \ -/* _q : firinterp object */ \ -/* _x : input array [size: _n x 1] */ \ -/* _n : size of input array */ \ -/* _y : output sample array [size: _M*_n x 1] */ \ -void FIRINTERP(_execute_block)(FIRINTERP() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ +#define LIQUID_FIRINTERP_DEFINE_API(FIRINTERP,TO,TC,TI) \ + \ +/* Finite impulse response (FIR) interpolator */ \ +typedef struct FIRINTERP(_s) * FIRINTERP(); \ + \ +/* Create interpolator from external coefficients. Internally the */ \ +/* interpolator creates a polyphase filter bank to efficiently realize */ \ +/* resampling of the input signal. */ \ +/* If the input filter length is not a multiple of the interpolation */ \ +/* factor, the object internally pads the coefficients with zeros to */ \ +/* compensate. */ \ +/* _M : interpolation factor, _M >= 2 */ \ +/* _h : filter coefficients, [size: _h_len x 1] */ \ +/* _h_len : filter length, _h_len >= _M */ \ +FIRINTERP() FIRINTERP(_create)(unsigned int _M, \ + TC * _h, \ + unsigned int _h_len); \ + \ +/* Create interpolator from filter prototype prototype (Kaiser-Bessel */ \ +/* windowed-sinc function) */ \ +/* _M : interpolation factor, _M >= 2 */ \ +/* _m : filter delay [symbols], _m >= 1 */ \ +/* _As : stop-band attenuation [dB], _As >= 0 */ \ +FIRINTERP() FIRINTERP(_create_kaiser)(unsigned int _M, \ + unsigned int _m, \ + float _As); \ + \ +/* Create interpolator object from filter prototype */ \ +/* _type : filter type (e.g. LIQUID_FIRFILT_RCOS) */ \ +/* _M : interpolation factor, _M > 1 */ \ +/* _m : filter delay (symbols), _m > 0 */ \ +/* _beta : excess bandwidth factor, 0 <= _beta <= 1 */ \ +/* _dt : fractional sample delay, -1 <= _dt <= 1 */ \ +FIRINTERP() FIRINTERP(_create_prototype)(int _type, \ + unsigned int _M, \ + unsigned int _m, \ + float _beta, \ + float _dt); \ + \ +/* Destroy firinterp object, freeing all internal memory */ \ +void FIRINTERP(_destroy)(FIRINTERP() _q); \ + \ +/* Print firinterp object's internal properties to stdout */ \ +void FIRINTERP(_print)(FIRINTERP() _q); \ + \ +/* Reset internal state */ \ +void FIRINTERP(_reset)(FIRINTERP() _q); \ + \ +/* Set output scaling for interpolator */ \ +/* _q : interpolator object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void FIRINTERP(_set_scale)(FIRINTERP() _q, \ + TC _scale); \ + \ +/* Get output scaling for interpolator */ \ +/* _q : interpolator object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void FIRINTERP(_get_scale)(FIRINTERP() _q, \ + TC * _scale); \ + \ +/* Execute interpolation on single input sample and write \(M\) output */ \ +/* samples (\(M\) is the interpolation factor) */ \ +/* _q : firinterp object */ \ +/* _x : input sample */ \ +/* _y : output sample array, [size: _M x 1] */ \ +void FIRINTERP(_execute)(FIRINTERP() _q, \ + TI _x, \ + TO * _y); \ + \ +/* Execute interpolation on block of input samples */ \ +/* _q : firinterp object */ \ +/* _x : input array, [size: _n x 1] */ \ +/* _n : size of input array */ \ +/* _y : output sample array, [size: _M*_n x 1] */ \ +void FIRINTERP(_execute_block)(FIRINTERP() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ LIQUID_FIRINTERP_DEFINE_API(LIQUID_FIRINTERP_MANGLE_RRRF, float, @@ -2805,69 +3243,91 @@ LIQUID_FIRINTERP_DEFINE_API(LIQUID_FIRINTERP_MANGLE_CCCF, #define LIQUID_IIRINTERP_MANGLE_CRCF(name) LIQUID_CONCAT(iirinterp_crcf,name) #define LIQUID_IIRINTERP_MANGLE_CCCF(name) LIQUID_CONCAT(iirinterp_cccf,name) -#define LIQUID_IIRINTERP_DEFINE_API(IIRINTERP,TO,TC,TI) \ -typedef struct IIRINTERP(_s) * IIRINTERP(); \ - \ -/* create interpolator from external coefficients */ \ -/* _M : interpolation factor */ \ -/* _b : feed-back coefficients [size: _nb x 1] */ \ -/* _nb : feed-back coefficients length */ \ -/* _a : feed-forward coefficients [size: _na x 1] */ \ -/* _na : feed-forward coefficients length */ \ -IIRINTERP() IIRINTERP(_create)(unsigned int _M, \ - TC * _b, \ - unsigned int _nb, \ - TC * _a, \ - unsigned int _na); \ - \ -/* create decimator with default Butterworth prototype */ \ -/* _M : decimation factor */ \ -/* _order : filter order */ \ -IIRINTERP() IIRINTERP(_create_default)(unsigned int _M, \ - unsigned int _order); \ - \ -/* create interpolator from prototype */ \ -/* _M : interpolation factor */ \ -IIRINTERP() IIRINTERP(_create_prototype)( \ - unsigned int _M, \ - liquid_iirdes_filtertype _ftype, \ - liquid_iirdes_bandtype _btype, \ - liquid_iirdes_format _format, \ - unsigned int _order, \ - float _fc, \ - float _f0, \ - float _Ap, \ - float _As); \ - \ -/* destroy interpolator object and free internal memory */ \ -void IIRINTERP(_destroy)(IIRINTERP() _q); \ - \ -/* print interpolator object internals */ \ -void IIRINTERP(_print)(IIRINTERP() _q); \ - \ -/* reset interpolator object */ \ -void IIRINTERP(_reset)(IIRINTERP() _q); \ - \ -/* execute interpolation on single input sample */ \ -/* _q : iirinterp object */ \ -/* _x : input sample */ \ -/* _y : output sample array [size: _M x 1] */ \ -void IIRINTERP(_execute)(IIRINTERP() _q, \ - TI _x, \ - TO * _y); \ - \ -/* execute interpolation on block of input samples */ \ -/* _q : iirinterp object */ \ -/* _x : input array [size: _n x 1] */ \ -/* _n : size of input array */ \ -/* _y : output sample array [size: _M*_n x 1] */ \ -void IIRINTERP(_execute_block)(IIRINTERP() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ - \ -/* get system group delay at frequency _fc */ \ -float IIRINTERP(_groupdelay)(IIRINTERP() _q, float _fc); \ +#define LIQUID_IIRINTERP_DEFINE_API(IIRINTERP,TO,TC,TI) \ + \ +/* Infinite impulse response (IIR) interpolator */ \ +typedef struct IIRINTERP(_s) * IIRINTERP(); \ + \ +/* Create infinite impulse response interpolator from external */ \ +/* coefficients. */ \ +/* Note that the number of feed-forward and feed-back coefficients do */ \ +/* not need to be equal, but they do need to be non-zero. */ \ +/* Furthermore, the first feed-back coefficient \(a_0\) cannot be */ \ +/* equal to zero, otherwise the filter will be invalid as this value is */ \ +/* factored out from all coefficients. */ \ +/* For stability reasons the number of coefficients should reasonably */ \ +/* not exceed about 8 for single-precision floating-point. */ \ +/* _M : interpolation factor, _M >= 2 */ \ +/* _b : feed-forward coefficients (numerator), [size: _nb x 1] */ \ +/* _nb : number of feed-forward coefficients, _nb > 0 */ \ +/* _a : feed-back coefficients (denominator), [size: _na x 1] */ \ +/* _na : number of feed-back coefficients, _na > 0 */ \ +IIRINTERP() IIRINTERP(_create)(unsigned int _M, \ + TC * _b, \ + unsigned int _nb, \ + TC * _a, \ + unsigned int _na); \ + \ +/* Create interpolator object with default Butterworth prototype */ \ +/* _M : interpolation factor, _M >= 2 */ \ +/* _order : filter order, _order > 0 */ \ +IIRINTERP() IIRINTERP(_create_default)(unsigned int _M, \ + unsigned int _order); \ + \ +/* Create IIR interpolator from prototype */ \ +/* _M : interpolation factor, _M >= 2 */ \ +/* _ftype : filter type (e.g. LIQUID_IIRDES_BUTTER) */ \ +/* _btype : band type (e.g. LIQUID_IIRDES_BANDPASS) */ \ +/* _format : coefficients format (e.g. LIQUID_IIRDES_SOS) */ \ +/* _order : filter order, _order > 0 */ \ +/* _fc : low-pass prototype cut-off frequency, 0 <= _fc <= 0.5 */ \ +/* _f0 : center frequency (band-pass, band-stop), 0 <= _f0 <= 0.5 */ \ +/* _Ap : pass-band ripple in dB, _Ap > 0 */ \ +/* _As : stop-band ripple in dB, _As > 0 */ \ +IIRINTERP() IIRINTERP(_create_prototype)( \ + unsigned int _M, \ + liquid_iirdes_filtertype _ftype, \ + liquid_iirdes_bandtype _btype, \ + liquid_iirdes_format _format, \ + unsigned int _order, \ + float _fc, \ + float _f0, \ + float _Ap, \ + float _As); \ + \ +/* Destroy interpolator object and free internal memory */ \ +void IIRINTERP(_destroy)(IIRINTERP() _q); \ + \ +/* Print interpolator object internals to stdout */ \ +void IIRINTERP(_print)(IIRINTERP() _q); \ + \ +/* Reset interpolator object */ \ +void IIRINTERP(_reset)(IIRINTERP() _q); \ + \ +/* Execute interpolation on single input sample and write \(M\) output */ \ +/* samples (\(M\) is the interpolation factor) */ \ +/* _q : iirinterp object */ \ +/* _x : input sample */ \ +/* _y : output sample array, [size: _M x 1] */ \ +void IIRINTERP(_execute)(IIRINTERP() _q, \ + TI _x, \ + TO * _y); \ + \ +/* Execute interpolation on block of input samples */ \ +/* _q : iirinterp object */ \ +/* _x : input array, [size: _n x 1] */ \ +/* _n : size of input array */ \ +/* _y : output sample array, [size: _M*_n x 1] */ \ +void IIRINTERP(_execute_block)(IIRINTERP() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* Compute and return group delay of object */ \ +/* _q : filter object */ \ +/* _fc : frequency to evaluate */ \ +float IIRINTERP(_groupdelay)(IIRINTERP() _q, \ + float _fc); \ LIQUID_IIRINTERP_DEFINE_API(LIQUID_IIRINTERP_MANGLE_RRRF, float, @@ -2893,63 +3353,78 @@ LIQUID_IIRINTERP_DEFINE_API(LIQUID_IIRINTERP_MANGLE_CCCF, #define LIQUID_FIRDECIM_MANGLE_CRCF(name) LIQUID_CONCAT(firdecim_crcf,name) #define LIQUID_FIRDECIM_MANGLE_CCCF(name) LIQUID_CONCAT(firdecim_cccf,name) -#define LIQUID_FIRDECIM_DEFINE_API(FIRDECIM,TO,TC,TI) \ -typedef struct FIRDECIM(_s) * FIRDECIM(); \ - \ -/* create decimator from external coefficients */ \ -/* _M : decimation factor */ \ -/* _h : filter coefficients [size: _h_len x 1] */ \ -/* _h_len : filter coefficients length */ \ -FIRDECIM() FIRDECIM(_create)(unsigned int _M, \ - TC * _h, \ - unsigned int _h_len); \ - \ -/* create decimator from Kaiser prototype */ \ -/* _M : decimation factor */ \ -/* _m : filter delay (symbols) */ \ -/* _As : stop-band attenuation [dB] */ \ -FIRDECIM() FIRDECIM(_create_kaiser)(unsigned int _M, \ - unsigned int _m, \ - float _As); \ - \ -/* create square-root Nyquist decimator */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ -/* _M : samples/symbol (decimation factor) */ \ -/* _m : filter delay (symbols) */ \ -/* _beta : rolloff factor (0 < beta <= 1) */ \ -/* _dt : fractional sample delay */ \ -FIRDECIM() FIRDECIM(_create_prototype)(int _type, \ - unsigned int _M, \ - unsigned int _m, \ - float _beta, \ - float _dt); \ - \ -/* destroy decimator object */ \ -void FIRDECIM(_destroy)(FIRDECIM() _q); \ - \ -/* print decimator object propreties to stdout */ \ -void FIRDECIM(_print)(FIRDECIM() _q); \ - \ -/* reset decimator object internal state */ \ -void FIRDECIM(_reset)(FIRDECIM() _q); \ - \ -/* execute decimator on _M input samples */ \ -/* _q : decimator object */ \ -/* _x : input samples [size: _M x 1] */ \ -/* _y : output sample pointer */ \ -void FIRDECIM(_execute)(FIRDECIM() _q, \ - TI * _x, \ - TO * _y); \ - \ -/* execute decimator on block of _n*_M input samples */ \ -/* _q : decimator object */ \ -/* _x : input array [size: _n*_M x 1] */ \ -/* _n : number of _output_ samples */ \ -/* _y : output array [_size: _n x 1] */ \ -void FIRDECIM(_execute_block)(FIRDECIM() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ +#define LIQUID_FIRDECIM_DEFINE_API(FIRDECIM,TO,TC,TI) \ + \ +/* Finite impulse response (FIR) decimator */ \ +typedef struct FIRDECIM(_s) * FIRDECIM(); \ + \ +/* Create decimator from external coefficients */ \ +/* _M : decimation factor, _M >= 2 */ \ +/* _h : filter coefficients, [size: _h_len x 1] */ \ +/* _h_len : filter length, _h_len >= _M */ \ +FIRDECIM() FIRDECIM(_create)(unsigned int _M, \ + TC * _h, \ + unsigned int _h_len); \ + \ +/* Create decimator from filter prototype prototype (Kaiser-Bessel */ \ +/* windowed-sinc function) */ \ +/* _M : decimation factor, _M >= 2 */ \ +/* _m : filter delay [symbols], _m >= 1 */ \ +/* _As : stop-band attenuation [dB], _As >= 0 */ \ +FIRDECIM() FIRDECIM(_create_kaiser)(unsigned int _M, \ + unsigned int _m, \ + float _As); \ + \ +/* Create decimator object from filter prototype */ \ +/* _type : filter type (e.g. LIQUID_FIRFILT_RCOS) */ \ +/* _M : interpolation factor, _M > 1 */ \ +/* _m : filter delay (symbols), _m > 0 */ \ +/* _beta : excess bandwidth factor, 0 <= _beta <= 1 */ \ +/* _dt : fractional sample delay, -1 <= _dt <= 1 */ \ +FIRDECIM() FIRDECIM(_create_prototype)(int _type, \ + unsigned int _M, \ + unsigned int _m, \ + float _beta, \ + float _dt); \ + \ +/* Destroy decimator object, freeing all internal memory */ \ +void FIRDECIM(_destroy)(FIRDECIM() _q); \ + \ +/* Print decimator object propreties to stdout */ \ +void FIRDECIM(_print)(FIRDECIM() _q); \ + \ +/* Reset decimator object internal state */ \ +void FIRDECIM(_reset)(FIRDECIM() _q); \ + \ +/* Set output scaling for decimator */ \ +/* _q : decimator object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void FIRDECIM(_set_scale)(FIRDECIM() _q, \ + TC _scale); \ + \ +/* Get output scaling for decimator */ \ +/* _q : decimator object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void FIRDECIM(_get_scale)(FIRDECIM() _q, \ + TC * _scale); \ + \ +/* Execute decimator on _M input samples */ \ +/* _q : decimator object */ \ +/* _x : input samples, [size: _M x 1] */ \ +/* _y : output sample pointer */ \ +void FIRDECIM(_execute)(FIRDECIM() _q, \ + TI * _x, \ + TO * _y); \ + \ +/* Execute decimator on block of _n*_M input samples */ \ +/* _q : decimator object */ \ +/* _x : input array, [size: _n*_M x 1] */ \ +/* _n : number of _output_ samples */ \ +/* _y : output array, [_size: _n x 1] */ \ +void FIRDECIM(_execute_block)(FIRDECIM() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ LIQUID_FIRDECIM_DEFINE_API(LIQUID_FIRDECIM_MANGLE_RRRF, float, @@ -2972,77 +3447,90 @@ LIQUID_FIRDECIM_DEFINE_API(LIQUID_FIRDECIM_MANGLE_CCCF, #define LIQUID_IIRDECIM_MANGLE_CRCF(name) LIQUID_CONCAT(iirdecim_crcf,name) #define LIQUID_IIRDECIM_MANGLE_CCCF(name) LIQUID_CONCAT(iirdecim_cccf,name) -#define LIQUID_IIRDECIM_DEFINE_API(IIRDECIM,TO,TC,TI) \ -typedef struct IIRDECIM(_s) * IIRDECIM(); \ - \ -/* create decimator from external coefficients */ \ -/* _M : decimation factor */ \ -/* _b : feed-back coefficients [size: _nb x 1] */ \ -/* _nb : feed-back coefficients length */ \ -/* _a : feed-forward coefficients [size: _na x 1] */ \ -/* _na : feed-forward coefficients length */ \ -IIRDECIM() IIRDECIM(_create)(unsigned int _M, \ - TC * _b, \ - unsigned int _nb, \ - TC * _a, \ - unsigned int _na); \ - \ -/* create decimator with default Butterworth prototype */ \ -/* _M : decimation factor */ \ -/* _order : filter order */ \ -IIRDECIM() IIRDECIM(_create_default)(unsigned int _M, \ - unsigned int _order); \ - \ -/* create decimator from prototype */ \ -/* _M : decimation factor */ \ -/* _ftype : filter type (e.g. LIQUID_IIRDES_BUTTER) */ \ -/* _btype : band type (e.g. LIQUID_IIRDES_BANDPASS) */ \ -/* _format : coefficients format (e.g. LIQUID_IIRDES_SOS) */ \ -/* _n : filter order */ \ -/* _fc : low-pass prototype cut-off frequency */ \ -/* _f0 : center frequency (band-pass, band-stop) */ \ -/* _Ap : pass-band ripple in dB */ \ -/* _As : stop-band ripple in dB */ \ -IIRDECIM() IIRDECIM(_create_prototype)( \ - unsigned int _M, \ - liquid_iirdes_filtertype _ftype, \ - liquid_iirdes_bandtype _btype, \ - liquid_iirdes_format _format, \ - unsigned int _order, \ - float _fc, \ - float _f0, \ - float _Ap, \ - float _As); \ - \ -/* destroy decimator object and free internal memory */ \ -void IIRDECIM(_destroy)(IIRDECIM() _q); \ - \ -/* print decimator object internals */ \ -void IIRDECIM(_print)(IIRDECIM() _q); \ - \ -/* reset decimator object */ \ -void IIRDECIM(_reset)(IIRDECIM() _q); \ - \ -/* execute decimator on _M input samples */ \ -/* _q : decimator object */ \ -/* _x : input samples [size: _M x 1] */ \ -/* _y : output sample pointer */ \ -void IIRDECIM(_execute)(IIRDECIM() _q, \ - TI * _x, \ - TO * _y); \ - \ -/* execute decimator on block of _n*_M input samples */ \ -/* _q : decimator object */ \ -/* _x : input array [size: _n*_M x 1] */ \ -/* _n : number of _output_ samples */ \ -/* _y : output array [_sze: _n x 1] */ \ -void IIRDECIM(_execute_block)(IIRDECIM() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ - \ -/* get system group delay at frequency _fc */ \ -float IIRDECIM(_groupdelay)(IIRDECIM() _q, float _fc); \ +#define LIQUID_IIRDECIM_DEFINE_API(IIRDECIM,TO,TC,TI) \ + \ +/* Infinite impulse response (IIR) decimator */ \ +typedef struct IIRDECIM(_s) * IIRDECIM(); \ + \ +/* Create infinite impulse response decimator from external */ \ +/* coefficients. */ \ +/* Note that the number of feed-forward and feed-back coefficients do */ \ +/* not need to be equal, but they do need to be non-zero. */ \ +/* Furthermore, the first feed-back coefficient \(a_0\) cannot be */ \ +/* equal to zero, otherwise the filter will be invalid as this value is */ \ +/* factored out from all coefficients. */ \ +/* For stability reasons the number of coefficients should reasonably */ \ +/* not exceed about 8 for single-precision floating-point. */ \ +/* _M : decimation factor, _M >= 2 */ \ +/* _b : feed-forward coefficients (numerator), [size: _nb x 1] */ \ +/* _nb : number of feed-forward coefficients, _nb > 0 */ \ +/* _a : feed-back coefficients (denominator), [size: _na x 1] */ \ +/* _na : number of feed-back coefficients, _na > 0 */ \ +IIRDECIM() IIRDECIM(_create)(unsigned int _M, \ + TC * _b, \ + unsigned int _nb, \ + TC * _a, \ + unsigned int _na); \ + \ +/* Create decimator object with default Butterworth prototype */ \ +/* _M : decimation factor, _M >= 2 */ \ +/* _order : filter order, _order > 0 */ \ +IIRDECIM() IIRDECIM(_create_default)(unsigned int _M, \ + unsigned int _order); \ + \ +/* Create IIR decimator from prototype */ \ +/* _M : decimation factor, _M >= 2 */ \ +/* _ftype : filter type (e.g. LIQUID_IIRDES_BUTTER) */ \ +/* _btype : band type (e.g. LIQUID_IIRDES_BANDPASS) */ \ +/* _format : coefficients format (e.g. LIQUID_IIRDES_SOS) */ \ +/* _order : filter order, _order > 0 */ \ +/* _fc : low-pass prototype cut-off frequency, 0 <= _fc <= 0.5 */ \ +/* _f0 : center frequency (band-pass, band-stop), 0 <= _f0 <= 0.5 */ \ +/* _Ap : pass-band ripple in dB, _Ap > 0 */ \ +/* _As : stop-band ripple in dB, _As > 0 */ \ +IIRDECIM() IIRDECIM(_create_prototype)( \ + unsigned int _M, \ + liquid_iirdes_filtertype _ftype, \ + liquid_iirdes_bandtype _btype, \ + liquid_iirdes_format _format, \ + unsigned int _order, \ + float _fc, \ + float _f0, \ + float _Ap, \ + float _As); \ + \ +/* Destroy decimator object and free internal memory */ \ +void IIRDECIM(_destroy)(IIRDECIM() _q); \ + \ +/* Print decimator object internals */ \ +void IIRDECIM(_print)(IIRDECIM() _q); \ + \ +/* Reset decimator object */ \ +void IIRDECIM(_reset)(IIRDECIM() _q); \ + \ +/* Execute decimator on _M input samples */ \ +/* _q : decimator object */ \ +/* _x : input samples, [size: _M x 1] */ \ +/* _y : output sample pointer */ \ +void IIRDECIM(_execute)(IIRDECIM() _q, \ + TI * _x, \ + TO * _y); \ + \ +/* Execute decimator on block of _n*_M input samples */ \ +/* _q : decimator object */ \ +/* _x : input array, [size: _n*_M x 1] */ \ +/* _n : number of _output_ samples */ \ +/* _y : output array, [_sze: _n x 1] */ \ +void IIRDECIM(_execute_block)(IIRDECIM() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* Compute and return group delay of object */ \ +/* _q : filter object */ \ +/* _fc : frequency to evaluate */ \ +float IIRDECIM(_groupdelay)(IIRDECIM() _q, \ + float _fc); \ LIQUID_IIRDECIM_DEFINE_API(LIQUID_IIRDECIM_MANGLE_RRRF, float, @@ -3068,80 +3556,92 @@ LIQUID_IIRDECIM_DEFINE_API(LIQUID_IIRDECIM_MANGLE_CCCF, #define LIQUID_RESAMP2_MANGLE_CRCF(name) LIQUID_CONCAT(resamp2_crcf,name) #define LIQUID_RESAMP2_MANGLE_CCCF(name) LIQUID_CONCAT(resamp2_cccf,name) -#define LIQUID_RESAMP2_DEFINE_API(RESAMP2,TO,TC,TI) \ -typedef struct RESAMP2(_s) * RESAMP2(); \ - \ -/* create half-band resampler */ \ -/* _m : filter semi-length (h_len = 4*m+1) */ \ -/* _f0 : filter center frequency */ \ -/* _As : stop-band attenuation [dB] */ \ -RESAMP2() RESAMP2(_create)(unsigned int _m, \ - float _f0, \ - float _As); \ - \ -/* re-create half-band resampler with new properties */ \ -/* _q : original half-band resampler object */ \ -/* _m : filter semi-length (h_len = 4*m+1) */ \ -/* _f0 : filter center frequency */ \ -/* _As : stop-band attenuation [dB] */ \ -RESAMP2() RESAMP2(_recreate)(RESAMP2() _q, \ - unsigned int _m, \ - float _f0, \ - float _As); \ - \ -/* destroy half-band resampler */ \ -void RESAMP2(_destroy)(RESAMP2() _q); \ - \ -/* print resamp2 object's internals */ \ -void RESAMP2(_print)(RESAMP2() _q); \ - \ -/* reset internal buffer */ \ -void RESAMP2(_reset)(RESAMP2() _q); \ - \ -/* get resampler filter delay (semi-length m) */ \ -unsigned int RESAMP2(_get_delay)(RESAMP2() _q); \ - \ -/* execute resamp2 as half-band filter */ \ -/* _q : resamp2 object */ \ -/* _x : input sample */ \ -/* _y0 : output sample pointer (low frequency) */ \ -/* _y1 : output sample pointer (high frequency) */ \ -void RESAMP2(_filter_execute)(RESAMP2() _q, \ - TI _x, \ - TO * _y0, \ - TO * _y1); \ - \ -/* execute resamp2 as half-band analysis filterbank */ \ -/* _q : resamp2 object */ \ -/* _x : input array [size: 2 x 1] */ \ -/* _y : output array [size: 2 x 1] */ \ -void RESAMP2(_analyzer_execute)(RESAMP2() _q, \ - TI * _x, \ - TO * _y); \ - \ -/* execute resamp2 as half-band synthesis filterbank */ \ -/* _q : resamp2 object */ \ -/* _x : input array [size: 2 x 1] */ \ -/* _y : output array [size: 2 x 1] */ \ -void RESAMP2(_synthesizer_execute)(RESAMP2() _q, \ - TI * _x, \ - TO * _y); \ - \ -/* execute resamp2 as half-band decimator */ \ -/* _q : resamp2 object */ \ -/* _x : input array [size: 2 x 1] */ \ -/* _y : output sample pointer */ \ -void RESAMP2(_decim_execute)(RESAMP2() _q, \ - TI * _x, \ - TO * _y); \ - \ -/* execute resamp2 as half-band interpolator */ \ -/* _q : resamp2 object */ \ -/* _x : input sample */ \ -/* _y : output array [size: 2 x 1] */ \ -void RESAMP2(_interp_execute)(RESAMP2() _q, \ - TI _x, \ - TO * _y); \ +#define LIQUID_RESAMP2_DEFINE_API(RESAMP2,TO,TC,TI) \ + \ +/* Half-band resampler, implemented as a dyadic (half-band) polyphase */ \ +/* filter bank for interpolation, decimation, synthesis, and analysis. */ \ +typedef struct RESAMP2(_s) * RESAMP2(); \ + \ +/* Create half-band resampler from design prototype. */ \ +/* _m : filter semi-length (h_len = 4*m+1), _m >= 2 */ \ +/* _f0 : filter center frequency, -0.5 <= _f0 <= 0.5 */ \ +/* _As : stop-band attenuation [dB], _As > 0 */ \ +RESAMP2() RESAMP2(_create)(unsigned int _m, \ + float _f0, \ + float _As); \ + \ +/* Re-create half-band resampler with new properties */ \ +/* _q : original half-band resampler object */ \ +/* _m : filter semi-length (h_len = 4*m+1), _m >= 2 */ \ +/* _f0 : filter center frequency, -0.5 <= _f0 <= 0.5 */ \ +/* _As : stop-band attenuation [dB], _As > 0 */ \ +RESAMP2() RESAMP2(_recreate)(RESAMP2() _q, \ + unsigned int _m, \ + float _f0, \ + float _As); \ + \ +/* Destroy resampler, freeing all internally-allocated memory */ \ +void RESAMP2(_destroy)(RESAMP2() _q); \ + \ +/* print resampler object's internals to stdout */ \ +void RESAMP2(_print)(RESAMP2() _q); \ + \ +/* Reset internal buffer */ \ +void RESAMP2(_reset)(RESAMP2() _q); \ + \ +/* Get resampler filter delay (semi-length m) */ \ +unsigned int RESAMP2(_get_delay)(RESAMP2() _q); \ + \ +/* Execute resampler as half-band filter for a single input sample */ \ +/* \(x\) where \(y_0\) is the output of the effective low-pass filter, */ \ +/* and \(y_1\) is the output of the effective high-pass filter. */ \ +/* _q : resampler object */ \ +/* _x : input sample */ \ +/* _y0 : output sample pointer (low frequency) */ \ +/* _y1 : output sample pointer (high frequency) */ \ +void RESAMP2(_filter_execute)(RESAMP2() _q, \ + TI _x, \ + TO * _y0, \ + TO * _y1); \ + \ +/* Execute resampler as half-band analysis filterbank on a pair of */ \ +/* sequential time-domain input samples. */ \ +/* The decimated outputs of the low- and high-pass equivalent filters */ \ +/* are stored in \(y_0\) and \(y_1\), respectively. */ \ +/* _q : resampler object */ \ +/* _x : input array, [size: 2 x 1] */ \ +/* _y : output array, [size: 2 x 1] */ \ +void RESAMP2(_analyzer_execute)(RESAMP2() _q, \ + TI * _x, \ + TO * _y); \ + \ +/* Execute resampler as half-band synthesis filterbank on a pair of */ \ +/* input samples. The low- and high-pass input samples are provided by */ \ +/* \(x_0\) and \(x_1\), respectively. The sequential time-domain output */ \ +/* samples are stored in \(y_0\) and \(y_1\). */ \ +/* _q : resampler object */ \ +/* _x : input array [size: 2 x 1] */ \ +/* _y : output array [size: 2 x 1] */ \ +void RESAMP2(_synthesizer_execute)(RESAMP2() _q, \ + TI * _x, \ + TO * _y); \ + \ +/* Execute resampler as half-band decimator on a pair of sequential */ \ +/* time-domain input samples. */ \ +/* _q : resampler object */ \ +/* _x : input array [size: 2 x 1] */ \ +/* _y : output sample pointer */ \ +void RESAMP2(_decim_execute)(RESAMP2() _q, \ + TI * _x, \ + TO * _y); \ + \ +/* Execute resampler as half-band interpolator on a single input sample */ \ +/* _q : resampler object */ \ +/* _x : input sample */ \ +/* _y : output array [size: 2 x 1] */ \ +void RESAMP2(_interp_execute)(RESAMP2() _q, \ + TI _x, \ + TO * _y); \ LIQUID_RESAMP2_DEFINE_API(LIQUID_RESAMP2_MANGLE_RRRF, float, @@ -3159,6 +3659,105 @@ LIQUID_RESAMP2_DEFINE_API(LIQUID_RESAMP2_MANGLE_CCCF, liquid_float_complex) +// +// Rational resampler +// +#define LIQUID_RRESAMP_MANGLE_RRRF(name) LIQUID_CONCAT(rresamp_rrrf,name) +#define LIQUID_RRESAMP_MANGLE_CRCF(name) LIQUID_CONCAT(rresamp_crcf,name) +#define LIQUID_RRESAMP_MANGLE_CCCF(name) LIQUID_CONCAT(rresamp_cccf,name) + +#define LIQUID_RRESAMP_DEFINE_API(RRESAMP,TO,TC,TI) \ + \ +/* Rational rate resampler, implemented as a polyphase filterbank */ \ +typedef struct RRESAMP(_s) * RRESAMP(); \ + \ +/* Create rational-rate resampler object from filter prototype to */ \ +/* resample at an exact rate P/Q */ \ +/* _P : interpolation factor, P > 0 */ \ +/* _Q : decimation factor, Q > 0 */ \ +/* _m : filter semi-length (delay), 0 < _m */ \ +/* _bw : filter bandwidth relative to sample rate, 0 < _bw <= 0.5 */ \ +/* _As : filter stop-band attenuation [dB], 0 < _As */ \ +RRESAMP() RRESAMP(_create)(unsigned int _P, \ + unsigned int _Q, \ + unsigned int _m, \ + float _bw, \ + float _As); \ + \ +/* Create rational resampler object with a specified resampling rate of */ \ +/* exactly P/Q with default parameters. This is a simplified method to */ \ +/* provide a basic resampler with a baseline set of parameters, */ \ +/* abstracting away some of the complexities with the filterbank */ \ +/* design. */ \ +/* The default parameters are */ \ +/* m = 12 (filter semi-length), */ \ +/* bw = 0.5 (filter bandwidth), and */ \ +/* As = 60 dB (filter stop-band attenuation) */ \ +/* _P : interpolation factor, P > 0 */ \ +/* _Q : decimation factor, Q > 0 */ \ +RRESAMP() RRESAMP(_create_default)(unsigned int _P, \ + unsigned int _Q); \ + \ +/* Destroy resampler object, freeing all internal memory */ \ +void RRESAMP(_destroy)(RRESAMP() _q); \ + \ +/* Print resampler object internals to stdout */ \ +void RRESAMP(_print)(RRESAMP() _q); \ + \ +/* Reset resampler object internals */ \ +void RRESAMP(_reset)(RRESAMP() _q); \ + \ +/* Set output scaling for filter, default: \( 2 w \sqrt{P/Q} \) */ \ +/* _q : resampler object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void RRESAMP(_set_scale)(RRESAMP() _q, \ + TC _scale); \ + \ +/* Get output scaling for filter */ \ +/* _q : resampler object */ \ +/* _scale : scaling factor to apply to each output sample */ \ +void RRESAMP(_get_scale)(RRESAMP() _q, \ + TC * _scale); \ + \ +/* Get resampler delay (filter semi-length \(m\)) */ \ +unsigned int RRESAMP(_get_delay)(RRESAMP() _q); \ + \ +/* Get interpolation factor of resampler, \(P\), after removing */ \ +/* greatest common divisor */ \ +unsigned int RRESAMP(_get_interp)(RRESAMP() _q); \ + \ +/* Get decimation factor of resampler, \(Q\), after removing */ \ +/* greatest common divisor */ \ +unsigned int RRESAMP(_get_decim)(RRESAMP() _q); \ + \ +/* Get rate of resampler, \(r = P/Q\) */ \ +float RRESAMP(_get_rate)(RRESAMP() _q); \ + \ +/* Execute rational-rate resampler on a block of input samples and */ \ +/* store the resulting samples in the output array. */ \ +/* _q : resamp object */ \ +/* _x : input sample array, [size: Q x 1] */ \ +/* _y : output sample array [size: P x 1] */ \ +void RRESAMP(_execute)(RRESAMP() _q, \ + TI * _x, \ + TO * _y); \ + +LIQUID_RRESAMP_DEFINE_API(LIQUID_RRESAMP_MANGLE_RRRF, + float, + float, + float) + +LIQUID_RRESAMP_DEFINE_API(LIQUID_RRESAMP_MANGLE_CRCF, + liquid_float_complex, + float, + liquid_float_complex) + +LIQUID_RRESAMP_DEFINE_API(LIQUID_RRESAMP_MANGLE_CCCF, + liquid_float_complex, + liquid_float_complex, + liquid_float_complex) + + // // Arbitrary resampler // @@ -3166,86 +3765,101 @@ LIQUID_RESAMP2_DEFINE_API(LIQUID_RESAMP2_MANGLE_CCCF, #define LIQUID_RESAMP_MANGLE_CRCF(name) LIQUID_CONCAT(resamp_crcf,name) #define LIQUID_RESAMP_MANGLE_CCCF(name) LIQUID_CONCAT(resamp_cccf,name) -#define LIQUID_RESAMP_DEFINE_API(RESAMP,TO,TC,TI) \ -typedef struct RESAMP(_s) * RESAMP(); \ - \ -/* create arbitrary resampler object */ \ -/* _rate : arbitrary resampling rate */ \ -/* _m : filter semi-length (delay) */ \ -/* _fc : filter cutoff frequency, 0 < _fc < 0.5 */ \ -/* _As : filter stop-band attenuation [dB] */ \ -/* _npfb : number of filters in the bank */ \ -RESAMP() RESAMP(_create)(float _rate, \ - unsigned int _m, \ - float _fc, \ - float _As, \ - unsigned int _npfb); \ - \ -/* create arbitrary resampler object with a specified input */ \ -/* resampling rate and default parameters */ \ -/* m : (filter semi-length) = 7 */ \ -/* fc : (filter cutoff frequency) = 0.25 */ \ -/* As : (filter stop-band attenuation) = 60 dB */ \ -/* npfb : (number of filters in the bank) = 64 */ \ -RESAMP() RESAMP(_create_default)(float _rate); \ - \ -/* destroy arbitrary resampler object */ \ -void RESAMP(_destroy)(RESAMP() _q); \ - \ -/* print resamp object internals to stdout */ \ -void RESAMP(_print)(RESAMP() _q); \ - \ -/* reset resamp object internals */ \ -void RESAMP(_reset)(RESAMP() _q); \ - \ -/* get resampler delay (output samples) */ \ -unsigned int RESAMP(_get_delay)(RESAMP() _q); \ - \ -/* set rate of arbitrary resampler */ \ -/* _q : resampling object */ \ -/* _rate : new sampling rate, _rate > 0 */ \ -void RESAMP(_set_rate)(RESAMP() _q, \ - float _rate); \ - \ -/* adjust rate of arbitrary resampler */ \ -/* _q : resampling object */ \ -/* _delta : rate adjustment; _rate <- _rate + _delta */ \ -void RESAMP(_adjust_rate)(RESAMP() _q, \ - float _delta); \ - \ -/* set resampling timing phase */ \ -/* _q : resampling object */ \ -/* _tau : sample timing */ \ -void RESAMP(_set_timing_phase)(RESAMP() _q, \ - float _tau); \ - \ -/* adjust resampling timing phase */ \ -/* _q : resampling object */ \ -/* _delta : sample timing adjustment */ \ -void RESAMP(_adjust_timing_phase)(RESAMP() _q, \ - float _delta); \ - \ -/* execute arbitrary resampler */ \ -/* _q : resamp object */ \ -/* _x : single input sample */ \ -/* _y : output sample array (pointer) */ \ -/* _num_written : number of samples written to _y */ \ -void RESAMP(_execute)(RESAMP() _q, \ - TI _x, \ - TO * _y, \ - unsigned int * _num_written); \ - \ -/* execute arbitrary resampler on a block of samples */ \ -/* _q : resamp object */ \ -/* _x : input buffer [size: _nx x 1] */ \ -/* _nx : input buffer */ \ -/* _y : output sample array (pointer) */ \ -/* _ny : number of samples written to _y */ \ -void RESAMP(_execute_block)(RESAMP() _q, \ - TI * _x, \ - unsigned int _nx, \ - TO * _y, \ - unsigned int * _ny); \ +#define LIQUID_RESAMP_DEFINE_API(RESAMP,TO,TC,TI) \ + \ +/* Arbitrary rate resampler, implemented as a polyphase filterbank */ \ +typedef struct RESAMP(_s) * RESAMP(); \ + \ +/* Create arbitrary resampler object from filter prototype */ \ +/* _rate : arbitrary resampling rate, 0 < _rate */ \ +/* _m : filter semi-length (delay), 0 < _m */ \ +/* _fc : filter cutoff frequency, 0 < _fc < 0.5 */ \ +/* _As : filter stop-band attenuation [dB], 0 < _As */ \ +/* _npfb : number of filters in the bank, 0 < _npfb */ \ +RESAMP() RESAMP(_create)(float _rate, \ + unsigned int _m, \ + float _fc, \ + float _As, \ + unsigned int _npfb); \ + \ +/* Create arbitrary resampler object with a specified input resampling */ \ +/* rate and default parameters. This is a simplified method to provide */ \ +/* a basic resampler with a baseline set of parameters, abstracting */ \ +/* away some of the complexities with the filterbank design. */ \ +/* The default parameters are */ \ +/* m = 7 (filter semi-length), */ \ +/* fc = min(0.49,_rate/2) (filter cutoff frequency), */ \ +/* As = 60 dB (filter stop-band attenuation), and */ \ +/* npfb = 64 (number of filters in the bank). */ \ +/* _rate : arbitrary resampling rate, 0 < _rate */ \ +RESAMP() RESAMP(_create_default)(float _rate); \ + \ +/* Destroy arbitrary resampler object, freeing all internal memory */ \ +void RESAMP(_destroy)(RESAMP() _q); \ + \ +/* Print resamp object internals to stdout */ \ +void RESAMP(_print)(RESAMP() _q); \ + \ +/* Reset resamp object internals */ \ +void RESAMP(_reset)(RESAMP() _q); \ + \ +/* Get resampler delay (filter semi-length \(m\)) */ \ +unsigned int RESAMP(_get_delay)(RESAMP() _q); \ + \ +/* Set rate of arbitrary resampler */ \ +/* _q : resampling object */ \ +/* _rate : new sampling rate, _rate > 0 */ \ +void RESAMP(_set_rate)(RESAMP() _q, \ + float _rate); \ + \ +/* Get rate of arbitrary resampler */ \ +float RESAMP(_get_rate)(RESAMP() _q); \ + \ +/* adjust rate of arbitrary resampler */ \ +/* _q : resampling object */ \ +/* _gamma : rate adjustment factor: rate <- rate * gamma, _gamma > 0 */ \ +void RESAMP(_adjust_rate)(RESAMP() _q, \ + float _gamma); \ + \ +/* Set resampling timing phase */ \ +/* _q : resampling object */ \ +/* _tau : sample timing phase, -1 <= _tau <= 1 */ \ +void RESAMP(_set_timing_phase)(RESAMP() _q, \ + float _tau); \ + \ +/* Adjust resampling timing phase */ \ +/* _q : resampling object */ \ +/* _delta : sample timing adjustment, -1 <= _delta <= 1 */ \ +void RESAMP(_adjust_timing_phase)(RESAMP() _q, \ + float _delta); \ + \ +/* Execute arbitrary resampler on a single input sample and store the */ \ +/* resulting samples in the output array. The number of output samples */ \ +/* is depenent upon the resampling rate but will be at most */ \ +/* \( \lceil{ r \rceil} \) samples. */ \ +/* _q : resamp object */ \ +/* _x : single input sample */ \ +/* _y : output sample array (pointer) */ \ +/* _num_written : number of samples written to _y */ \ +void RESAMP(_execute)(RESAMP() _q, \ + TI _x, \ + TO * _y, \ + unsigned int * _num_written); \ + \ +/* Execute arbitrary resampler on a block of input samples and store */ \ +/* the resulting samples in the output array. The number of output */ \ +/* samples is depenent upon the resampling rate and the number of input */ \ +/* samples but will be at most \( \lceil{ r n_x \rceil} \) samples. */ \ +/* _q : resamp object */ \ +/* _x : input buffer, [size: _nx x 1] */ \ +/* _nx : input buffer */ \ +/* _y : output sample array (pointer) */ \ +/* _ny : number of samples written to _y */ \ +void RESAMP(_execute_block)(RESAMP() _q, \ + TI * _x, \ + unsigned int _nx, \ + TO * _y, \ + unsigned int * _ny); \ LIQUID_RESAMP_DEFINE_API(LIQUID_RESAMP_MANGLE_RRRF, float, @@ -3277,42 +3891,55 @@ typedef enum { #define LIQUID_MSRESAMP2_MANGLE_CRCF(name) LIQUID_CONCAT(msresamp2_crcf,name) #define LIQUID_MSRESAMP2_MANGLE_CCCF(name) LIQUID_CONCAT(msresamp2_cccf,name) -#define LIQUID_MSRESAMP2_DEFINE_API(MSRESAMP2,TO,TC,TI) \ -typedef struct MSRESAMP2(_s) * MSRESAMP2(); \ - \ -/* create multi-stage half-band resampler */ \ -/* _type : resampler type (e.g. LIQUID_RESAMP_DECIM) */ \ -/* _num_stages : number of resampling stages */ \ -/* _fc : filter cut-off frequency 0 < _fc < 0.5 */ \ -/* _f0 : filter center frequency */ \ -/* _As : stop-band attenuation [dB] */ \ -MSRESAMP2() MSRESAMP2(_create)(int _type, \ - unsigned int _num_stages, \ - float _fc, \ - float _f0, \ - float _As); \ - \ -/* destroy multi-stage half-bandresampler */ \ -void MSRESAMP2(_destroy)(MSRESAMP2() _q); \ - \ -/* print msresamp object internals to stdout */ \ -void MSRESAMP2(_print)(MSRESAMP2() _q); \ - \ -/* reset msresamp object internal state */ \ -void MSRESAMP2(_reset)(MSRESAMP2() _q); \ - \ -/* get group delay (number of output samples) */ \ -float MSRESAMP2(_get_delay)(MSRESAMP2() _q); \ - \ -/* execute multi-stage resampler, M = 2^num_stages */ \ -/* LIQUID_RESAMP_INTERP: input: 1, output: M */ \ -/* LIQUID_RESAMP_DECIM: input: M, output: 1 */ \ -/* _q : msresamp object */ \ -/* _x : input sample array */ \ -/* _y : output sample array */ \ -void MSRESAMP2(_execute)(MSRESAMP2() _q, \ - TI * _x, \ - TO * _y); \ +#define LIQUID_MSRESAMP2_DEFINE_API(MSRESAMP2,TO,TC,TI) \ + \ +/* Multi-stage half-band resampler, implemented as cascaded dyadic */ \ +/* (half-band) polyphase filter banks for interpolation and decimation. */ \ +typedef struct MSRESAMP2(_s) * MSRESAMP2(); \ + \ +/* Create multi-stage half-band resampler as either decimator or */ \ +/* interpolator. */ \ +/* _type : resampler type (e.g. LIQUID_RESAMP_DECIM) */ \ +/* _num_stages : number of resampling stages, _num_stages <= 16 */ \ +/* _fc : filter cut-off frequency, 0 < _fc < 0.5 */ \ +/* _f0 : filter center frequency (set to zero) */ \ +/* _As : stop-band attenuation [dB], _As > 0 */ \ +MSRESAMP2() MSRESAMP2(_create)(int _type, \ + unsigned int _num_stages, \ + float _fc, \ + float _f0, \ + float _As); \ + \ +/* Destroy multi-stage half-band resampler, freeing all internal memory */ \ +void MSRESAMP2(_destroy)(MSRESAMP2() _q); \ + \ +/* Print msresamp object internals to stdout */ \ +void MSRESAMP2(_print)(MSRESAMP2() _q); \ + \ +/* Reset msresamp object internal state */ \ +void MSRESAMP2(_reset)(MSRESAMP2() _q); \ + \ +/* Get multi-stage half-band resampling rate */ \ +float MSRESAMP2(_get_rate)(MSRESAMP2() _q); \ + \ +/* Get number of half-band resampling stages in object */ \ +unsigned int MSRESAMP2(_get_num_stages)(MSRESAMP2() _q); \ + \ +/* Get resampling type (LIQUID_RESAMP_DECIM, LIQUID_RESAMP_INTERP) */ \ +int MSRESAMP2(_get_type)(MSRESAMP2() _q); \ + \ +/* Get group delay (number of output samples) */ \ +float MSRESAMP2(_get_delay)(MSRESAMP2() _q); \ + \ +/* Execute multi-stage resampler, M = 2^num_stages */ \ +/* LIQUID_RESAMP_INTERP: input: 1, output: M */ \ +/* LIQUID_RESAMP_DECIM: input: M, output: 1 */ \ +/* _q : msresamp object */ \ +/* _x : input sample array */ \ +/* _y : output sample array */ \ +void MSRESAMP2(_execute)(MSRESAMP2() _q, \ + TI * _x, \ + TO * _y); \ LIQUID_MSRESAMP2_DEFINE_API(LIQUID_MSRESAMP2_MANGLE_RRRF, float, @@ -3337,38 +3964,49 @@ LIQUID_MSRESAMP2_DEFINE_API(LIQUID_MSRESAMP2_MANGLE_CCCF, #define LIQUID_MSRESAMP_MANGLE_CRCF(name) LIQUID_CONCAT(msresamp_crcf,name) #define LIQUID_MSRESAMP_MANGLE_CCCF(name) LIQUID_CONCAT(msresamp_cccf,name) -#define LIQUID_MSRESAMP_DEFINE_API(MSRESAMP,TO,TC,TI) \ -typedef struct MSRESAMP(_s) * MSRESAMP(); \ - \ -/* create multi-stage arbitrary resampler */ \ -/* _r : resampling rate [output/input] */ \ -/* _As : stop-band attenuation [dB] */ \ -MSRESAMP() MSRESAMP(_create)(float _r, \ - float _As); \ - \ -/* destroy multi-stage arbitrary resampler */ \ -void MSRESAMP(_destroy)(MSRESAMP() _q); \ - \ -/* print msresamp object internals to stdout */ \ -void MSRESAMP(_print)(MSRESAMP() _q); \ - \ -/* reset msresamp object internal state */ \ -void MSRESAMP(_reset)(MSRESAMP() _q); \ - \ -/* get filter delay (output samples) */ \ -float MSRESAMP(_get_delay)(MSRESAMP() _q); \ - \ -/* execute multi-stage resampler */ \ -/* _q : msresamp object */ \ -/* _x : input sample array [size: _nx x 1] */ \ -/* _nx : input sample array size */ \ -/* _y : output sample array [size: variable] */ \ -/* _ny : number of samples written to _y */ \ -void MSRESAMP(_execute)(MSRESAMP() _q, \ - TI * _x, \ - unsigned int _nx, \ - TO * _y, \ - unsigned int * _ny); \ +#define LIQUID_MSRESAMP_DEFINE_API(MSRESAMP,TO,TC,TI) \ + \ +/* Multi-stage half-band resampler, implemented as cascaded dyadic */ \ +/* (half-band) polyphase filter banks followed by an arbitrary rate */ \ +/* resampler for interpolation and decimation. */ \ +typedef struct MSRESAMP(_s) * MSRESAMP(); \ + \ +/* Create multi-stage arbitrary resampler */ \ +/* _r : resampling rate (output/input), _r > 0 */ \ +/* _As : stop-band attenuation [dB], _As > 0 */ \ +MSRESAMP() MSRESAMP(_create)(float _r, \ + float _As); \ + \ +/* Destroy multi-stage arbitrary resampler */ \ +void MSRESAMP(_destroy)(MSRESAMP() _q); \ + \ +/* Print msresamp object internals to stdout */ \ +void MSRESAMP(_print)(MSRESAMP() _q); \ + \ +/* Reset msresamp object internal state */ \ +void MSRESAMP(_reset)(MSRESAMP() _q); \ + \ +/* Get filter delay (output samples) */ \ +float MSRESAMP(_get_delay)(MSRESAMP() _q); \ + \ +/* get overall resampling rate */ \ +float MSRESAMP(_get_rate)(MSRESAMP() _q); \ + \ +/* Execute multi-stage resampler on one or more input samples. */ \ +/* The number of output samples is dependent upon the resampling rate */ \ +/* and the number of input samples. In general it is good practice to */ \ +/* allocate at least \( \lceil{ 1 + 2 r n_x \rceil} \) samples in the */ \ +/* output array to avoid overflows. */ \ +/* _q : msresamp object */ \ +/* _x : input sample array, [size: _nx x 1] */ \ +/* _nx : input sample array size */ \ +/* _y : pointer to output array for storing result */ \ +/* _ny : number of samples written to _y */ \ +void MSRESAMP(_execute)(MSRESAMP() _q, \ + TI * _x, \ + unsigned int _nx, \ + TO * _y, \ + unsigned int * _ny); \ LIQUID_MSRESAMP_DEFINE_API(LIQUID_MSRESAMP_MANGLE_RRRF, float, @@ -3392,82 +4030,85 @@ LIQUID_MSRESAMP_DEFINE_API(LIQUID_MSRESAMP_MANGLE_CCCF, #define LIQUID_SYMSYNC_MANGLE_RRRF(name) LIQUID_CONCAT(symsync_rrrf,name) #define LIQUID_SYMSYNC_MANGLE_CRCF(name) LIQUID_CONCAT(symsync_crcf,name) -#define LIQUID_SYMSYNC_DEFINE_API(SYMSYNC,TO,TC,TI) \ - \ -typedef struct SYMSYNC(_s) * SYMSYNC(); \ - \ -/* create synchronizer object from external coefficients */ \ -/* _k : samples per symbol */ \ -/* _M : number of filters in the bank */ \ -/* _h : matched filter coefficients [size: */ \ -/* _h_len : length of matched filter */ \ -SYMSYNC() SYMSYNC(_create)(unsigned int _k, \ - unsigned int _M, \ - TC * _h, \ - unsigned int _h_len); \ - \ -/* create square-root Nyquist symbol synchronizer */ \ -/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ -/* _k : samples/symbol */ \ -/* _m : symbol delay */ \ -/* _beta : rolloff factor, beta in (0,1] */ \ -/* _M : number of filters in the bank */ \ -SYMSYNC() SYMSYNC(_create_rnyquist)(int _type, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - unsigned int _M); \ - \ -/* create symsync using Kaiser filter interpolator; useful */ \ -/* when the input signal has matched filter applied already */ \ -/* _k : input samples/symbol */ \ -/* _m : symbol delay */ \ -/* _beta : rolloff factor, beta in (0,1] */ \ -/* _M : number of filters in the bank */ \ -SYMSYNC() SYMSYNC(_create_kaiser)(unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - unsigned int _M); \ - \ -/* destroy symsync object, freeing all internal memory */ \ -void SYMSYNC(_destroy)(SYMSYNC() _q); \ - \ -/* print symsync object's parameters */ \ -void SYMSYNC(_print)(SYMSYNC() _q); \ - \ -/* reset symsync internal state */ \ -void SYMSYNC(_reset)(SYMSYNC() _q); \ - \ -/* lock/unlock loop control */ \ -void SYMSYNC(_lock)( SYMSYNC() _q); \ -void SYMSYNC(_unlock)(SYMSYNC() _q); \ - \ -/* set synchronizer output rate (samples/symbol) */ \ -/* _q : synchronizer object */ \ -/* _k_out : output samples/symbol */ \ -void SYMSYNC(_set_output_rate)(SYMSYNC() _q, \ - unsigned int _k_out); \ - \ -/* set loop-filter bandwidth */ \ -/* _q : synchronizer object */ \ -/* _bt : loop bandwidth */ \ -void SYMSYNC(_set_lf_bw)(SYMSYNC() _q, \ - float _bt); \ - \ -/* return instantaneous fractional timing offset estimate */ \ -float SYMSYNC(_get_tau)(SYMSYNC() _q); \ - \ -/* execute synchronizer on input data array */ \ -/* _q : synchronizer object */ \ -/* _x : input data array */ \ -/* _nx : number of input samples */ \ -/* _y : output data array */ \ -/* _ny : number of samples written to output buffer */ \ -void SYMSYNC(_execute)(SYMSYNC() _q, \ - TI * _x, \ - unsigned int _nx, \ - TO * _y, \ - unsigned int * _ny); \ +#define LIQUID_SYMSYNC_DEFINE_API(SYMSYNC,TO,TC,TI) \ + \ +/* Multi-rate symbol synchronizer for symbol timing recovery. */ \ +typedef struct SYMSYNC(_s) * SYMSYNC(); \ + \ +/* Create synchronizer object from external coefficients */ \ +/* _k : samples per symbol, _k >= 2 */ \ +/* _M : number of filters in the bank, _M > 0 */ \ +/* _h : matched filter coefficients, [size: _h_len x 1] */ \ +/* _h_len : length of matched filter; \( h_{len} = 2 k m + 1 \) */ \ +SYMSYNC() SYMSYNC(_create)(unsigned int _k, \ + unsigned int _M, \ + TC * _h, \ + unsigned int _h_len); \ + \ +/* Create square-root Nyquist symbol synchronizer from prototype */ \ +/* _type : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ +/* _k : samples/symbol, _k >= 2 */ \ +/* _m : symbol delay, _m > 0 */ \ +/* _beta : rolloff factor, 0 <= _beta <= 1 */ \ +/* _M : number of filters in the bank, _M > 0 */ \ +SYMSYNC() SYMSYNC(_create_rnyquist)(int _type, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta, \ + unsigned int _M); \ + \ +/* Create symsync using Kaiser filter interpolator. This is useful when */ \ +/* the input signal has its matched filter applied already. */ \ +/* _k : input samples/symbol, _k >= 2 */ \ +/* _m : symbol delay, _m > 0 */ \ +/* _beta : rolloff factor, 0<= _beta <= 1 */ \ +/* _M : number of filters in the bank, _M > 0 */ \ +SYMSYNC() SYMSYNC(_create_kaiser)(unsigned int _k, \ + unsigned int _m, \ + float _beta, \ + unsigned int _M); \ + \ +/* Destroy symsync object, freeing all internal memory */ \ +void SYMSYNC(_destroy)(SYMSYNC() _q); \ + \ +/* Print symsync object's parameters to stdout */ \ +void SYMSYNC(_print)(SYMSYNC() _q); \ + \ +/* Reset symsync internal state */ \ +void SYMSYNC(_reset)(SYMSYNC() _q); \ + \ +/* Lock the symbol synchronizer's loop control */ \ +void SYMSYNC(_lock)(SYMSYNC() _q); \ + \ +/* Unlock the symbol synchronizer's loop control */ \ +void SYMSYNC(_unlock)(SYMSYNC() _q); \ + \ +/* Set synchronizer output rate (samples/symbol) */ \ +/* _q : synchronizer object */ \ +/* _k_out : output samples/symbol, _k_out > 0 */ \ +void SYMSYNC(_set_output_rate)(SYMSYNC() _q, \ + unsigned int _k_out); \ + \ +/* Set loop-filter bandwidth */ \ +/* _q : synchronizer object */ \ +/* _bt : loop bandwidth, 0 <= _bt <= 1 */ \ +void SYMSYNC(_set_lf_bw)(SYMSYNC() _q, \ + float _bt); \ + \ +/* Return instantaneous fractional timing offset estimate */ \ +float SYMSYNC(_get_tau)(SYMSYNC() _q); \ + \ +/* Execute synchronizer on input data array */ \ +/* _q : synchronizer object */ \ +/* _x : input data array, [size: _nx x 1] */ \ +/* _nx : number of input samples */ \ +/* _y : output data array */ \ +/* _ny : number of samples written to output buffer */ \ +void SYMSYNC(_execute)(SYMSYNC() _q, \ + TI * _x, \ + unsigned int _nx, \ + TO * _y, \ + unsigned int * _ny); \ LIQUID_SYMSYNC_DEFINE_API(LIQUID_SYMSYNC_MANGLE_RRRF, float, @@ -3493,80 +4134,82 @@ LIQUID_SYMSYNC_DEFINE_API(LIQUID_SYMSYNC_MANGLE_CRCF, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_FIRFARROW_DEFINE_API(FIRFARROW,TO,TC,TI) \ - \ -typedef struct FIRFARROW(_s) * FIRFARROW(); \ - \ -/* create firfarrow object */ \ -/* _h_len : filter length */ \ -/* _p : polynomial order */ \ -/* _fc : filter cutoff frequency */ \ -/* _As : stopband attenuation [dB] */ \ -FIRFARROW() FIRFARROW(_create)(unsigned int _h_len, \ - unsigned int _p, \ - float _fc, \ - float _As); \ - \ -/* destroy firfarrow object, freeing all internal memory */ \ -void FIRFARROW(_destroy)(FIRFARROW() _q); \ - \ -/* print firfarrow object's internal properties */ \ -void FIRFARROW(_print)(FIRFARROW() _q); \ - \ -/* reset firfarrow object's internal state */ \ -void FIRFARROW(_reset)(FIRFARROW() _q); \ - \ -/* push sample into firfarrow object */ \ -/* _q : firfarrow object */ \ -/* _x : input sample */ \ -void FIRFARROW(_push)(FIRFARROW() _q, \ - TI _x); \ - \ -/* set fractional delay of firfarrow object */ \ -/* _q : firfarrow object */ \ -/* _mu : fractional sample delay */ \ -void FIRFARROW(_set_delay)(FIRFARROW() _q, \ - float _mu); \ - \ -/* execute firfarrow internal dot product */ \ -/* _q : firfarrow object */ \ -/* _y : output sample pointer */ \ -void FIRFARROW(_execute)(FIRFARROW() _q, \ - TO * _y); \ - \ -/* compute firfarrow filter on block of samples; the input */ \ -/* and output arrays may have the same pointer */ \ -/* _q : firfarrow object */ \ -/* _x : input array [size: _n x 1] */ \ -/* _n : input, output array size */ \ -/* _y : output array [size: _n x 1] */ \ -void FIRFARROW(_execute_block)(FIRFARROW() _q, \ - TI * _x, \ - unsigned int _n, \ - TO * _y); \ - \ -/* get length of firfarrow object (number of filter taps) */ \ -unsigned int FIRFARROW(_get_length)(FIRFARROW() _q); \ - \ -/* get coefficients of firfarrow object */ \ -/* _q : firfarrow object */ \ -/* _h : output coefficients pointer */ \ -void FIRFARROW(_get_coefficients)(FIRFARROW() _q, \ - float * _h); \ - \ -/* compute complex frequency response */ \ -/* _q : filter object */ \ -/* _fc : frequency */ \ -/* _H : output frequency response */ \ -void FIRFARROW(_freqresponse)(FIRFARROW() _q, \ - float _fc, \ - liquid_float_complex * _H); \ - \ -/* compute group delay [samples] */ \ -/* _q : filter object */ \ -/* _fc : frequency */ \ -float FIRFARROW(_groupdelay)(FIRFARROW() _q, \ - float _fc); \ +#define LIQUID_FIRFARROW_DEFINE_API(FIRFARROW,TO,TC,TI) \ + \ +/* Finite impulse response (FIR) Farrow filter for timing delay */ \ +typedef struct FIRFARROW(_s) * FIRFARROW(); \ + \ +/* Create firfarrow object */ \ +/* _h_len : filter length, _h_len >= 2 */ \ +/* _p : polynomial order, _p >= 1 */ \ +/* _fc : filter cutoff frequency, 0 <= _fc <= 0.5 */ \ +/* _As : stopband attenuation [dB], _As > 0 */ \ +FIRFARROW() FIRFARROW(_create)(unsigned int _h_len, \ + unsigned int _p, \ + float _fc, \ + float _As); \ + \ +/* Destroy firfarrow object, freeing all internal memory */ \ +void FIRFARROW(_destroy)(FIRFARROW() _q); \ + \ +/* Print firfarrow object's internal properties */ \ +void FIRFARROW(_print)(FIRFARROW() _q); \ + \ +/* Reset firfarrow object's internal state */ \ +void FIRFARROW(_reset)(FIRFARROW() _q); \ + \ +/* Push sample into firfarrow object */ \ +/* _q : firfarrow object */ \ +/* _x : input sample */ \ +void FIRFARROW(_push)(FIRFARROW() _q, \ + TI _x); \ + \ +/* Set fractional delay of firfarrow object */ \ +/* _q : firfarrow object */ \ +/* _mu : fractional sample delay, -1 <= _mu <= 1 */ \ +void FIRFARROW(_set_delay)(FIRFARROW() _q, \ + float _mu); \ + \ +/* Execute firfarrow internal dot product */ \ +/* _q : firfarrow object */ \ +/* _y : output sample pointer */ \ +void FIRFARROW(_execute)(FIRFARROW() _q, \ + TO * _y); \ + \ +/* Execute firfarrow filter on block of samples. */ \ +/* In-place operation is permitted (the input and output arrays may */ \ +/* share the same pointer) */ \ +/* _q : firfarrow object */ \ +/* _x : input array, [size: _n x 1] */ \ +/* _n : input, output array size */ \ +/* _y : output array, [size: _n x 1] */ \ +void FIRFARROW(_execute_block)(FIRFARROW() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + \ +/* Get length of firfarrow object (number of filter taps) */ \ +unsigned int FIRFARROW(_get_length)(FIRFARROW() _q); \ + \ +/* Get coefficients of firfarrow object */ \ +/* _q : firfarrow object */ \ +/* _h : output coefficients pointer, [size: _h_len x 1] */ \ +void FIRFARROW(_get_coefficients)(FIRFARROW() _q, \ + float * _h); \ + \ +/* Compute complex frequency response */ \ +/* _q : filter object */ \ +/* _fc : frequency */ \ +/* _H : output frequency response */ \ +void FIRFARROW(_freqresponse)(FIRFARROW() _q, \ + float _fc, \ + liquid_float_complex * _H); \ + \ +/* Compute group delay [samples] */ \ +/* _q : filter object */ \ +/* _fc : frequency */ \ +float FIRFARROW(_groupdelay)(FIRFARROW() _q, \ + float _fc); \ LIQUID_FIRFARROW_DEFINE_API(LIQUID_FIRFARROW_MANGLE_RRRF, float, @@ -3579,6 +4222,79 @@ LIQUID_FIRFARROW_DEFINE_API(LIQUID_FIRFARROW_MANGLE_CRCF, liquid_float_complex) +// +// Order-statistic filter +// + +#define LIQUID_ORDFILT_MANGLE_RRRF(name) LIQUID_CONCAT(ordfilt_rrrf,name) + +// Macro: +// ORDFILT : name-mangling macro +// TO : output data type +// TC : coefficients data type +// TI : input data type +#define LIQUID_ORDFILT_DEFINE_API(ORDFILT,TO,TC,TI) \ + \ +/* Finite impulse response (FIR) filter */ \ +typedef struct ORDFILT(_s) * ORDFILT(); \ + \ +/* Create a order-statistic filter (ordfilt) object by specifying */ \ +/* the buffer size and appropriate sample index of order statistic. */ \ +/* _n : buffer size, _n > 0 */ \ +/* _k : sample index for order statistic, 0 <= _k < _n */ \ +ORDFILT() ORDFILT(_create)(unsigned int _n, \ + unsigned int _k); \ + \ +/* Create a median filter by specifying buffer semi-length. */ \ +/* _m : buffer semi-length */ \ +ORDFILT() ORDFILT(_create_medfilt)(unsigned int _m); \ + \ +/* Destroy filter object and free all internal memory */ \ +void ORDFILT(_destroy)(ORDFILT() _q); \ + \ +/* Reset filter object's internal buffer */ \ +void ORDFILT(_reset)(ORDFILT() _q); \ + \ +/* Print filter object information to stdout */ \ +void ORDFILT(_print)(ORDFILT() _q); \ + \ +/* Push sample into filter object's internal buffer */ \ +/* _q : filter object */ \ +/* _x : single input sample */ \ +void ORDFILT(_push)(ORDFILT() _q, \ + TI _x); \ + \ +/* Write block of samples into object's internal buffer */ \ +/* _q : filter object */ \ +/* _x : array of input samples, [size: _n x 1] */ \ +/* _n : number of input elements */ \ +void ORDFILT(_write)(ORDFILT() _q, \ + TI * _x, \ + unsigned int _n); \ + \ +/* Execute vector dot product on the filter's internal buffer and */ \ +/* coefficients */ \ +/* _q : filter object */ \ +/* _y : pointer to single output sample */ \ +void ORDFILT(_execute)(ORDFILT() _q, \ + TO * _y); \ + \ +/* Execute the filter on a block of input samples; in-place operation */ \ +/* is permitted (_x and _y may point to the same place in memory) */ \ +/* _q : filter object */ \ +/* _x : pointer to input array, [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +/* _y : pointer to output array, [size: _n x 1] */ \ +void ORDFILT(_execute_block)(ORDFILT() _q, \ + TI * _x, \ + unsigned int _n, \ + TO * _y); \ + +LIQUID_ORDFILT_DEFINE_API(LIQUID_ORDFILT_MANGLE_RRRF, + float, + float, + float) + // // MODULE : framing @@ -3680,6 +4396,9 @@ unsigned int qpacketmodem_get_fec0 (qpacketmodem _q); unsigned int qpacketmodem_get_fec1 (qpacketmodem _q); unsigned int qpacketmodem_get_modscheme(qpacketmodem _q); +float qpacketmodem_get_demodulator_phase_error(qpacketmodem _q); +float qpacketmodem_get_demodulator_evm(qpacketmodem _q); + // encode packet into un-modulated frame symbol indices // _q : qpacketmodem object // _payload : unencoded payload bytes @@ -3730,6 +4449,12 @@ int qpacketmodem_decode_soft(qpacketmodem _q, liquid_float_complex * _frame, unsigned char * _payload); +int qpacketmodem_decode_soft_sym(qpacketmodem _q, + liquid_float_complex _symbol); + +int qpacketmodem_decode_soft_payload(qpacketmodem _q, + unsigned char * _payload); + // // pilot generator for streaming applications // @@ -3889,6 +4614,13 @@ void flexframegen_getprops(flexframegen _q, flexframegenprops_s * _props); // set frame properties int flexframegen_setprops(flexframegen _q, flexframegenprops_s * _props); +// set length of user-defined portion of header +void flexframegen_set_header_len(flexframegen _q, unsigned int _len); + +// set properties for header section +int flexframegen_set_header_props(flexframegen _q, + flexframegenprops_s * _props); + // get length of assembled frame (samples) unsigned int flexframegen_getframelen(flexframegen _q); @@ -3934,6 +4666,22 @@ void flexframesync_reset(flexframesync _q); // has frame been detected? int flexframesync_is_frame_open(flexframesync _q); +// change length of user-defined region in header +void flexframesync_set_header_len(flexframesync _q, + unsigned int _len); + +// enable or disable soft decoding of header +void flexframesync_decode_header_soft(flexframesync _q, + int _soft); + +// enable or disable soft decoding of payload +void flexframesync_decode_payload_soft(flexframesync _q, + int _soft); + +// set properties for header section +int flexframesync_set_header_props(flexframesync _q, + flexframegenprops_s * _props); + // push samples through frame synchronizer // _q : frame synchronizer object // _x : input samples [size: _n x 1] @@ -4054,6 +4802,7 @@ gmskframegen gmskframegen_create(); void gmskframegen_destroy (gmskframegen _q); int gmskframegen_is_assembled (gmskframegen _q); void gmskframegen_print (gmskframegen _q); +void gmskframegen_set_header_len(gmskframegen _q, unsigned int _len); void gmskframegen_reset (gmskframegen _q); void gmskframegen_assemble (gmskframegen _q, const unsigned char * _header, @@ -4080,6 +4829,7 @@ gmskframesync gmskframesync_create(framesync_callback _callback, void * _userdata); void gmskframesync_destroy(gmskframesync _q); void gmskframesync_print(gmskframesync _q); +void gmskframesync_set_header_len(gmskframesync _q, unsigned int _len); void gmskframesync_reset(gmskframesync _q); int gmskframesync_is_frame_open(gmskframesync _q); void gmskframesync_execute(gmskframesync _q, @@ -4092,6 +4842,72 @@ void gmskframesync_debug_disable(gmskframesync _q); void gmskframesync_debug_print(gmskframesync _q, const char * _filename); +// +// DSSS frame generator +// + +typedef struct { + unsigned int check; + unsigned int fec0; + unsigned int fec1; +} dsssframegenprops_s; + +typedef struct dsssframegen_s * dsssframegen; + +dsssframegen dsssframegen_create(dsssframegenprops_s * _props); +void dsssframegen_destroy(dsssframegen _q); +void dsssframegen_reset(dsssframegen _q); +int dsssframegen_is_assembled(dsssframegen _q); +void dsssframegen_getprops(dsssframegen _q, dsssframegenprops_s * _props); +int dsssframegen_setprops(dsssframegen _q, dsssframegenprops_s * _props); +void dsssframegen_set_header_len(dsssframegen _q, unsigned int _len); +int dsssframegen_set_header_props(dsssframegen _q, + dsssframegenprops_s * _props); +unsigned int dsssframegen_getframelen(dsssframegen _q); + +// assemble a frame from an array of data +// _q : frame generator object +// _header : frame header +// _payload : payload data [size: _payload_len x 1] +// _payload_len : payload data length +void dsssframegen_assemble(dsssframegen _q, + const unsigned char * _header, + const unsigned char * _payload, + unsigned int _payload_len); + +int dsssframegen_write_samples(dsssframegen _q, + liquid_float_complex * _buffer, + unsigned int _buffer_len); + + +// +// DSSS frame synchronizer +// + +typedef struct dsssframesync_s * dsssframesync; + +dsssframesync dsssframesync_create(framesync_callback _callback, void * _userdata); +void dsssframesync_destroy(dsssframesync _q); +void dsssframesync_print(dsssframesync _q); +void dsssframesync_reset(dsssframesync _q); +int dsssframesync_is_frame_open(dsssframesync _q); +void dsssframesync_set_header_len(dsssframesync _q, + unsigned int _len); +void dsssframesync_decode_header_soft(dsssframesync _q, + int _soft); +void dsssframesync_decode_payload_soft(dsssframesync _q, + int _soft); +int dsssframesync_set_header_props(dsssframesync _q, + dsssframegenprops_s * _props); +void dsssframesync_execute(dsssframesync _q, + liquid_float_complex * _x, + unsigned int _n); +void dsssframesync_reset_framedatastats(dsssframesync _q); +framedatastats_s dsssframesync_get_framedatastats (dsssframesync _q); + +void dsssframesync_debug_enable(dsssframesync _q); +void dsssframesync_debug_disable(dsssframesync _q); +void dsssframesync_debug_print(dsssframesync _q, const char * _filename); // // OFDM flexframe generator @@ -4141,6 +4957,13 @@ void ofdmflexframegen_getprops(ofdmflexframegen _q, void ofdmflexframegen_setprops(ofdmflexframegen _q, ofdmflexframegenprops_s * _props); +// set user-defined header length +void ofdmflexframegen_set_header_len(ofdmflexframegen _q, + unsigned int _len); + +void ofdmflexframegen_set_header_props(ofdmflexframegen _q, + ofdmflexframegenprops_s * _props); + // get length of frame (symbols) // _q : OFDM frame generator object unsigned int ofdmflexframegen_getframelen(ofdmflexframegen _q); @@ -4185,6 +5008,19 @@ ofdmflexframesync ofdmflexframesync_create(unsigned int _M, void ofdmflexframesync_destroy(ofdmflexframesync _q); void ofdmflexframesync_print(ofdmflexframesync _q); +// set user-defined header length +void ofdmflexframesync_set_header_len(ofdmflexframesync _q, + unsigned int _len); + +void ofdmflexframesync_decode_header_soft(ofdmflexframesync _q, + int _soft); + +void ofdmflexframesync_decode_payload_soft(ofdmflexframesync _q, + int _soft); + +void ofdmflexframesync_set_header_props(ofdmflexframesync _q, + ofdmflexframegenprops_s * _props); + void ofdmflexframesync_reset(ofdmflexframesync _q); int ofdmflexframesync_is_frame_open(ofdmflexframesync _q); void ofdmflexframesync_execute(ofdmflexframesync _q, @@ -4217,19 +5053,38 @@ void ofdmflexframesync_debug_print(ofdmflexframesync _q, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_BSYNC_DEFINE_API(BSYNC,TO,TC,TI) \ -typedef struct BSYNC(_s) * BSYNC(); \ - \ -BSYNC() BSYNC(_create)(unsigned int _n, TC * _v); \ - \ -/* create binary synchronizer from m-sequence */ \ -/* _g : m-sequence generator polynomial */ \ -/* _k : samples/symbol (over-sampling factor) */ \ -BSYNC() BSYNC(_create_msequence)(unsigned int _g, \ - unsigned int _k); \ -void BSYNC(_destroy)(BSYNC() _fs); \ -void BSYNC(_print)(BSYNC() _fs); \ -void BSYNC(_correlate)(BSYNC() _fs, TI _sym, TO * _y); +#define LIQUID_BSYNC_DEFINE_API(BSYNC,TO,TC,TI) \ + \ +/* Binary P/N synchronizer */ \ +typedef struct BSYNC(_s) * BSYNC(); \ + \ +/* Create bsync object */ \ +/* _n : sequence length */ \ +/* _v : correlation sequence [size: _n x 1] */ \ +BSYNC() BSYNC(_create)(unsigned int _n, \ + TC * _v); \ + \ +/* Create binary synchronizer from m-sequence */ \ +/* _g : m-sequence generator polynomial */ \ +/* _k : samples/symbol (over-sampling factor) */ \ +BSYNC() BSYNC(_create_msequence)(unsigned int _g, \ + unsigned int _k); \ + \ +/* Destroy binary synchronizer object, freeing all internal memory */ \ +/* _q : bsync object */ \ +void BSYNC(_destroy)(BSYNC() _q); \ + \ +/* Print object internals to stdout */ \ +/* _q : bsync object */ \ +void BSYNC(_print)(BSYNC() _q); \ + \ +/* Correlate input signal against internal sequence */ \ +/* _q : bsync object */ \ +/* _x : input sample */ \ +/* _y : pointer to output sample */ \ +void BSYNC(_correlate)(BSYNC() _q, \ + TI _x, \ + TO * _y); \ LIQUID_BSYNC_DEFINE_API(LIQUID_BSYNC_MANGLE_RRRF, float, @@ -4258,41 +5113,43 @@ LIQUID_BSYNC_DEFINE_API(LIQUID_BSYNC_MANGLE_CCCF, // TO : output data type // TC : coefficients data type // TI : input data type -#define LIQUID_PRESYNC_DEFINE_API(PRESYNC,TO,TC,TI) \ -typedef struct PRESYNC(_s) * PRESYNC(); \ - \ -/* create pre-demod synchronizer */ \ -/* _v : baseband sequence */ \ -/* _n : baseband sequence length */ \ -/* _dphi_max : maximum absolute frequency deviation */ \ -/* _m : number of correlators */ \ -PRESYNC() PRESYNC(_create)(TC * _v, \ - unsigned int _n, \ - float _dphi_max, \ - unsigned int _m); \ - \ -/* destroy pre-demod synchronizer */ \ -void PRESYNC(_destroy)(PRESYNC() _q); \ - \ -/* print pre-demod synchronizer internal state */ \ -void PRESYNC(_print)(PRESYNC() _q); \ - \ -/* reset pre-demod synchronizer internal state */ \ -void PRESYNC(_reset)(PRESYNC() _q); \ - \ -/* push input sample into pre-demod synchronizer */ \ -/* _q : pre-demod synchronizer object */ \ -/* _x : input sample */ \ -void PRESYNC(_push)(PRESYNC() _q, \ - TI _x); \ - \ -/* correlate input sequence */ \ -/* _q : pre-demod synchronizer object */ \ -/* _rxy : output cross correlation */ \ -/* _dphi_hat : output frequency offset estiamte */ \ -void PRESYNC(_correlate)(PRESYNC() _q, \ - TO * _rxy, \ - float * _dphi_hat); \ +#define LIQUID_PRESYNC_DEFINE_API(PRESYNC,TO,TC,TI) \ + \ +/* Pre-demodulation signal synchronizer */ \ +typedef struct PRESYNC(_s) * PRESYNC(); \ + \ +/* Create pre-demod synchronizer from external sequence */ \ +/* _v : baseband sequence, [size: _n x 1] */ \ +/* _n : baseband sequence length, _n > 0 */ \ +/* _dphi_max : maximum absolute frequency deviation for detection */ \ +/* _m : number of correlators, _m > 0 */ \ +PRESYNC() PRESYNC(_create)(TC * _v, \ + unsigned int _n, \ + float _dphi_max, \ + unsigned int _m); \ + \ +/* Destroy pre-demod synchronizer, freeing all internal memory */ \ +void PRESYNC(_destroy)(PRESYNC() _q); \ + \ +/* Print pre-demod synchronizer internal state */ \ +void PRESYNC(_print)(PRESYNC() _q); \ + \ +/* Reset pre-demod synchronizer internal state */ \ +void PRESYNC(_reset)(PRESYNC() _q); \ + \ +/* Push input sample into pre-demod synchronizer */ \ +/* _q : pre-demod synchronizer object */ \ +/* _x : input sample */ \ +void PRESYNC(_push)(PRESYNC() _q, \ + TI _x); \ + \ +/* Correlate original sequence with internal input buffer */ \ +/* _q : pre-demod synchronizer object */ \ +/* _rxy : output cross correlation */ \ +/* _dphi_hat : output frequency offset estimate */ \ +void PRESYNC(_execute)(PRESYNC() _q, \ + TO * _rxy, \ + float * _dphi_hat); \ // non-binary pre-demodulation synchronizer LIQUID_PRESYNC_DEFINE_API(LIQUID_PRESYNC_MANGLE_CCCF, @@ -4344,6 +5201,24 @@ qdetector_cccf qdetector_cccf_create_gmsk(unsigned char * _sequence, unsigned int _m, float _beta); +// create detector from sequence of CP-FSK symbols (assuming one bit/symbol) +// _sequence : bit sequence +// _sequence_len : length of bit sequence +// _bps : bits per symbol, 0 < _bps <= 8 +// _h : modulation index, _h > 0 +// _k : samples/symbol +// _m : filter delay +// _beta : filter bandwidth parameter, _beta > 0 +// _type : filter type (e.g. LIQUID_CPFSK_SQUARE) +qdetector_cccf qdetector_cccf_create_cpfsk(unsigned char * _sequence, + unsigned int _sequence_len, + unsigned int _bps, + float _h, + unsigned int _k, + unsigned int _m, + float _beta, + int _type); + void qdetector_cccf_destroy(qdetector_cccf _q); void qdetector_cccf_print (qdetector_cccf _q); void qdetector_cccf_reset (qdetector_cccf _q); @@ -4364,6 +5239,7 @@ void qdetector_cccf_set_range(qdetector_cccf _q, unsigned int qdetector_cccf_get_seq_len (qdetector_cccf _q); // sequence length const void * qdetector_cccf_get_sequence(qdetector_cccf _q); // pointer to sequence unsigned int qdetector_cccf_get_buf_len (qdetector_cccf _q); // buffer length +float qdetector_cccf_get_rxy (qdetector_cccf _q); // correlator output float qdetector_cccf_get_tau (qdetector_cccf _q); // fractional timing offset estimate float qdetector_cccf_get_gamma (qdetector_cccf _q); // channel gain float qdetector_cccf_get_dphi (qdetector_cccf _q); // carrier frequency offset estimate @@ -4413,42 +5289,60 @@ int detector_cccf_correlate(detector_cccf _q, // #define LIQUID_SYMSTREAM_MANGLE_CFLOAT(name) LIQUID_CONCAT(symstreamcf,name) -#define LIQUID_SYMSTREAM_DEFINE_API(SYMSTREAM,TO) \ - \ -typedef struct SYMSTREAM(_s) * SYMSTREAM(); \ - \ -/* create default symstream object */ \ -/* (LIQUID_RNYQUIST_ARKAISER, k=2, m=7, beta=0.3, QPSK) */ \ -SYMSTREAM() SYMSTREAM(_create)(void); \ - \ -/* create symstream object with linear modulation */ \ -/* _ftype : filter type (e.g. LIQUID_RNYQUIST_RRC) */ \ -/* _k : samples per symbol */ \ -/* _m : filter delay (symbols) */ \ -/* _beta : filter excess bandwidth */ \ -/* _ms : modulation scheme (e.g. LIQUID_MODEM_QPSK) */ \ -SYMSTREAM() SYMSTREAM(_create_linear)(int _ftype, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - int _ms); \ - \ -/* destroy symstream object, freeing all internal memory */ \ -void SYMSTREAM(_destroy)(SYMSTREAM() _q); \ - \ -/* print symstream object's parameters */ \ -void SYMSTREAM(_print)(SYMSTREAM() _q); \ - \ -/* reset symstream internal state */ \ -void SYMSTREAM(_reset)(SYMSTREAM() _q); \ - \ -/* write block of samples to output buffer */ \ -/* _q : synchronizer object */ \ -/* _buf : output buffer [size: _buf_len x 1] */ \ -/* _buf_len: output buffer size */ \ -void SYMSTREAM(_write_samples)(SYMSTREAM() _q, \ - TO * _buf, \ - unsigned int _buf_len); \ +#define LIQUID_SYMSTREAM_DEFINE_API(SYMSTREAM,TO) \ + \ +/* Symbol streaming generator object */ \ +typedef struct SYMSTREAM(_s) * SYMSTREAM(); \ + \ +/* Create symstream object with default parameters. */ \ +/* This is equivalent to invoking the create_linear() method */ \ +/* with _ftype=LIQUID_FIRFILT_ARKAISER, _k=2, _m=7, _beta=0.3, and */ \ +/* with _ms=LIQUID_MODEM_QPSK */ \ +SYMSTREAM() SYMSTREAM(_create)(void); \ + \ +/* Create symstream object with linear modulation */ \ +/* _ftype : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ +/* _k : samples per symbol, _k >= 2 */ \ +/* _m : filter delay (symbols), _m > 0 */ \ +/* _beta : filter excess bandwidth, 0 < _beta <= 1 */ \ +/* _ms : modulation scheme, e.g. LIQUID_MODEM_QPSK */ \ +SYMSTREAM() SYMSTREAM(_create_linear)(int _ftype, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta, \ + int _ms); \ + \ +/* Destroy symstream object, freeing all internal memory */ \ +void SYMSTREAM(_destroy)(SYMSTREAM() _q); \ + \ +/* Print symstream object's parameters */ \ +void SYMSTREAM(_print)(SYMSTREAM() _q); \ + \ +/* Reset symstream internal state */ \ +void SYMSTREAM(_reset)(SYMSTREAM() _q); \ + \ +/* Set internal linear modulation scheme, leaving the filter parameters */ \ +/* (interpolator) unmodified */ \ +void SYMSTREAM(_set_scheme)(SYMSTREAM() _q, \ + int _ms); \ + \ +/* Get internal linear modulation scheme */ \ +int SYMSTREAM(_get_scheme)(SYMSTREAM() _q); \ + \ +/* Set internal linear gain (before interpolation) */ \ +void SYMSTREAM(_set_gain)(SYMSTREAM() _q, \ + float _gain); \ + \ +/* Get internal linear gain (before interpolation) */ \ +float SYMSTREAM(_get_gain)(SYMSTREAM() _q); \ + \ +/* Write block of samples to output buffer */ \ +/* _q : synchronizer object */ \ +/* _buf : output buffer [size: _buf_len x 1] */ \ +/* _buf_len: output buffer size */ \ +void SYMSTREAM(_write_samples)(SYMSTREAM() _q, \ + TO * _buf, \ + unsigned int _buf_len); \ LIQUID_SYMSTREAM_DEFINE_API(LIQUID_SYMSTREAM_MANGLE_CFLOAT, liquid_float_complex) @@ -4459,61 +5353,97 @@ LIQUID_SYMSTREAM_DEFINE_API(LIQUID_SYMSTREAM_MANGLE_CFLOAT, liquid_float_complex // #define LIQUID_MSOURCE_MANGLE_CFLOAT(name) LIQUID_CONCAT(msourcecf,name) -#define LIQUID_MSOURCE_DEFINE_API(MSOURCE,TO) \ - \ -typedef struct MSOURCE(_s) * MSOURCE(); \ - \ -/* create default msource object */ \ -MSOURCE() MSOURCE(_create)(void); \ - \ -/* destroy msource object */ \ -void MSOURCE(_destroy)(MSOURCE() _q); \ - \ -/* print msrouce object */ \ -void MSOURCE(_print)(MSOURCE() _q); \ - \ -/* reset msrouce object */ \ -void MSOURCE(_reset)(MSOURCE() _q); \ - \ -/* add signal sources */ \ -int MSOURCE(_add_tone) (MSOURCE() _q); \ -int MSOURCE(_add_noise)(MSOURCE() _q, float _bandwidth); \ -int MSOURCE(_add_modem)(MSOURCE() _q, \ - int _ms, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta); \ - \ -/* remove signal */ \ -void MSOURCE(_remove)(MSOURCE() _q, int _id); \ - \ -/* enable/disable signal */ \ -void MSOURCE(_enable) (MSOURCE() _q, int _id); \ -void MSOURCE(_disable)(MSOURCE() _q, int _id); \ - \ -/* set signal gain */ \ -/* _q : msource object */ \ -/* _id : source id */ \ -/* _gain : signal gain */ \ -void MSOURCE(_set_gain)(MSOURCE() _q, \ - int _id, \ - float _gain_dB); \ - \ -/* set carrier offset to signal */ \ -/* _q : msource object */ \ -/* _id : source id */ \ -/* _fc : carrier offset, fc in [-0.5,0.5] */ \ -void MSOURCE(_set_frequency)(MSOURCE() _q, \ - int _id, \ - float _dphi); \ - \ -/* write block of samples to output buffer */ \ -/* _q : synchronizer object */ \ -/* _buf : output buffer [size: _buf_len x 1] */ \ -/* _buf_len: output buffer size */ \ -void MSOURCE(_write_samples)(MSOURCE() _q, \ - TO * _buf, \ - unsigned int _buf_len); \ +#define LIQUID_MSOURCE_DEFINE_API(MSOURCE,TO) \ + \ +/* Multi-signal source generator object */ \ +typedef struct MSOURCE(_s) * MSOURCE(); \ + \ +/* Create default msource object */ \ +MSOURCE() MSOURCE(_create)(void); \ + \ +/* Destroy msource object */ \ +void MSOURCE(_destroy)(MSOURCE() _q); \ + \ +/* Print msource object */ \ +void MSOURCE(_print)(MSOURCE() _q); \ + \ +/* Reset msource object */ \ +void MSOURCE(_reset)(MSOURCE() _q); \ + \ +/* Add tone to signal generator, returning id of signal */ \ +int MSOURCE(_add_tone) (MSOURCE() _q); \ + \ +/* Add noise source to signal generator, returning id of signal */ \ +/* _q : multi-signal source object */ \ +/* _bandwidth : normalized noise bandiwidth, 0 < _bandwidth <= 1.0 */ \ +int MSOURCE(_add_noise)(MSOURCE() _q, \ + float _bandwidth); \ + \ +/* Add modem signal source, returning id of signal */ \ +/* _q : multi-signal source object */ \ +/* _ms : modulation scheme, e.g. LIQUID_MODEM_QPSK */ \ +/* _k : samples per symbol, _k >= 2 */ \ +/* _m : filter delay (symbols), _m > 0 */ \ +/* _beta : filter excess bandwidth, 0 < _beta <= 1 */ \ +int MSOURCE(_add_modem)(MSOURCE() _q, \ + int _ms, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta); \ + \ +/* Remove signal with a particular id, returning 0 upon success */ \ +/* _q : multi-signal source object */ \ +/* _id : signal source id */ \ +int MSOURCE(_remove)(MSOURCE() _q, \ + int _id); \ + \ +/* Enable signal source with a particular id */ \ +int MSOURCE(_enable)(MSOURCE() _q, \ + int _id); \ + \ +/* Disable signal source with a particular id */ \ +int MSOURCE(_disable)(MSOURCE() _q, \ + int _id); \ + \ +/* Set gain in decibels on signal */ \ +/* _q : msource object */ \ +/* _id : source id */ \ +/* _gain : signal gain [dB] */ \ +int MSOURCE(_set_gain)(MSOURCE() _q, \ + int _id, \ + float _gain); \ + \ +/* Get gain in decibels on signal */ \ +/* _q : msource object */ \ +/* _id : source id */ \ +/* _gain : signal gain output [dB] */ \ +int MSOURCE(_get_gain)(MSOURCE() _q, \ + int _id, \ + float * _gain); \ + \ +/* Set carrier offset to signal */ \ +/* _q : msource object */ \ +/* _id : source id */ \ +/* _fc : normalized carrier frequency offset, -0.5 <= _fc <= 0.5 */ \ +int MSOURCE(_set_frequency)(MSOURCE() _q, \ + int _id, \ + float _dphi); \ + \ +/* Get carrier offset to signal */ \ +/* _q : msource object */ \ +/* _id : source id */ \ +/* _fc : normalized carrier frequency offset */ \ +int MSOURCE(_get_frequency)(MSOURCE() _q, \ + int _id, \ + float * _dphi); \ + \ +/* Write block of samples to output buffer */ \ +/* _q : synchronizer object */ \ +/* _buf : output buffer, [size: _buf_len x 1] */ \ +/* _buf_len: output buffer size */ \ +void MSOURCE(_write_samples)(MSOURCE() _q, \ + TO * _buf, \ + unsigned int _buf_len); \ LIQUID_MSOURCE_DEFINE_API(LIQUID_MSOURCE_MANGLE_CFLOAT, liquid_float_complex) @@ -4532,64 +5462,80 @@ LIQUID_MSOURCE_DEFINE_API(LIQUID_MSOURCE_MANGLE_CFLOAT, liquid_float_complex) // TO : data type, output // TC : data type, coefficients // TI : data type, input -#define LIQUID_SYMTRACK_DEFINE_API(SYMTRACK,T,TO,TC,TI) \ - \ -typedef struct SYMTRACK(_s) * SYMTRACK(); \ - \ -/* create symtrack object with default parameters */ \ -/* _ftype : filter type (e.g. LIQUID_RNYQUIST_RRC) */ \ -/* _k : samples per symbol */ \ -/* _m : filter delay (symbols) */ \ -/* _beta : filter excess bandwidth */ \ -/* _ms : modulation scheme (e.g. LIQUID_MODEM_QPSK) */ \ -SYMTRACK() SYMTRACK(_create)(int _ftype, \ - unsigned int _k, \ - unsigned int _m, \ - float _beta, \ - int _ms); \ - \ -/* create symtrack object using default parameters */ \ -SYMTRACK() SYMTRACK(_create_default)(); \ - \ -/* destroy symtrack object, freeing all internal memory */ \ -void SYMTRACK(_destroy)(SYMTRACK() _q); \ - \ -/* print symtrack object's parameters */ \ -void SYMTRACK(_print)(SYMTRACK() _q); \ - \ -/* reset symtrack internal state */ \ -void SYMTRACK(_reset)(SYMTRACK() _q); \ - \ -/* set symtrack modulation scheme */ \ -void SYMTRACK(_set_modscheme)(SYMTRACK() _q, int _ms); \ - \ -/* set symtrack internal bandwidth */ \ -void SYMTRACK(_set_bandwidth)(SYMTRACK() _q, float _bw); \ - \ -/* adjust internal nco by requested phase */ \ -void SYMTRACK(_adjust_phase)(SYMTRACK() _q, T _dphi); \ - \ -/* execute synchronizer on single input sample */ \ -/* _q : synchronizer object */ \ -/* _x : input data sample */ \ -/* _y : output data array */ \ -/* _ny : number of samples written to output buffer */ \ -void SYMTRACK(_execute)(SYMTRACK() _q, \ - TI _x, \ - TO * _y, \ - unsigned int * _ny); \ - \ -/* execute synchronizer on input data array */ \ -/* _q : synchronizer object */ \ -/* _x : input data array */ \ -/* _nx : number of input samples */ \ -/* _y : output data array */ \ -/* _ny : number of samples written to output buffer */ \ -void SYMTRACK(_execute_block)(SYMTRACK() _q, \ - TI * _x, \ - unsigned int _nx, \ - TO * _y, \ - unsigned int * _ny); \ +#define LIQUID_SYMTRACK_DEFINE_API(SYMTRACK,T,TO,TC,TI) \ + \ +/* Symbol synchronizer and tracking object */ \ +typedef struct SYMTRACK(_s) * SYMTRACK(); \ + \ +/* Create symtrack object, specifying parameters for operation */ \ +/* _ftype : filter type (e.g. LIQUID_FIRFILT_RRC) */ \ +/* _k : samples per symbol, _k >= 2 */ \ +/* _m : filter delay [symbols], _m > 0 */ \ +/* _beta : excess bandwidth factor, 0 <= _beta <= 1 */ \ +/* _ms : modulation scheme, _ms(LIQUID_MODEM_BPSK) */ \ +SYMTRACK() SYMTRACK(_create)(int _ftype, \ + unsigned int _k, \ + unsigned int _m, \ + float _beta, \ + int _ms); \ + \ +/* Create symtrack object using default parameters. */ \ +/* The default parameters are */ \ +/* ftype = LIQUID_FIRFILT_ARKAISER (filter type), */ \ +/* k = 2 (samples per symbol), */ \ +/* m = 7 (filter delay), */ \ +/* beta = 0.3 (excess bandwidth factor), and */ \ +/* ms = LIQUID_MODEM_QPSK (modulation scheme) */ \ +SYMTRACK() SYMTRACK(_create_default)(); \ + \ +/* Destroy symtrack object, freeing all internal memory */ \ +void SYMTRACK(_destroy)(SYMTRACK() _q); \ + \ +/* Print symtrack object's parameters */ \ +void SYMTRACK(_print)(SYMTRACK() _q); \ + \ +/* Reset symtrack internal state */ \ +void SYMTRACK(_reset)(SYMTRACK() _q); \ + \ +/* Set symtrack modulation scheme */ \ +/* _q : symtrack object */ \ +/* _ms : modulation scheme, _ms(LIQUID_MODEM_BPSK) */ \ +void SYMTRACK(_set_modscheme)(SYMTRACK() _q, \ + int _ms); \ + \ +/* Set symtrack internal bandwidth */ \ +/* _q : symtrack object */ \ +/* _bw : tracking bandwidth, _bw > 0 */ \ +void SYMTRACK(_set_bandwidth)(SYMTRACK() _q, \ + float _bw); \ + \ +/* Adjust internal NCO by requested phase */ \ +/* _q : symtrack object */ \ +/* _dphi : NCO phase adjustment [radians] */ \ +void SYMTRACK(_adjust_phase)(SYMTRACK() _q, \ + T _dphi); \ + \ +/* Execute synchronizer on single input sample */ \ +/* _q : synchronizer object */ \ +/* _x : input data sample */ \ +/* _y : output data array, [size: 2 x 1] */ \ +/* _ny : number of samples written to output buffer (0, 1, or 2) */ \ +void SYMTRACK(_execute)(SYMTRACK() _q, \ + TI _x, \ + TO * _y, \ + unsigned int * _ny); \ + \ +/* execute synchronizer on input data array */ \ +/* _q : synchronizer object */ \ +/* _x : input data array */ \ +/* _nx : number of input samples */ \ +/* _y : output data array, [size: 2 _nx x 1] */ \ +/* _ny : number of samples written to output buffer */ \ +void SYMTRACK(_execute_block)(SYMTRACK() _q, \ + TI * _x, \ + unsigned int _nx, \ + TO * _y, \ + unsigned int * _ny); \ LIQUID_SYMTRACK_DEFINE_API(LIQUID_SYMTRACK_MANGLE_RRRF, float, @@ -4697,7 +5643,7 @@ extern const char * liquid_window_str[LIQUID_WINDOW_NUM_FUNCTIONS][2]; // Print compact list of existing and available windowing functions void liquid_print_windows(); -// returns modulation_scheme based on input string +// returns window type based on input string liquid_window_type liquid_getopt_str2window(const char * _str); // Kaiser-Bessel derived window (single sample) @@ -4782,109 +5728,160 @@ float liquid_rcostaper_windowf(unsigned int _n, // POLY : name-mangling macro // T : data type // TC : data type (complex) -#define LIQUID_POLY_DEFINE_API(POLY,T,TC) \ -/* evaluate polynomial _p (order _k-1) at value _x */ \ -T POLY(_val)(T * _p, unsigned int _k, T _x); \ - \ -/* least-squares polynomial fit (order _k-1) */ \ -void POLY(_fit)(T * _x, \ - T * _y, \ - unsigned int _n, \ - T * _p, \ - unsigned int _k); \ - \ -/* Lagrange polynomial exact fit (order _n-1) */ \ -void POLY(_fit_lagrange)(T * _x, \ - T * _y, \ - unsigned int _n, \ - T * _p); \ - \ -/* Lagrange polynomial interpolation */ \ -T POLY(_interp_lagrange)(T * _x, \ - T * _y, \ - unsigned int _n, \ - T _x0); \ - \ -/* Lagrange polynomial fit (barycentric form) */ \ -void POLY(_fit_lagrange_barycentric)(T * _x, \ - unsigned int _n, \ - T * _w); \ - \ -/* Lagrange polynomial interpolation (barycentric form) */ \ -T POLY(_val_lagrange_barycentric)(T * _x, \ - T * _y, \ - T * _w, \ - T _x0, \ - unsigned int _n); \ - \ -/* expands the polynomial: \ - * P_n(x) = (1+x)^n \ - * as \ - * P_n(x) = p[0] + p[1]*x + p[2]*x^2 + ... + p[n]x^n \ - * NOTE: _p has order n=m+k (array is length n+1) \ - */ \ -void POLY(_expandbinomial)(unsigned int _n, \ - T * _p); \ - \ -/* expands the polynomial: \ - * P_n(x) = (1+x)^m * (1-x)^k \ - * as \ - * P_n(x) = p[0] + p[1]*x + p[2]*x^2 + ... + p[n]x^n \ - * NOTE: _p has order n=m+k (array is length n+1) \ - */ \ -void POLY(_expandbinomial_pm)(unsigned int _m, \ - unsigned int _k, \ - T * _p); \ - \ -/* expands the polynomial: \ - * P_n(x) = (x-r[0]) * (x-r[1]) * ... * (x-r[n-1]) \ - * as \ - * P_n(x) = c[0] + c[1]*x + ... + c[n]*x^n \ - * where r[0],r[1],...,r[n-1] are the roots of P_n(x) \ - * NOTE: _c has order _n (array is length _n+1) \ - */ \ -void POLY(_expandroots)(T * _a, \ - unsigned int _n, \ - T * _c); \ - \ -/* expands the polynomial: \ - * P_n(x) = \ - * (x*b[0]-a[0]) * (x*b[1]-a[1]) * ... * (x*b[n-1]-a[n-1]) \ - * as \ - * P_n(x) = c[0] + c[1]*x + ... + c[n]*x^n \ - * NOTE: _c has order _n (array is length _n+1) \ - */ \ -void POLY(_expandroots2)(T * _a, \ - T * _b, \ - unsigned int _n, \ - T * _c); \ - \ -/* find roots of the polynomial (complex) */ \ -/* _poly : poly array, ascending powers [size: _k x 1] */ \ -/* _k : poly length (poly order = _k - 1) */ \ -/* _roots : resulting complex roots [size: _k-1 x 1] */ \ -void POLY(_findroots)(T * _poly, \ - unsigned int _n, \ - TC * _roots); \ - \ -/* find the complex roots of the polynomial using the */ \ -/* Durand-Kerner method */ \ -void POLY(_findroots_durandkerner)(T * _poly, \ - unsigned int _k, \ - TC * _roots); \ - \ -/* find the complex roots of the polynomial using */ \ -/* Bairstow's method */ \ -void POLY(_findroots_bairstow)(T * _poly, \ - unsigned int _k, \ - TC * _roots); \ - \ -/* expands the multiplication of two polynomials */ \ -void POLY(_mul)(T * _a, \ - unsigned int _order_a, \ - T * _b, \ - unsigned int _order_b, \ - T * _c); \ +#define LIQUID_POLY_DEFINE_API(POLY,T,TC) \ + \ +/* Evaluate polynomial _p at value _x */ \ +/* _p : polynomial coefficients [size _k x 1] */ \ +/* _k : polynomial coefficients length, order is _k - 1 */ \ +/* _x : input to evaluate polynomial */ \ +T POLY(_val)(T * _p, \ + unsigned int _k, \ + T _x); \ + \ +/* Perform least-squares polynomial fit on data set */ \ +/* _x : x-value sample set [size: _n x 1] */ \ +/* _y : y-value sample set [size: _n x 1] */ \ +/* _n : number of samples in _x and _y */ \ +/* _p : polynomial coefficients output [size _k x 1] */ \ +/* _k : polynomial coefficients length, order is _k - 1 */ \ +void POLY(_fit)(T * _x, \ + T * _y, \ + unsigned int _n, \ + T * _p, \ + unsigned int _k); \ + \ +/* Perform Lagrange polynomial exact fit on data set */ \ +/* _x : x-value sample set, size [_n x 1] */ \ +/* _y : y-value sample set, size [_n x 1] */ \ +/* _n : number of samples in _x and _y */ \ +/* _p : polynomial coefficients output [size _n x 1] */ \ +void POLY(_fit_lagrange)(T * _x, \ + T * _y, \ + unsigned int _n, \ + T * _p); \ + \ +/* Perform Lagrange polynomial interpolation on data set without */ \ +/* computing coefficients as an intermediate step. */ \ +/* _x : x-value sample set [size: _n x 1] */ \ +/* _y : y-value sample set [size: _n x 1] */ \ +/* _n : number of samples in _x and _y */ \ +/* _x0 : x-value to evaluate and compute interpolant */ \ +T POLY(_interp_lagrange)(T * _x, \ + T * _y, \ + unsigned int _n, \ + T _x0); \ + \ +/* Compute Lagrange polynomial fit in the barycentric form. */ \ +/* _x : x-value sample set, size [_n x 1] */ \ +/* _n : number of samples in _x */ \ +/* _w : barycentric weights normalized so _w[0]=1, size [_n x 1] */ \ +void POLY(_fit_lagrange_barycentric)(T * _x, \ + unsigned int _n, \ + T * _w); \ + \ +/* Perform Lagrange polynomial interpolation using the barycentric form */ \ +/* of the weights. */ \ +/* _x : x-value sample set [size: _n x 1] */ \ +/* _y : y-value sample set [size: _n x 1] */ \ +/* _w : barycentric weights [size: _n x 1] */ \ +/* _x0 : x-value to evaluate and compute interpolant */ \ +/* _n : number of samples in _x, _y, and _w */ \ +T POLY(_val_lagrange_barycentric)(T * _x, \ + T * _y, \ + T * _w, \ + T _x0, \ + unsigned int _n); \ + \ +/* Perform binomial expansion on the polynomial */ \ +/* \( P_n(x) = (1+x)^n \) */ \ +/* as */ \ +/* \( P_n(x) = p[0] + p[1]x + p[2]x^2 + ... + p[n]x^n \) */ \ +/* NOTE: _p has order n (coefficients has length n+1) */ \ +/* _n : polynomial order */ \ +/* _p : polynomial coefficients [size: _n+1 x 1] */ \ +void POLY(_expandbinomial)(unsigned int _n, \ + T * _p); \ + \ +/* Perform positive/negative binomial expansion on the polynomial */ \ +/* \( P_n(x) = (1+x)^m (1-x)^k \) */ \ +/* as */ \ +/* \( P_n(x) = p[0] + p[1]x + p[2]x^2 + ... + p[n]x^n \) */ \ +/* NOTE: _p has order n=m+k (array is length n+1) */ \ +/* _m : number of '1+x' terms */ \ +/* _k : number of '1-x' terms */ \ +/* _p : polynomial coefficients [size: _m+_k+1 x 1] */ \ +void POLY(_expandbinomial_pm)(unsigned int _m, \ + unsigned int _k, \ + T * _p); \ + \ +/* Perform root expansion on the polynomial */ \ +/* \( P_n(x) = (x-r[0]) (x-r[1]) ... (x-r[n-1]) \) */ \ +/* as */ \ +/* \( P_n(x) = p[0] + p[1]x + ... + p[n]x^n \) */ \ +/* where \( r[0],r[1],...,r[n-1]\) are the roots of \( P_n(x) \). */ \ +/* NOTE: _p has order _n (array is length _n+1) */ \ +/* _r : roots of polynomial [size: _n x 1] */ \ +/* _n : number of roots in polynomial */ \ +/* _p : polynomial coefficients [size: _n+1 x 1] */ \ +void POLY(_expandroots)(T * _r, \ + unsigned int _n, \ + T * _p); \ + \ +/* Perform root expansion on the polynomial */ \ +/* \( P_n(x) = (xb[0]-a[0]) (xb[1]-a[1])...(xb[n-1]-a[n-1]) \) */ \ +/* as */ \ +/* \( P_n(x) = p[0] + p[1]x + ... + p[n]x^n \) */ \ +/* NOTE: _p has order _n (array is length _n+1) */ \ +/* _a : subtractant of polynomial rotos [size: _n x 1] */ \ +/* _b : multiplicant of polynomial roots [size: _n x 1] */ \ +/* _n : number of roots in polynomial */ \ +/* _p : polynomial coefficients [size: _n+1 x 1] */ \ +void POLY(_expandroots2)(T * _a, \ + T * _b, \ + unsigned int _n, \ + T * _p); \ + \ +/* Find the complex roots of a polynomial. */ \ +/* _p : polynomial coefficients [size: _n x 1] */ \ +/* _k : polynomial length */ \ +/* _roots : resulting complex roots [size: _k-1 x 1] */ \ +void POLY(_findroots)(T * _poly, \ + unsigned int _n, \ + TC * _roots); \ + \ +/* Find the complex roots of the polynomial using the Durand-Kerner */ \ +/* method */ \ +/* _p : polynomial coefficients [size: _n x 1] */ \ +/* _k : polynomial length */ \ +/* _roots : resulting complex roots [size: _k-1 x 1] */ \ +void POLY(_findroots_durandkerner)(T * _p, \ + unsigned int _k, \ + TC * _roots); \ + \ +/* Find the complex roots of the polynomial using Bairstow's method. */ \ +/* _p : polynomial coefficients [size: _n x 1] */ \ +/* _k : polynomial length */ \ +/* _roots : resulting complex roots [size: _k-1 x 1] */ \ +void POLY(_findroots_bairstow)(T * _p, \ + unsigned int _k, \ + TC * _roots); \ + \ +/* Expand the multiplication of two polynomials */ \ +/* \( ( a[0] + a[1]x + a[2]x^2 + ...) (b[0] + b[1]x + b[]x^2 + ...) \) */ \ +/* as */ \ +/* \( c[0] + c[1]x + c[2]x^2 + ... + c[n]x^n \) */ \ +/* where order(c) = order(a) + order(b) + 1 */ \ +/* and therefore length(c) = length(a) + length(b) - 1 */ \ +/* _a : 1st polynomial coefficients (length is _order_a+1) */ \ +/* _order_a : 1st polynomial order */ \ +/* _b : 2nd polynomial coefficients (length is _order_b+1) */ \ +/* _order_b : 2nd polynomial order */ \ +/* _c : output polynomial [size: _order_a+_order_b+1 x 1] */ \ +void POLY(_mul)(T * _a, \ + unsigned int _order_a, \ + T * _b, \ + unsigned int _order_b, \ + T * _c); \ LIQUID_POLY_DEFINE_API(LIQUID_POLY_MANGLE_DOUBLE, double, @@ -4938,6 +5935,10 @@ void liquid_unique_factor(unsigned int _n, unsigned int * _factors, unsigned int * _num_factors); +// compute greatest common divisor between to numbers P and Q +unsigned int liquid_gcd(unsigned int _P, + unsigned int _Q); + // compute c = base^exp (mod n) unsigned int liquid_modpow(unsigned int _base, unsigned int _exp, @@ -4966,306 +5967,336 @@ unsigned int liquid_totient(unsigned int _n); // large macro // MATRIX : name-mangling macro // T : data type -#define LIQUID_MATRIX_DEFINE_API(MATRIX,T) \ - \ -/* print array as matrix */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_print)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* add two matrices _x and _y saving the result in _z */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _y : input matrix [size: _r x _c] */ \ -/* _z : output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_add)(T * _x, \ - T * _y, \ - T * _z, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* subtract two matrices _x and _y saving the result in _z */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _y : input matrix [size: _r x _c] */ \ -/* _z : output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_sub)(T * _x, \ - T * _y, \ - T * _z, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* perform point-wise multiplication of two matrices _x */ \ -/* and _y saving the result in _z */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _y : input matrix [size: _r x _c] */ \ -/* _z : output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_pmul)(T * _x, \ - T * _y, \ - T * _z, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* perform point-wise division of two matrices _x and _y */ \ -/* saving the result in _z */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _y : input matrix [size: _r x _c] */ \ -/* _z : output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_pdiv)(T * _x, \ - T * _y, \ - T * _z, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* multiply two matrices _x and _y storing the result in _z */ \ -/* NOTE: _rz = _rx, _cz = _cy, and _cx = _ry */ \ -/* _x : input matrix [size: _rx x _cx] */ \ -/* _y : input matrix [size: _ry x _cy] */ \ -/* _z : output matrix [size: _rz x _cz] */ \ -void MATRIX(_mul)(T * _x, unsigned int _rx, unsigned int _cx, \ - T * _y, unsigned int _ry, unsigned int _cy, \ - T * _z, unsigned int _rz, unsigned int _cz); \ - \ -/* solve _x = _y*_z for _z for square matrices of size _n */ \ -/* _x : input matrix [size: _n x _n] */ \ -/* _y : input matrix [size: _n x _n] */ \ -/* _z : output matrix [size: _n x _n] */ \ -void MATRIX(_div)(T * _x, \ - T * _y, \ - T * _z, \ - unsigned int _n); \ - \ -/* compute the determinant of a square matrix _x */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -T MATRIX(_det)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* compute the in-place transpose of the matrix _x */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_trans)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* compute the in-place Hermitian transpose of _x */ \ -/* _x : input matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_hermitian)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* compute x*x' on [m x n] matrix, result: [m x m] */ \ -/* _x : input matrix [size: _m x _n] */ \ -/* _m : input rows */ \ -/* _n : input columns */ \ -/* _xxT : output matrix [size: _m x _m] */ \ -void MATRIX(_mul_transpose)(T * _x, \ - unsigned int _m, \ - unsigned int _n, \ - T * _xxT); \ - \ -/* compute x'*x on [m x n] matrix, result: [n x n] */ \ -/* _x : input matrix [size: _m x _n] */ \ -/* _m : input rows */ \ -/* _n : input columns */ \ -/* _xTx : output matrix [size: _n x _n] */ \ -void MATRIX(_transpose_mul)(T * _x, \ - unsigned int _m, \ - unsigned int _n, \ - T * _xTx); \ - \ -/* compute x*x.' on [m x n] matrix, result: [m x m] */ \ -/* _x : input matrix [size: _m x _n] */ \ -/* _m : input rows */ \ -/* _n : input columns */ \ -/* _xxH : output matrix [size: _m x _m] */ \ -void MATRIX(_mul_hermitian)(T * _x, \ - unsigned int _m, \ - unsigned int _n, \ - T * _xxH); \ - \ -/* compute x.'*x on [m x n] matrix, result: [n x n] */ \ -/* _x : input matrix [size: _m x _n] */ \ -/* _m : input rows */ \ -/* _n : input columns */ \ -/* _xHx : output matrix [size: _n x _n] */ \ -void MATRIX(_hermitian_mul)(T * _x, \ - unsigned int _m, \ - unsigned int _n, \ - T * _xHx); \ - \ - \ -/* augment two matrices _x and _y storing the result in _z */ \ -/* NOTE: _rz = _rx = _ry, _rx = _ry, and _cz = _cx + _cy */ \ -/* _x : input matrix [size: _rx x _cx] */ \ -/* _y : input matrix [size: _ry x _cy] */ \ -/* _z : output matrix [size: _rz x _cz] */ \ -void MATRIX(_aug)(T * _x, unsigned int _rx, unsigned int _cx, \ - T * _y, unsigned int _ry, unsigned int _cy, \ - T * _z, unsigned int _rz, unsigned int _cz); \ - \ -/* compute the inverse of a square matrix _x */ \ -/* _x : input/output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_inv)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* generate the identity square matrix of size _n */ \ -/* _x : output matrix [size: _n x _n] */ \ -/* _n : dimensions of _x */ \ -void MATRIX(_eye)(T * _x, \ - unsigned int _n); \ - \ -/* generate the all-ones matrix of size _n */ \ -/* _x : output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_ones)(T * _n, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* generate the all-zeros matrix of size _n */ \ -/* _x : output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_zeros)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* perform Gauss-Jordan elimination on matrix _x */ \ -/* _x : input/output matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -void MATRIX(_gjelim)(T * _x, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* pivot on element _x[_r,_c] */ \ -/* _x : output matrix [size: _rx x _cx] */ \ -/* _rx : rows of _x */ \ -/* _cx : columns of _x */ \ -/* _r : pivot row */ \ -/* _c : pivot column */ \ -void MATRIX(_pivot)(T * _x, \ - unsigned int _rx, \ - unsigned int _cx, \ - unsigned int _r, \ - unsigned int _c); \ - \ -/* swap rows _r1 and _r2 of matrix _x */ \ -/* _x : input/output matrix [size: _rx x _cx] */ \ -/* _rx : rows of _x */ \ -/* _cx : columns of _x */ \ -/* _r1 : first row to swap */ \ -/* _r2 : second row to swap */ \ -void MATRIX(_swaprows)(T * _x, \ - unsigned int _rx, \ - unsigned int _cx, \ - unsigned int _r1, \ - unsigned int _r2); \ - \ -/* solve linear system of _n equations: _A*_x = _b */ \ -/* _A : system matrix [size: _n x _n] */ \ -/* _n : system size */ \ -/* _b : equality vector [size: _n x 1] */ \ -/* _x : solution vector [size: _n x 1] */ \ -/* _opts : options (ignored for now) */ \ -void MATRIX(_linsolve)(T * _A, \ - unsigned int _n, \ - T * _b, \ - T * _x, \ - void * _opts); \ - \ -/* solve linear system of equations using conjugate */ \ -/* gradient method */ \ -/* _A : symmetric positive definite square matrix */ \ -/* _n : system dimension */ \ -/* _b : equality [size: _n x 1] */ \ -/* _x : solution estimate [size: _n x 1] */ \ -/* _opts : options (ignored for now) */ \ -void MATRIX(_cgsolve)(T * _A, \ - unsigned int _n, \ - T * _b, \ - T * _x, \ - void * _opts); \ - \ -/* L/U/P decomposition, Crout's method */ \ -/* _x : input/output matrix [size: _rx x _cx] */ \ -/* _rx : rows of _x */ \ -/* _cx : columns of _x */ \ -/* _L : first row to swap */ \ -/* _U : first row to swap */ \ -/* _P : first row to swap */ \ -void MATRIX(_ludecomp_crout)(T * _x, \ - unsigned int _rx, \ - unsigned int _cx, \ - T * _L, \ - T * _U, \ - T * _P); \ - \ -/* L/U/P decomposition, Doolittle's method */ \ -/* _x : input/output matrix [size: _rx x _cx] */ \ -/* _rx : rows of _x */ \ -/* _cx : columns of _x */ \ -/* _L : first row to swap */ \ -/* _U : first row to swap */ \ -/* _P : first row to swap */ \ -void MATRIX(_ludecomp_doolittle)(T * _x, \ - unsigned int _rx, \ - unsigned int _cx, \ - T * _L, \ - T * _U, \ - T * _P); \ - \ -/* Orthnormalization using the Gram-Schmidt algorithm */ \ -/* _A : input matrix [size: _r x _c] */ \ -/* _r : rows */ \ -/* _c : columns */ \ -/* _v : output matrix */ \ -void MATRIX(_gramschmidt)(T * _A, \ - unsigned int _r, \ - unsigned int _c, \ - T * _v); \ - \ -/* Q/R decomposition using the Gram-Schmidt algorithm such */ \ -/* that _A = _Q*_R and _Q^T * _Q = _In and _R is a diagonal */ \ -/* matrix */ \ -/* NOTE: all matrices are square */ \ -/* _A : input matrix [size: _m x _m] */ \ -/* _m : rows */ \ -/* _n : columns (same as cols) */ \ -/* _Q : output matrix [size: _m x _m] */ \ -/* _R : output matrix [size: _m x _m] */ \ -void MATRIX(_qrdecomp_gramschmidt)(T * _A, \ - unsigned int _m, \ - unsigned int _n, \ - T * _Q, \ - T * _R); \ - \ -/* Compute Cholesky decomposition of a symmetric/Hermitian */ \ -/* positive-definite matrix as A = L * L^T */ \ -/* _A : input square matrix [size: _n x _n] */ \ -/* _n : input matrix dimension */ \ -/* _L : output lower-triangular matrix */ \ -void MATRIX(_chol)(T * _A, \ - unsigned int _n, \ - T * _L); \ +#define LIQUID_MATRIX_DEFINE_API(MATRIX,T) \ + \ +/* Print array as matrix to stdout */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _r : rows in matrix */ \ +/* _c : columns in matrix */ \ +void MATRIX(_print)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Perform point-wise addition between two matrices \(\vec{X}\) */ \ +/* and \(\vec{Y}\), saving the result in the output matrix \(\vec{Z}\). */ \ +/* That is, \(\vec{Z}_{i,j}=\vec{X}_{i,j}+\vec{Y}_{i,j} \), */ \ +/* \( \forall_{i \in r} \) and \( \forall_{j \in c} \) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _y : input matrix, [size: _r x _c] */ \ +/* _z : output matrix, [size: _r x _c] */ \ +/* _r : number of rows in each matrix */ \ +/* _c : number of columns in each matrix */ \ +void MATRIX(_add)(T * _x, \ + T * _y, \ + T * _z, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Perform point-wise subtraction between two matrices \(\vec{X}\) */ \ +/* and \(\vec{Y}\), saving the result in the output matrix \(\vec{Z}\) */ \ +/* That is, \(\vec{Z}_{i,j}=\vec{X}_{i,j}-\vec{Y}_{i,j} \), */ \ +/* \( \forall_{i \in r} \) and \( \forall_{j \in c} \) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _y : input matrix, [size: _r x _c] */ \ +/* _z : output matrix, [size: _r x _c] */ \ +/* _r : number of rows in each matrix */ \ +/* _c : number of columns in each matrix */ \ +void MATRIX(_sub)(T * _x, \ + T * _y, \ + T * _z, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Perform point-wise multiplication between two matrices \(\vec{X}\) */ \ +/* and \(\vec{Y}\), saving the result in the output matrix \(\vec{Z}\) */ \ +/* That is, \(\vec{Z}_{i,j}=\vec{X}_{i,j} \vec{Y}_{i,j} \), */ \ +/* \( \forall_{i \in r} \) and \( \forall_{j \in c} \) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _y : input matrix, [size: _r x _c] */ \ +/* _z : output matrix, [size: _r x _c] */ \ +/* _r : number of rows in each matrix */ \ +/* _c : number of columns in each matrix */ \ +void MATRIX(_pmul)(T * _x, \ + T * _y, \ + T * _z, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Perform point-wise division between two matrices \(\vec{X}\) */ \ +/* and \(\vec{Y}\), saving the result in the output matrix \(\vec{Z}\) */ \ +/* That is, \(\vec{Z}_{i,j}=\vec{X}_{i,j}/\vec{Y}_{i,j} \), */ \ +/* \( \forall_{i \in r} \) and \( \forall_{j \in c} \) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _y : input matrix, [size: _r x _c] */ \ +/* _z : output matrix, [size: _r x _c] */ \ +/* _r : number of rows in each matrix */ \ +/* _c : number of columns in each matrix */ \ +void MATRIX(_pdiv)(T * _x, \ + T * _y, \ + T * _z, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Multiply two matrices \(\vec{X}\) and \(\vec{Y}\), storing the */ \ +/* result in \(\vec{Z}\). */ \ +/* NOTE: _rz = _rx, _cz = _cy, and _cx = _ry */ \ +/* _x : input matrix, [size: _rx x _cx] */ \ +/* _rx : number of rows in _x */ \ +/* _cx : number of columns in _x */ \ +/* _y : input matrix, [size: _ry x _cy] */ \ +/* _ry : number of rows in _y */ \ +/* _cy : number of columns in _y */ \ +/* _z : output matrix, [size: _rz x _cz] */ \ +/* _rz : number of rows in _z */ \ +/* _cz : number of columns in _z */ \ +void MATRIX(_mul)(T * _x, unsigned int _rx, unsigned int _cx, \ + T * _y, unsigned int _ry, unsigned int _cy, \ + T * _z, unsigned int _rz, unsigned int _cz); \ + \ +/* Solve \(\vec{X} = \vec{Y} \vec{Z}\) for \(\vec{Z}\) for square */ \ +/* matrices of size \(n\) */ \ +/* _x : input matrix, [size: _n x _n] */ \ +/* _y : input matrix, [size: _n x _n] */ \ +/* _z : output matrix, [size: _n x _n] */ \ +/* _n : number of rows and columns in each matrix */ \ +void MATRIX(_div)(T * _x, \ + T * _y, \ + T * _z, \ + unsigned int _n); \ + \ +/* Compute the determinant of a square matrix \(\vec{X}\) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +T MATRIX(_det)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Compute the in-place transpose of the matrix \(\vec{X}\) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +void MATRIX(_trans)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Compute the in-place Hermitian transpose of the matrix \(\vec{X}\) */ \ +/* _x : input matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +void MATRIX(_hermitian)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Compute \(\vec{X}\vec{X}^T\) on a \(m \times n\) matrix. */ \ +/* The result is a \(m \times m\) matrix. */ \ +/* _x : input matrix, [size: _m x _n] */ \ +/* _m : input rows */ \ +/* _n : input columns */ \ +/* _xxT : output matrix, [size: _m x _m] */ \ +void MATRIX(_mul_transpose)(T * _x, \ + unsigned int _m, \ + unsigned int _n, \ + T * _xxT); \ + \ +/* Compute \(\vec{X}^T\vec{X}\) on a \(m \times n\) matrix. */ \ +/* The result is a \(n \times n\) matrix. */ \ +/* _x : input matrix, [size: _m x _n] */ \ +/* _m : input rows */ \ +/* _n : input columns */ \ +/* _xTx : output matrix, [size: _n x _n] */ \ +void MATRIX(_transpose_mul)(T * _x, \ + unsigned int _m, \ + unsigned int _n, \ + T * _xTx); \ + \ +/* Compute \(\vec{X}\vec{X}^H\) on a \(m \times n\) matrix. */ \ +/* The result is a \(m \times m\) matrix. */ \ +/* _x : input matrix, [size: _m x _n] */ \ +/* _m : input rows */ \ +/* _n : input columns */ \ +/* _xxH : output matrix, [size: _m x _m] */ \ +void MATRIX(_mul_hermitian)(T * _x, \ + unsigned int _m, \ + unsigned int _n, \ + T * _xxH); \ + \ +/* Compute \(\vec{X}^H\vec{X}\) on a \(m \times n\) matrix. */ \ +/* The result is a \(n \times n\) matrix. */ \ +/* _x : input matrix, [size: _m x _n] */ \ +/* _m : input rows */ \ +/* _n : input columns */ \ +/* _xHx : output matrix, [size: _n x _n] */ \ +void MATRIX(_hermitian_mul)(T * _x, \ + unsigned int _m, \ + unsigned int _n, \ + T * _xHx); \ + \ + \ +/* Augment two matrices \(\vec{X}\) and \(\vec{Y}\), storing the result */ \ +/* in \(\vec{Z}\) */ \ +/* NOTE: _rz = _rx = _ry, _rx = _ry, and _cz = _cx + _cy */ \ +/* _x : input matrix, [size: _rx x _cx] */ \ +/* _rx : number of rows in _x */ \ +/* _cx : number of columns in _x */ \ +/* _y : input matrix, [size: _ry x _cy] */ \ +/* _ry : number of rows in _y */ \ +/* _cy : number of columns in _y */ \ +/* _z : output matrix, [size: _rz x _cz] */ \ +/* _rz : number of rows in _z */ \ +/* _cz : number of columns in _z */ \ +void MATRIX(_aug)(T * _x, unsigned int _rx, unsigned int _cx, \ + T * _y, unsigned int _ry, unsigned int _cy, \ + T * _z, unsigned int _rz, unsigned int _cz); \ + \ +/* Compute the inverse of a square matrix \(\vec{X}\) */ \ +/* _x : input/output matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +void MATRIX(_inv)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Generate the identity square matrix of size \(n\) */ \ +/* _x : output matrix, [size: _n x _n] */ \ +/* _n : dimensions of _x */ \ +void MATRIX(_eye)(T * _x, \ + unsigned int _n); \ + \ +/* Generate the all-ones matrix of size \(n\) */ \ +/* _x : output matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +void MATRIX(_ones)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Generate the all-zeros matrix of size \(n\) */ \ +/* _x : output matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +void MATRIX(_zeros)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Perform Gauss-Jordan elimination on matrix \(\vec{X}\) */ \ +/* _x : input/output matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +void MATRIX(_gjelim)(T * _x, \ + unsigned int _r, \ + unsigned int _c); \ + \ +/* Pivot on element \(\vec{X}_{i,j}\) */ \ +/* _x : output matrix, [size: _r x _c] */ \ +/* _r : rows of _x */ \ +/* _c : columns of _x */ \ +/* _i : pivot row */ \ +/* _j : pivot column */ \ +void MATRIX(_pivot)(T * _x, \ + unsigned int _r, \ + unsigned int _c, \ + unsigned int _i, \ + unsigned int _j); \ + \ +/* Swap rows _r1 and _r2 of matrix \(\vec{X}\) */ \ +/* _x : input/output matrix, [size: _r x _c] */ \ +/* _r : rows of _x */ \ +/* _c : columns of _x */ \ +/* _r1 : first row to swap */ \ +/* _r2 : second row to swap */ \ +void MATRIX(_swaprows)(T * _x, \ + unsigned int _r, \ + unsigned int _c, \ + unsigned int _r1, \ + unsigned int _r2); \ + \ +/* Solve linear system of \(n\) equations: \(\vec{A}\vec{x} = \vec{b}\) */ \ +/* _A : system matrix, [size: _n x _n] */ \ +/* _n : system size */ \ +/* _b : equality vector, [size: _n x 1] */ \ +/* _x : solution vector, [size: _n x 1] */ \ +/* _opts : options (ignored for now) */ \ +void MATRIX(_linsolve)(T * _A, \ + unsigned int _n, \ + T * _b, \ + T * _x, \ + void * _opts); \ + \ +/* Solve linear system of equations using conjugate gradient method. */ \ +/* _A : symmetric positive definite square matrix */ \ +/* _n : system dimension */ \ +/* _b : equality, [size: _n x 1] */ \ +/* _x : solution estimate, [size: _n x 1] */ \ +/* _opts : options (ignored for now) */ \ +void MATRIX(_cgsolve)(T * _A, \ + unsigned int _n, \ + T * _b, \ + T * _x, \ + void * _opts); \ + \ +/* Perform L/U/P decomposition using Crout's method */ \ +/* _x : input/output matrix, [size: _rx x _cx] */ \ +/* _rx : rows of _x */ \ +/* _cx : columns of _x */ \ +/* _L : first row to swap */ \ +/* _U : first row to swap */ \ +/* _P : first row to swap */ \ +void MATRIX(_ludecomp_crout)(T * _x, \ + unsigned int _rx, \ + unsigned int _cx, \ + T * _L, \ + T * _U, \ + T * _P); \ + \ +/* Perform L/U/P decomposition, Doolittle's method */ \ +/* _x : input/output matrix, [size: _rx x _cx] */ \ +/* _rx : rows of _x */ \ +/* _cx : columns of _x */ \ +/* _L : first row to swap */ \ +/* _U : first row to swap */ \ +/* _P : first row to swap */ \ +void MATRIX(_ludecomp_doolittle)(T * _x, \ + unsigned int _rx, \ + unsigned int _cx, \ + T * _L, \ + T * _U, \ + T * _P); \ + \ +/* Perform orthnormalization using the Gram-Schmidt algorithm */ \ +/* _A : input matrix, [size: _r x _c] */ \ +/* _r : rows */ \ +/* _c : columns */ \ +/* _v : output matrix */ \ +void MATRIX(_gramschmidt)(T * _A, \ + unsigned int _r, \ + unsigned int _c, \ + T * _v); \ + \ +/* Perform Q/R decomposition using the Gram-Schmidt algorithm such that */ \ +/* \( \vec{A} = \vec{Q} \vec{R} \) */ \ +/* and \( \vec{Q}^T \vec{Q} = \vec{I}_n \) */ \ +/* and \(\vec{R\}\) is a diagonal \(m \times m\) matrix */ \ +/* NOTE: all matrices are square */ \ +/* _A : input matrix, [size: _m x _m] */ \ +/* _m : rows */ \ +/* _n : columns (same as cols) */ \ +/* _Q : output matrix, [size: _m x _m] */ \ +/* _R : output matrix, [size: _m x _m] */ \ +void MATRIX(_qrdecomp_gramschmidt)(T * _A, \ + unsigned int _m, \ + unsigned int _n, \ + T * _Q, \ + T * _R); \ + \ +/* Compute Cholesky decomposition of a symmetric/Hermitian */ \ +/* positive-definite matrix as \( \vec{A} = \vec{L}\vec{L}^T \) */ \ +/* _A : input square matrix, [size: _n x _n] */ \ +/* _n : input matrix dimension */ \ +/* _L : output lower-triangular matrix */ \ +void MATRIX(_chol)(T * _A, \ + unsigned int _n, \ + T * _L); \ #define matrix_access(X,R,C,r,c) ((X)[(r)*(C)+(c)]) @@ -5288,76 +6319,110 @@ LIQUID_MATRIX_DEFINE_API(LIQUID_MATRIX_MANGLE_CDOUBLE, liquid_double_complex) // large macro // SMATRIX : name-mangling macro // T : primitive data type -#define LIQUID_SMATRIX_DEFINE_API(SMATRIX,T) \ -typedef struct SMATRIX(_s) * SMATRIX(); \ - \ -/* create _M x _N matrix, initialized with zeros */ \ -SMATRIX() SMATRIX(_create)(unsigned int _M, \ - unsigned int _N); \ - \ -/* create _M x _N matrix, initialized on array */ \ -SMATRIX() SMATRIX(_create_array)(T * _x, \ - unsigned int _m, \ - unsigned int _n); \ - \ -/* destroy object */ \ -void SMATRIX(_destroy)(SMATRIX() _q); \ - \ -/* print compact form */ \ -void SMATRIX(_print)(SMATRIX() _q); \ - \ -/* print expanded form */ \ -void SMATRIX(_print_expanded)(SMATRIX() _q); \ - \ -/* query properties methods */ \ -void SMATRIX(_size)(SMATRIX() _q, \ - unsigned int * _m, \ - unsigned int * _n); \ - \ -/* zero all elements and keep memory */ \ -void SMATRIX(_clear)(SMATRIX() _q); \ - \ -/* zero all elements and clear memory */ \ -void SMATRIX(_reset)(SMATRIX() _q); \ - \ -/* determine if value has been set (allocated memory) */ \ -int SMATRIX(_isset)(SMATRIX() _q, \ - unsigned int _m, \ - unsigned int _n); \ - \ -/* inserts/deletes element at index (memory allocation) */ \ -void SMATRIX(_insert)(SMATRIX() _q, \ - unsigned int _m, \ - unsigned int _n, \ - T _v); \ -void SMATRIX(_delete)(SMATRIX() _q, \ - unsigned int _m, \ - unsigned int _n); \ - \ -/* sets/gets the value (with memory allocation if needed) */ \ -void SMATRIX(_set)(SMATRIX() _q, \ - unsigned int _m, \ - unsigned int _n, \ - T _v); \ -T SMATRIX(_get)(SMATRIX() _q, \ - unsigned int _m, \ - unsigned int _n); \ - \ -/* initialize to identity matrix */ \ -void SMATRIX(_eye)(SMATRIX() _q); \ - \ -/* multiply two sparse binary matrices */ \ -void SMATRIX(_mul)(SMATRIX() _x, \ - SMATRIX() _y, \ - SMATRIX() _z); \ - \ -/* multiply sparse matrix by vector */ \ -/* _q : sparse matrix */ \ -/* _x : input vector [size: _N x 1] */ \ -/* _y : output vector [size: _M x 1] */ \ -void SMATRIX(_vmul)(SMATRIX() _q, \ - T * _x, \ - T * _y); \ +#define LIQUID_SMATRIX_DEFINE_API(SMATRIX,T) \ + \ +/* Sparse matrix object (similar to MacKay, Davey, Lafferty convention) */ \ +typedef struct SMATRIX(_s) * SMATRIX(); \ + \ +/* Create _M x _N sparse matrix, initialized with zeros */ \ +SMATRIX() SMATRIX(_create)(unsigned int _M, \ + unsigned int _N); \ + \ +/* Create _M x _N sparse matrix, initialized on array */ \ +/* _x : input matrix, [size: _m x _n] */ \ +/* _m : number of rows in input matrix */ \ +/* _n : number of columns in input matrix */ \ +SMATRIX() SMATRIX(_create_array)(T * _x, \ + unsigned int _m, \ + unsigned int _n); \ + \ +/* Destroy object, freeing all internal memory */ \ +void SMATRIX(_destroy)(SMATRIX() _q); \ + \ +/* Print sparse matrix in compact form to stdout */ \ +void SMATRIX(_print)(SMATRIX() _q); \ + \ +/* Print sparse matrix in expanded form to stdout */ \ +void SMATRIX(_print_expanded)(SMATRIX() _q); \ + \ +/* Get size of sparse matrix (number of rows and columns) */ \ +/* _q : sparse matrix object */ \ +/* _m : number of rows in matrix */ \ +/* _n : number of columns in matrix */ \ +void SMATRIX(_size)(SMATRIX() _q, \ + unsigned int * _m, \ + unsigned int * _n); \ + \ +/* Zero all elements and retain allocated memory */ \ +void SMATRIX(_clear)(SMATRIX() _q); \ + \ +/* Zero all elements and clear memory */ \ +void SMATRIX(_reset)(SMATRIX() _q); \ + \ +/* Determine if value has been set (allocated memory) */ \ +/* _q : sparse matrix object */ \ +/* _m : row index of value to query */ \ +/* _n : column index of value to query */ \ +int SMATRIX(_isset)(SMATRIX() _q, \ + unsigned int _m, \ + unsigned int _n); \ + \ +/* Insert an element at index, allocating memory as necessary */ \ +/* _q : sparse matrix object */ \ +/* _m : row index of value to insert */ \ +/* _n : column index of value to insert */ \ +/* _v : value to insert */ \ +void SMATRIX(_insert)(SMATRIX() _q, \ + unsigned int _m, \ + unsigned int _n, \ + T _v); \ + \ +/* Delete an element at index, freeing memory */ \ +/* _q : sparse matrix object */ \ +/* _m : row index of value to delete */ \ +/* _n : column index of value to delete */ \ +void SMATRIX(_delete)(SMATRIX() _q, \ + unsigned int _m, \ + unsigned int _n); \ + \ +/* Set the value in matrix at specified row and column, allocating */ \ +/* memory if needed */ \ +/* _q : sparse matrix object */ \ +/* _m : row index of value to set */ \ +/* _n : column index of value to set */ \ +/* _v : value to set in matrix */ \ +void SMATRIX(_set)(SMATRIX() _q, \ + unsigned int _m, \ + unsigned int _n, \ + T _v); \ + \ +/* Get the value from matrix at specified row and column */ \ +/* _q : sparse matrix object */ \ +/* _m : row index of value to get */ \ +/* _n : column index of value to get */ \ +T SMATRIX(_get)(SMATRIX() _q, \ + unsigned int _m, \ + unsigned int _n); \ + \ +/* Initialize to identity matrix; set all diagonal elements to 1, all */ \ +/* others to 0. This is done with both square and non-square matrices. */ \ +void SMATRIX(_eye)(SMATRIX() _q); \ + \ +/* Multiply two sparse matrices, \( \vec{Z} = \vec{X} \vec{Y} \) */ \ +/* _x : sparse matrix object (input) */ \ +/* _y : sparse matrix object (input) */ \ +/* _z : sparse matrix object (output) */ \ +void SMATRIX(_mul)(SMATRIX() _x, \ + SMATRIX() _y, \ + SMATRIX() _z); \ + \ +/* Multiply sparse matrix by vector */ \ +/* _q : sparse matrix */ \ +/* _x : input vector, [size: _n x 1] */ \ +/* _y : output vector, [size: _m x 1] */ \ +void SMATRIX(_vmul)(SMATRIX() _q, \ + T * _x, \ + T * _y); \ LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_BOOL, unsigned char) LIQUID_SMATRIX_DEFINE_API(LIQUID_SMATRIX_MANGLE_FLOAT, float) @@ -5520,70 +6585,97 @@ void liquid_unpack_soft_bits(unsigned int _sym_in, // MODEM : name-mangling macro // T : primitive data type // TC : primitive data type (complex) -#define LIQUID_MODEM_DEFINE_API(MODEM,T,TC) \ -typedef struct MODEM(_s) * MODEM(); \ - \ -/* create digital modem object */ \ -MODEM() MODEM(_create)(modulation_scheme _scheme); \ - \ -/* create arbitrary digital modem object */ \ -/* _table : array of complex constellation points */ \ -/* _M : modulation order and table size */ \ -MODEM() MODEM(_create_arbitrary)(TC * _table, \ - unsigned int _M); \ - \ -/* recreate modulation scheme, re-allocating memory as */ \ -/* necessary */ \ -MODEM() MODEM(_recreate)(MODEM() _q, \ - modulation_scheme _scheme); \ - \ -void MODEM(_destroy)(MODEM() _q); \ -void MODEM(_print)( MODEM() _q); \ -void MODEM(_reset)( MODEM() _q); \ - \ -/* generate random symbol */ \ -unsigned int MODEM(_gen_rand_sym)(MODEM() _q); \ - \ -/* Accessor functions */ \ -unsigned int MODEM(_get_bps) (MODEM() _q); \ -modulation_scheme MODEM(_get_scheme)(MODEM() _q); \ - \ -/* generic modulate function; simply queries modem scheme */ \ -/* and calls appropriate subroutine */ \ -/* _q : modem object */ \ -/* _s : input symbol */ \ -/* _x : output sample */ \ -void MODEM(_modulate)(MODEM() _q, \ - unsigned int _s, \ - TC * _y); \ - \ -/* generic hard-decision demodulation function */ \ -/* _q : modem object */ \ -/* _x : input sample */ \ -/* _s : output symbol */ \ -void MODEM(_demodulate)(MODEM() _q, \ - TC _x, \ - unsigned int * _s); \ - \ -/* generic soft-decision demodulation function */ \ -/* _q : modem object */ \ -/* _x : input sample */ \ -/* _s : output hard symbol */ \ -/* _soft_bits : output soft bits */ \ -void MODEM(_demodulate_soft)(MODEM() _q, \ - TC _x, \ - unsigned int * _s, \ - unsigned char * _soft_bits); \ - \ -/* get demodulator's estimated transmit sample */ \ -void MODEM(_get_demodulator_sample)(MODEM() _q, \ - TC * _x_hat); \ - \ -/* get demodulator phase error */ \ -float MODEM(_get_demodulator_phase_error)(MODEM() _q); \ - \ -/* get demodulator error vector magnitude */ \ -float MODEM(_get_demodulator_evm)(MODEM() _q); \ +#define LIQUID_MODEM_DEFINE_API(MODEM,T,TC) \ + \ +/* Linear modulator/demodulator (modem) object */ \ +typedef struct MODEM(_s) * MODEM(); \ + \ +/* Create digital modem object with a particular scheme */ \ +/* _scheme : linear modulation scheme (e.g. LIQUID_MODEM_QPSK) */ \ +MODEM() MODEM(_create)(modulation_scheme _scheme); \ + \ +/* Create linear digital modem object with arbitrary constellation */ \ +/* points defined by an external table of symbols. */ \ +/* _table : array of complex constellation points, [size: _M x 1] */ \ +/* _M : modulation order and table size, _M must be power of 2 */ \ +MODEM() MODEM(_create_arbitrary)(TC * _table, \ + unsigned int _M); \ + \ +/* Recreate modulation scheme, re-allocating memory as necessary */ \ +/* _q : modem object */ \ +/* _scheme : linear modulation scheme (e.g. LIQUID_MODEM_QPSK) */ \ +MODEM() MODEM(_recreate)(MODEM() _q, \ + modulation_scheme _scheme); \ + \ +/* Destroy modem object, freeing all allocated memory */ \ +void MODEM(_destroy)(MODEM() _q); \ + \ +/* Print modem status to stdout */ \ +void MODEM(_print)(MODEM() _q); \ + \ +/* Reset internal state of modem object; note that this is only */ \ +/* relevant for modulation types that retain an internal state such as */ \ +/* LIQUID_MODEM_DPSK4 as most linear modulation types are stateless */ \ +void MODEM(_reset)(MODEM() _q); \ + \ +/* Generate random symbol for modulation */ \ +unsigned int MODEM(_gen_rand_sym)(MODEM() _q); \ + \ +/* Get number of bits per symbol (bps) of modem object */ \ +unsigned int MODEM(_get_bps)(MODEM() _q); \ + \ +/* Get modulation scheme of modem object */ \ +modulation_scheme MODEM(_get_scheme)(MODEM() _q); \ + \ +/* Modulate input symbol (bits) and generate output complex sample */ \ +/* _q : modem object */ \ +/* _s : input symbol, 0 <= _s <= M-1 */ \ +/* _y : output complex sample */ \ +void MODEM(_modulate)(MODEM() _q, \ + unsigned int _s, \ + TC * _y); \ + \ +/* Demodulate input sample and provide maximum-likelihood estimate of */ \ +/* symbol that would have generated it. */ \ +/* The output is a hard decision value on the input sample. */ \ +/* This is performed efficiently by taking advantage of symmetry on */ \ +/* most modulation types. */ \ +/* For example, square and rectangular quadrature amplitude modulation */ \ +/* with gray coding can use a bisection search indepdently on its */ \ +/* in-phase and quadrature channels. */ \ +/* Arbitrary modulation schemes are relatively slow, however, for large */ \ +/* modulation types as the demodulator must compute the distance */ \ +/* between the received sample and all possible symbols to derive the */ \ +/* optimal symbol. */ \ +/* _q : modem object */ \ +/* _x : input sample */ \ +/* _s : output hard symbol, 0 <= _s <= M-1 */ \ +void MODEM(_demodulate)(MODEM() _q, \ + TC _x, \ + unsigned int * _s); \ + \ +/* Demodulate input sample and provide (approximate) log-likelihood */ \ +/* ratio (LLR, soft bits) as an output. */ \ +/* Similarly to the hard-decision demodulation method, this is computed */ \ +/* efficiently for most modulation types. */ \ +/* _q : modem object */ \ +/* _x : input sample */ \ +/* _s : output hard symbol, 0 <= _s <= M-1 */ \ +/* _soft_bits : output soft bits, [size: log2(M) x 1] */ \ +void MODEM(_demodulate_soft)(MODEM() _q, \ + TC _x, \ + unsigned int * _s, \ + unsigned char * _soft_bits); \ + \ +/* Get demodulator's estimated transmit sample */ \ +void MODEM(_get_demodulator_sample)(MODEM() _q, \ + TC * _x_hat); \ + \ +/* Get demodulator phase error */ \ +float MODEM(_get_demodulator_phase_error)(MODEM() _q); \ + \ +/* Get demodulator error vector magnitude */ \ +float MODEM(_get_demodulator_evm)(MODEM() _q); \ // define modem APIs LIQUID_MODEM_DEFINE_API(LIQUID_MODEM_MANGLE_FLOAT,float,liquid_float_complex) @@ -5808,39 +6900,42 @@ float fskdem_get_frequency_error(fskdem _q); // FREQMOD : name-mangling macro // T : primitive data type // TC : primitive data type (complex) -#define LIQUID_FREQMOD_DEFINE_API(FREQMOD,T,TC) \ -typedef struct FREQMOD(_s) * FREQMOD(); \ - \ -/* create freqmod object (frequency modulator) */ \ -/* _kf : modulation factor */ \ -FREQMOD() FREQMOD(_create)(float _kf); \ - \ -/* destroy freqmod object */ \ -void FREQMOD(_destroy)(FREQMOD() _q); \ - \ -/* print freqmod object internals */ \ -void FREQMOD(_print)(FREQMOD() _q); \ - \ -/* reset state */ \ -void FREQMOD(_reset)(FREQMOD() _q); \ - \ -/* modulate single sample */ \ -/* _q : frequency modulator object */ \ -/* _m : message signal m(t) */ \ -/* _s : complex baseband signal s(t) */ \ -void FREQMOD(_modulate)(FREQMOD() _q, \ - T _m, \ - TC * _s); \ - \ -/* modulate block of samples */ \ -/* _q : frequency modulator object */ \ -/* _m : message signal m(t), [size: _n x 1] */ \ -/* _n : number of input, output samples */ \ -/* _s : complex baseband signal s(t) [size: _n x 1] */ \ -void FREQMOD(_modulate_block)(FREQMOD() _q, \ - T * _m, \ - unsigned int _n, \ - TC * _s); \ +#define LIQUID_FREQMOD_DEFINE_API(FREQMOD,T,TC) \ + \ +/* Analog frequency modulation object */ \ +typedef struct FREQMOD(_s) * FREQMOD(); \ + \ +/* Create freqmod object with a particular modulation factor */ \ +/* _kf : modulation factor */ \ +FREQMOD() FREQMOD(_create)(float _kf); \ + \ +/* Destroy freqmod object, freeing all internal memory */ \ +void FREQMOD(_destroy)(FREQMOD() _q); \ + \ +/* Print freqmod object internals to stdout */ \ +void FREQMOD(_print)(FREQMOD() _q); \ + \ +/* Reset state */ \ +void FREQMOD(_reset)(FREQMOD() _q); \ + \ +/* Modulate single sample, producing single output sample at complex */ \ +/* baseband. */ \ +/* _q : frequency modulator object */ \ +/* _m : message signal \( m(t) \) */ \ +/* _s : complex baseband signal \( s(t) \) */ \ +void FREQMOD(_modulate)(FREQMOD() _q, \ + T _m, \ + TC * _s); \ + \ +/* Modulate block of samples */ \ +/* _q : frequency modulator object */ \ +/* _m : message signal \( m(t) \), [size: _n x 1] */ \ +/* _n : number of input, output samples */ \ +/* _s : complex baseband signal \( s(t) \), [size: _n x 1] */ \ +void FREQMOD(_modulate_block)(FREQMOD() _q, \ + T * _m, \ + unsigned int _n, \ + TC * _s); \ // define freqmod APIs LIQUID_FREQMOD_DEFINE_API(LIQUID_FREQMOD_MANGLE_FLOAT,float,liquid_float_complex) @@ -6057,20 +7152,20 @@ LIQUID_FIRPFBCH_DEFINE_API(LIQUID_FIRPFBCH_MANGLE_CCCF, typedef struct FIRPFBCH2(_s) * FIRPFBCH2(); \ \ /* create firpfbch2 object */ \ -/* _type : channelizer type (e.g. LIQUID_ANALYZER) */ \ -/* _M : number of channels (must be even) */ \ -/* _m : prototype filter semi-lenth, length=2*M*m */ \ -/* _h : prototype filter coefficient array */ \ +/* _type : channelizer type (e.g. LIQUID_ANALYZER) */ \ +/* _M : number of channels (must be even) */ \ +/* _m : prototype filter semi-length, length=2*M*m */ \ +/* _h : prototype filter coefficient array */ \ FIRPFBCH2() FIRPFBCH2(_create)(int _type, \ unsigned int _M, \ unsigned int _m, \ TC * _h); \ \ /* create firpfbch2 object using Kaiser window prototype */ \ -/* _type : channelizer type (e.g. LIQUID_ANALYZER) */ \ -/* _M : number of channels (must be even) */ \ -/* _m : prototype filter semi-lenth, length=2*M*m+1 */ \ -/* _As : filter stop-band attenuation [dB] */ \ +/* _type : channelizer type (e.g. LIQUID_ANALYZER) */ \ +/* _M : number of channels (must be even) */ \ +/* _m : prototype filter semi-length, length=2*M*m+1 */ \ +/* _As : filter stop-band attenuation [dB] */ \ FIRPFBCH2() FIRPFBCH2(_create_kaiser)(int _type, \ unsigned int _M, \ unsigned int _m, \ @@ -6242,62 +7337,133 @@ typedef enum { // NCO : name-mangling macro // T : primitive data type // TC : input/output data type -#define LIQUID_NCO_DEFINE_API(NCO,T,TC) \ -typedef struct NCO(_s) * NCO(); \ - \ -NCO() NCO(_create)(liquid_ncotype _type); \ -void NCO(_destroy)(NCO() _q); \ -void NCO(_print)(NCO() _q); \ - \ -/* set phase/frequency to zero, reset pll filter */ \ -void NCO(_reset)(NCO() _q); \ - \ -/* get/set/adjust internal frequency/phase */ \ -T NCO(_get_frequency)( NCO() _q); \ -void NCO(_set_frequency)( NCO() _q, T _f); \ -void NCO(_adjust_frequency)(NCO() _q, T _df); \ -T NCO(_get_phase)( NCO() _q); \ -void NCO(_set_phase)( NCO() _q, T _phi); \ -void NCO(_adjust_phase)( NCO() _q, T _dphi); \ - \ -/* increment phase by internal phase step (frequency) */ \ -void NCO(_step)(NCO() _q); \ - \ -/* compute trigonometric functions */ \ -T NCO(_sin)(NCO() _q); \ -T NCO(_cos)(NCO() _q); \ -void NCO(_sincos)(NCO() _q, T* _s, T* _c); \ -void NCO(_cexpf)(NCO() _q, TC * _y); \ - \ -/* pll : phase-locked loop */ \ -void NCO(_pll_set_bandwidth)(NCO() _q, T _bandwidth); \ -void NCO(_pll_step)(NCO() _q, T _dphi); \ - \ -/* Rotate input sample up by NCO angle (no stepping) */ \ -void NCO(_mix_up)(NCO() _q, TC _x, TC *_y); \ - \ -/* Rotate input sample down by NCO angle (no stepping) */ \ -void NCO(_mix_down)(NCO() _q, TC _x, TC *_y); \ - \ -/* Rotate input vector up by NCO angle (stepping) */ \ -/* _q : nco object */ \ -/* _x : input vector [size: _N x 1] */ \ -/* _y : output vector [size: _N x 1] */ \ -/* _N : vector size */ \ -void NCO(_mix_block_up)(NCO() _q, \ - TC *_x, \ - TC *_y, \ - unsigned int _N); \ - \ -/* Rotate input vector down by NCO angle (stepping) */ \ -/* _q : nco object */ \ -/* _x : input vector [size: _N x 1] */ \ -/* _y : output vector [size: _N x 1] */ \ -/* _N : vector size */ \ -void NCO(_mix_block_down)(NCO() _q, \ - TC *_x, \ - TC *_y, \ - unsigned int _N); \ +#define LIQUID_NCO_DEFINE_API(NCO,T,TC) \ + \ +/* Numerically-controlled oscillator object */ \ +typedef struct NCO(_s) * NCO(); \ + \ +/* Create nco object with either fixed-point or floating-point phase */ \ +/* _type : oscillator type, _type in {LIQUID_NCO, LIQUID_VCO} */ \ +NCO() NCO(_create)(liquid_ncotype _type); \ + \ +/* Destroy nco object, freeing all internally allocated memory */ \ +void NCO(_destroy)(NCO() _q); \ + \ +/* Print nco object internals to stdout */ \ +void NCO(_print)(NCO() _q); \ + \ +/* Set phase/frequency to zero and reset the phase-locked loop filter */ \ +/* state */ \ +void NCO(_reset)(NCO() _q); \ + \ +/* Get frequency of nco object in radians per sample */ \ +T NCO(_get_frequency)(NCO() _q); \ + \ +/* Set frequency of nco object in radians per sample */ \ +/* _q : nco object */ \ +/* _dtheta : input frequency [radians/sample] */ \ +void NCO(_set_frequency)(NCO() _q, \ + T _dtheta); \ + \ +/* Adjust frequency of nco object by a step size in radians per sample */ \ +/* _q : nco object */ \ +/* _step : input frequency step [radians/sample] */ \ +void NCO(_adjust_frequency)(NCO() _q, \ + T _step); \ + \ +/* Get phase of nco object in radians */ \ +T NCO(_get_phase)(NCO() _q); \ + \ +/* Set phase of nco object in radians */ \ +/* _q : nco object */ \ +/* _phi : input phase of nco object [radians] */ \ +void NCO(_set_phase)(NCO() _q, \ + T _phi); \ + \ +/* Adjust phase of nco object by a step of \(\Delta \phi\) radians */ \ +/* _q : nco object */ \ +/* _dphi : input nco object phase adjustment [radians] */ \ +void NCO(_adjust_phase)(NCO() _q, \ + T _dphi); \ + \ +/* Increment phase by internal phase step (frequency) */ \ +void NCO(_step)(NCO() _q); \ + \ +/* Compute sine output given internal phase */ \ +T NCO(_sin)(NCO() _q); \ + \ +/* Compute cosine output given internal phase */ \ +T NCO(_cos)(NCO() _q); \ + \ +/* Compute sine and cosine outputs given internal phase */ \ +/* _q : nco object */ \ +/* _s : output sine component of phase */ \ +/* _c : output cosine component of phase */ \ +void NCO(_sincos)(NCO() _q, \ + T * _s, \ + T * _c); \ + \ +/* Compute complex exponential output given internal phase */ \ +/* _q : nco object */ \ +/* _y : output complex exponential */ \ +void NCO(_cexpf)(NCO() _q, \ + TC * _y); \ + \ +/* Set bandwidth of internal phase-locked loop */ \ +/* _q : nco object */ \ +/* _bw : input phase-locked loop bandwidth, _bw >= 0 */ \ +void NCO(_pll_set_bandwidth)(NCO() _q, \ + T _bw); \ + \ +/* Step internal phase-locked loop given input phase error, adjusting */ \ +/* internal phase and frequency proportional to coefficients defined by */ \ +/* internal PLL bandwidth */ \ +/* _q : nco object */ \ +/* _dphi : input phase-locked loop phase error */ \ +void NCO(_pll_step)(NCO() _q, \ + T _dphi); \ + \ +/* Rotate input sample up by nco angle. */ \ +/* Note that this does not adjust the internal phase or frequency. */ \ +/* _q : nco object */ \ +/* _x : input complex sample */ \ +/* _y : pointer to output sample location */ \ +void NCO(_mix_up)(NCO() _q, \ + TC _x, \ + TC * _y); \ + \ +/* Rotate input sample down by nco angle. */ \ +/* Note that this does not adjust the internal phase or frequency. */ \ +/* _q : nco object */ \ +/* _x : input complex sample */ \ +/* _y : pointer to output sample location */ \ +void NCO(_mix_down)(NCO() _q, \ + TC _x, \ + TC * _y); \ + \ +/* Rotate input vector up by NCO angle (stepping) */ \ +/* Note that this *does* adjust the internal phase as the signal steps */ \ +/* through each input sample. */ \ +/* _q : nco object */ \ +/* _x : array of input samples, [size: _n x 1] */ \ +/* _y : array of output samples, [size: _n x 1] */ \ +/* _n : number of input (and output) samples */ \ +void NCO(_mix_block_up)(NCO() _q, \ + TC * _x, \ + TC * _y, \ + unsigned int _n); \ + \ +/* Rotate input vector down by NCO angle (stepping) */ \ +/* Note that this *does* adjust the internal phase as the signal steps */ \ +/* through each input sample. */ \ +/* _q : nco object */ \ +/* _x : array of input samples, [size: _n x 1] */ \ +/* _y : array of output samples, [size: _n x 1] */ \ +/* _n : number of input (and output) samples */ \ +void NCO(_mix_block_down)(NCO() _q, \ + TC * _x, \ + TC * _y, \ + unsigned int _n); \ // Define nco APIs LIQUID_NCO_DEFINE_API(LIQUID_NCO_MANGLE_FLOAT, float, liquid_float_complex) @@ -6311,6 +7477,74 @@ void liquid_unwrap_phase(float * _theta, unsigned int _n); // unwrap phase of array (advanced) void liquid_unwrap_phase2(float * _theta, unsigned int _n); +#define SYNTH_MANGLE_FLOAT(name) LIQUID_CONCAT(synth_crcf, name) + +// large macro +// SYNTH : name-mangling macro +// T : primitive data type +// TC : input/output data type +#define LIQUID_SYNTH_DEFINE_API(SYNTH,T,TC) \ +typedef struct SYNTH(_s) * SYNTH(); \ + \ +SYNTH() SYNTH(_create)(const TC *_table, unsigned int _length); \ +void SYNTH(_destroy)(SYNTH() _q); \ + \ +void SYNTH(_reset)(SYNTH() _q); \ + \ +/* get/set/adjust internal frequency/phase */ \ +T SYNTH(_get_frequency)( SYNTH() _q); \ +void SYNTH(_set_frequency)( SYNTH() _q, T _f); \ +void SYNTH(_adjust_frequency)(SYNTH() _q, T _df); \ +T SYNTH(_get_phase)( SYNTH() _q); \ +void SYNTH(_set_phase)( SYNTH() _q, T _phi); \ +void SYNTH(_adjust_phase)( SYNTH() _q, T _dphi); \ + \ +unsigned int SYNTH(_get_length)(SYNTH() _q); \ +TC SYNTH(_get_current)(SYNTH() _q); \ +TC SYNTH(_get_half_previous)(SYNTH() _q); \ +TC SYNTH(_get_half_next)(SYNTH() _q); \ + \ +void SYNTH(_step)(SYNTH() _q); \ + \ +/* pll : phase-locked loop */ \ +void SYNTH(_pll_set_bandwidth)(SYNTH() _q, T _bandwidth); \ +void SYNTH(_pll_step)(SYNTH() _q, T _dphi); \ + \ +/* Rotate input sample up by SYNTH angle (no stepping) */ \ +void SYNTH(_mix_up)(SYNTH() _q, TC _x, TC *_y); \ + \ +/* Rotate input sample down by SYNTH angle (no stepping) */ \ +void SYNTH(_mix_down)(SYNTH() _q, TC _x, TC *_y); \ + \ +/* Rotate input vector up by SYNTH angle (stepping) */ \ +void SYNTH(_mix_block_up)(SYNTH() _q, \ + TC *_x, \ + TC *_y, \ + unsigned int _N); \ + \ +/* Rotate input vector down by SYNTH angle (stepping) */ \ +void SYNTH(_mix_block_down)(SYNTH() _q, \ + TC *_x, \ + TC *_y, \ + unsigned int _N); \ + \ +void SYNTH(_spread)(SYNTH() _q, \ + TC _x, \ + TC *_y); \ + \ +void SYNTH(_despread)(SYNTH() _q, \ + TC *_x, \ + TC *_y); \ + \ +void SYNTH(_despread_triple)(SYNTH() _q, \ + TC *_x, \ + TC *_early, \ + TC *_punctual, \ + TC *_late); \ + +// Define synth APIs +LIQUID_SYNTH_DEFINE_API(SYNTH_MANGLE_FLOAT, float, liquid_float_complex) + // @@ -6587,19 +7821,44 @@ typedef enum { // large macro // QUANTIZER : name-mangling macro // T : data type -#define LIQUID_QUANTIZER_DEFINE_API(QUANTIZER,T) \ -typedef struct QUANTIZER(_s) * QUANTIZER(); \ -QUANTIZER() QUANTIZER(_create)(liquid_compander_type _ctype, \ - float _range, \ - unsigned int _num_bits); \ -void QUANTIZER(_destroy)(QUANTIZER() _q); \ -void QUANTIZER(_print)(QUANTIZER() _q); \ -void QUANTIZER(_execute_adc)(QUANTIZER() _q, \ - T _x, \ - unsigned int * _sample); \ -void QUANTIZER(_execute_dac)(QUANTIZER() _q, \ - unsigned int _sample, \ - T * _x); \ +#define LIQUID_QUANTIZER_DEFINE_API(QUANTIZER,T) \ + \ +/* Amplitude quantization object */ \ +typedef struct QUANTIZER(_s) * QUANTIZER(); \ + \ +/* Create quantizer object given compander type, input range, and the */ \ +/* number of bits to represent the output */ \ +/* _ctype : compander type (linear, mulaw, alaw) */ \ +/* _range : maximum abosolute input range (ignored for now) */ \ +/* _num_bits : number of bits per sample */ \ +QUANTIZER() QUANTIZER(_create)(liquid_compander_type _ctype, \ + float _range, \ + unsigned int _num_bits); \ + \ +/* Destroy object, freeing all internally-allocated memory. */ \ +void QUANTIZER(_destroy)(QUANTIZER() _q); \ + \ +/* Print object properties to stdout, including compander type and */ \ +/* number of bits per sample */ \ +void QUANTIZER(_print)(QUANTIZER() _q); \ + \ +/* Execute quantizer as analog-to-digital converter, accepting input */ \ +/* sample and returning digitized output bits */ \ +/* _q : quantizer object */ \ +/* _x : input sample */ \ +/* _s : output bits */ \ +void QUANTIZER(_execute_adc)(QUANTIZER() _q, \ + T _x, \ + unsigned int * _s); \ + \ +/* Execute quantizer as digital-to-analog converter, accepting input */ \ +/* bits and returning representation of original input sample */ \ +/* _q : quantizer object */ \ +/* _s : input bits */ \ +/* _x : output sample */ \ +void QUANTIZER(_execute_dac)(QUANTIZER() _q, \ + unsigned int _s, \ + T * _x); \ LIQUID_QUANTIZER_DEFINE_API(LIQUID_QUANTIZER_MANGLE_FLOAT, float) LIQUID_QUANTIZER_DEFINE_API(LIQUID_QUANTIZER_MANGLE_CFLOAT, liquid_float_complex) @@ -6610,11 +7869,16 @@ LIQUID_QUANTIZER_DEFINE_API(LIQUID_QUANTIZER_MANGLE_CFLOAT, liquid_float_complex // -// Uniform random number generator, (0,1] +// Uniform random number generator, [0,1) float randf(); float randf_pdf(float _x); float randf_cdf(float _x); +// Uniform random number generator with arbitrary bounds, [a,b) +float randuf(float _a, float _b); +float randuf_pdf(float _x, float _a, float _b); +float randuf_cdf(float _x, float _a, float _b); + // Gauss random number generator, N(0,1) // f(x) = 1/sqrt(2*pi*sigma^2) * exp{-(x-eta)^2/(2*sigma^2)} // @@ -6984,6 +8248,14 @@ unsigned int liquid_reverse_uint16(unsigned int _x); unsigned int liquid_reverse_uint24(unsigned int _x); unsigned int liquid_reverse_uint32(unsigned int _x); +// get scale for constant, particularly for plotting purposes +// _val : input value (e.g. 100e6) +// _unit : output unit character (e.g. 'M') +// _scale : output scale (e.g. 1e-6) +void liquid_get_scale(float _val, + char * _unit, + float * _scale); + // // MODULE : vector // diff --git a/external/liquid-dsp/makefile.mingw32 b/external/liquid-dsp/makefile.mingw32 index 8451dd1..c0e48fc 100644 --- a/external/liquid-dsp/makefile.mingw32 +++ b/external/liquid-dsp/makefile.mingw32 @@ -1,4 +1,4 @@ -# Copyright (c) 2007 - 2016 Joseph Gaeddert +# Copyright (c) 2007 - 2018 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 @@ -23,8 +23,7 @@ # # Targets: # all : dynamic shared-library object (e.g. libliquid.so) -# install : install the dynamic shared library object and -# header file(s) +# install : install the dynamic shared library object and headers # uninstall : uninstall the library and header file(s) # clean : clean all targets (bench, check, examples, etc) # distclean : removes everything except the originally distributed files @@ -57,9 +56,10 @@ include_dirs := . include CC := gcc MV := mv -f RM := rm -f -SED := /usr/bin/sed -GREP := /usr/bin/grep +SED := /bin/sed +GREP := /bin/grep AR := ar +LIBTOOL := RANLIB := ranlib # flags @@ -71,7 +71,6 @@ CFLAGS = $(CONFIG_CFLAGS) -Wall -fPIC LDFLAGS = #MINGW: LIBS += -lmsvcrt -ARFLAGS = r PATHSEP = / # @@ -446,10 +445,13 @@ filter_includes := \ src/filter/src/iirdecim.c \ src/filter/src/iirfilt.c \ src/filter/src/iirfiltsos.c \ + src/filter/src/iirhilb.c \ src/filter/src/iirinterp.c \ src/filter/src/msresamp.c \ src/filter/src/msresamp2.c \ - src/filter/src/resamp.c \ + src/filter/src/ordfilt.c \ + src/filter/src/rresamp.c \ + src/filter/src/resamp.fixed.c \ src/filter/src/resamp2.c \ src/filter/src/symsync.c \ @@ -489,6 +491,7 @@ filter_autotests := \ src/filter/tests/iirfilt_xxxf_autotest.c \ src/filter/tests/iirfiltsos_rrrf_autotest.c \ src/filter/tests/msresamp_crcf_autotest.c \ + src/filter/tests/rresamp_crcf_autotest.c \ src/filter/tests/resamp_crcf_autotest.c \ src/filter/tests/resamp2_crcf_autotest.c \ src/filter/tests/symsync_crcf_autotest.c \ @@ -573,6 +576,7 @@ filter_benchmarks := \ src/filter/bench/iirdecim_crcf_benchmark.c \ src/filter/bench/iirfilt_crcf_benchmark.c \ src/filter/bench/iirinterp_crcf_benchmark.c \ + src/filter/bench/rresamp_crcf_benchmark.c \ src/filter/bench/resamp_crcf_benchmark.c \ src/filter/bench/resamp2_crcf_benchmark.c \ src/filter/bench/symsync_crcf_benchmark.c \ @@ -589,6 +593,8 @@ framing_objects := \ src/framing/src/bsync_crcf.o \ src/framing/src/bsync_cccf.o \ src/framing/src/detector_cccf.o \ + src/framing/src/dsssframegen.o \ + src/framing/src/dsssframesync.o \ src/framing/src/framedatastats.o \ src/framing/src/framesyncstats.o \ src/framing/src/framegen64.o \ @@ -618,6 +624,8 @@ src/framing/src/bsync_rrrf.o : %.o : %.c $(include_headers) src/framing/s src/framing/src/bsync_crcf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c src/framing/src/bsync_cccf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c src/framing/src/detector_cccf.o : %.o : %.c $(include_headers) +src/framing/src/dsssframegen.o : %.o : %.c $(include_headers) +src/framing/src/dsssframesync.o : %.o : %.c $(include_headers) src/framing/src/framedatastats.o : %.o : %.c $(include_headers) src/framing/src/framesyncstats.o : %.o : %.c $(include_headers) src/framing/src/framegen64.o : %.o : %.c $(include_headers) @@ -694,12 +702,14 @@ src/math/src/windows.o : %.o : %.c $(include_headers) math_autotests := \ + src/math/tests/gcd_autotest.c \ src/math/tests/kbd_autotest.c \ src/math/tests/math_autotest.c \ src/math/tests/math_bessel_autotest.c \ src/math/tests/math_gamma_autotest.c \ src/math/tests/math_complex_autotest.c \ src/math/tests/polynomial_autotest.c \ + src/math/tests/prime_autotest.c \ math_benchmarks := \ @@ -887,15 +897,18 @@ multichannel_benchmarks := \ nco_objects := \ src/nco/src/nco_crcf.o \ src/nco/src/nco.utilities.o \ + src/nco/src/synth_crcf.o \ src/nco/src/nco_crcf.o : %.o : %.c $(include_headers) src/nco/src/nco.c src/nco/src/nco.utilities.o : %.o : %.c $(include_headers) +src/nco/src/synth_crcf.o : %.o : %.c $(include_headers) src/nco/src/synth.c # autotests nco_autotests := \ src/nco/tests/nco_crcf_frequency_autotest.c \ + src/nco/tests/nco_crcf_mix_autotest.c \ src/nco/tests/nco_crcf_phase_autotest.c \ src/nco/tests/nco_crcf_pll_autotest.c \ src/nco/tests/unwrap_phase_autotest.c \ @@ -1023,6 +1036,7 @@ utility_objects := \ src/utility/src/msb_index.o \ src/utility/src/pack_bytes.o \ src/utility/src/shift_array.o \ + src/utility/src/utility.o \ $(utility_objects) : %.o : %.c $(include_headers) @@ -1033,9 +1047,9 @@ utility_autotests := \ src/utility/tests/pack_bytes_autotest.c \ src/utility/tests/shift_array_autotest.c \ - # benchmarks -utility_benchmarks := +utility_benchmarks := \ + src/utility/bench/byte_utilities_benchmark.c \ # @@ -1155,28 +1169,35 @@ benchmark_sources := \ .PHONY: all # Shared library +ARCHIVE_LIB = libliquid.a #MINGW: SHARED_LIB = libliquid.dll -# liquid library definition -libliquid.a: $(objects) - $(AR) $(ARFLAGS) $@ $^ - $(RANLIB) $@ - +# # darwin # +libliquid.ar: $(objects) + ${LIBTOOL} -static -o $@ $^ + # gcc -dynamiclib -install_name libliquid.dylib -o libliquid.dylib libmodem.a libutility.a libliquid.dylib: $(objects) $(CC) -dynamiclib -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS) +# # linux, et al +# +libliquid.a: $(objects) + ${AR} r $@ $^ + ${RANLIB} $@ + libliquid.so: libliquid.a $(CC) $(CFLAGS) $(LDFLAGS) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LIBS) #MINGW: libliquid.dll: libliquid.a $(CC) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive -Wl,--output-def,libliquid.def -Wl,--out-implib,libliquid.lib $(LIBS) -all: libliquid.a $(SHARED_LIB) +# static archive and library objects +all: ${ARCHIVE_LIB} ${SHARED_LIB} ## ## TARGET : help - print list of targets @@ -1196,7 +1217,7 @@ install: all @echo "" mkdir -p $(DESTDIR)$(exec_prefix)$(libdir) mkdir -p $(DESTDIR)$(prefix)/include/liquid - install -m 644 -p $(SHARED_LIB) libliquid.a $(DESTDIR)$(exec_prefix)$(libdir) + install -m 644 -p ${ARCHIVE_LIB} ${SHARED_LIB} $(DESTDIR)$(exec_prefix)$(libdir) install -m 644 -p $(addprefix include/,$(headers_install)) $(DESTDIR)$(prefix)/include/liquid @echo "" @echo "---------------------------------------------------------" @@ -1219,8 +1240,8 @@ install: all uninstall: @echo "uninstalling..." $(RM) $(addprefix $(DESTDIR)$(prefix)/include/liquid/, $(headers_install)) - $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/libliquid.a - $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/$(SHARED_LIB) + $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${ARCHIVE_LIB} + $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${SHARED_LIB} @echo "done." ## @@ -1274,12 +1295,12 @@ $(autotest_prog).o : autotest/autotest.c autotest/autotest.h autotest_include.h # link the autotest program with the objects # NOTE: linked libraries must come _after_ the target program -$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o libliquid.a +$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o ${ARCHIVE_LIB} $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) # run the autotest program check: $(autotest_prog) - ./$(autotest_prog) -v + ./$(autotest_prog) -v -o autotest.json # let 'make test' be an alias for 'make check' test: check @@ -1290,6 +1311,7 @@ clean-check: $(RM) autotest/autotestlib.o $(RM) $(autotest_obj) $(RM) $(autotest_extra_obj) + $(RM) autotest.json ## @@ -1326,7 +1348,7 @@ $(bench_prog).o: bench/bench.c benchmark_include.h bench/bench.c # link the benchmark program with the library objects # NOTE: linked libraries must come _after_ the target program -$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) libliquid.a +$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) ${ARCHIVE_LIB} $(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $(bench_prog) $(BENCH_LIBS) # run the benchmark program @@ -1341,7 +1363,7 @@ scripts/benchmark_compare : % : %.c bench/fftbench.o : %.o : %.c $(CC) $(BENCH_CPPFLAGS) $(BENCH_CFLAGS) $< -c -o $@ -bench/fftbench : % : %.o libliquid.a +bench/fftbench : % : %.o ${ARCHIVE_LIB} $(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $@ $(BENCH_LIBS) # clean up the generated files @@ -1383,6 +1405,7 @@ example_programs := \ examples/cpfskmodem_psd_example \ examples/cvsd_example \ examples/detector_cccf_example \ + examples/dsssframesync_example \ examples/dotprod_rrrf_example \ examples/dotprod_cccf_example \ examples/eqlms_cccf_block_example \ @@ -1405,9 +1428,11 @@ example_programs := \ examples/firdespm_lowpass_example \ examples/firhilb_example \ examples/firhilb_decim_example \ + examples/firhilb_filter_example \ examples/firhilb_interp_example \ examples/firpfbch2_crcf_example \ examples/firinterp_crcf_example \ + examples/firinterp_firdecim_crcf_example \ examples/firpfbch_crcf_example \ examples/firpfbch_crcf_analysis_example \ examples/firpfbch_crcf_synthesis_example \ @@ -1416,6 +1441,7 @@ example_programs := \ examples/framesync64_example \ examples/freqmodem_example \ examples/fskmodem_example \ + examples/fskmodem_waterfall_example \ examples/gasearch_example \ examples/gasearch_knapsack_example \ examples/gmskframesync_example \ @@ -1432,6 +1458,8 @@ example_programs := \ examples/iirfilt_cccf_example \ examples/iirfilt_crcf_example \ examples/iirfilt_crcf_dcblocker_example \ + examples/iirhilb_example \ + examples/iirhilb_filter_example \ examples/iirinterp_crcf_example \ examples/kbd_window_example \ examples/lpc_example \ @@ -1446,13 +1474,16 @@ example_programs := \ examples/msequence_example \ examples/msourcecf_example \ examples/msresamp_crcf_example \ + examples/msresamp_crcf_noise_example \ examples/msresamp2_crcf_example \ + examples/nco_crcf_mix_example \ examples/nco_example \ examples/nco_pll_example \ examples/nco_pll_modem_example \ examples/nyquist_filter_example \ examples/ofdmflexframesync_example \ examples/ofdmframesync_example \ + examples/ordfilt_rrrf_example \ examples/packetizer_example \ examples/packetizer_soft_example \ examples/pll_example \ @@ -1467,7 +1498,9 @@ example_programs := \ examples/quantize_example \ examples/random_histogram_example \ examples/repack_bytes_example \ + examples/rresamp_crcf_example \ examples/resamp_crcf_example \ + examples/resamp_crcf_noise_example \ examples/resamp2_cccf_example \ examples/resamp2_crcf_example \ examples/resamp2_crcf_decim_example \ @@ -1477,7 +1510,6 @@ example_programs := \ examples/scramble_example \ examples/smatrix_example \ examples/spgramcf_example \ - examples/spgramcf_waterfall_example \ examples/spgramf_example \ examples/spwaterfallcf_example \ examples/symsync_crcf_example \ @@ -1499,7 +1531,7 @@ examples: $(example_programs) # NOTE: linked libraries must come _after_ the target program $(example_objects): %.o : %.c -$(example_programs): % : %.o libliquid.a +$(example_programs): % : %.o ${ARCHIVE_LIB} $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) # clean examples @@ -1605,6 +1637,7 @@ sandbox_programs = \ sandbox/symsync_eqlms_test \ sandbox/svd_test \ sandbox/thiran_allpass_iir_test \ + sandbox/throttle_test \ sandbox/vectorcf_test \ # sandbox/packetizer_persistent_ber_test @@ -1621,7 +1654,7 @@ SANDBOX_LDFLAGS = $(LDFLAGS) -lfftw3f # NOTE: linked libraries must come _after_ the target program $(sandbox_objects): %.o : %.c -$(sandbox_programs): % : %.o libliquid.a +$(sandbox_programs): % : %.o ${ARCHIVE_LIB} $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS) # clean sandbox @@ -1630,6 +1663,22 @@ clean-sandbox: $(RM) $(sandbox_programs) +.PHONY: tools +tools_programs = \ + tools/msequence_generator \ + +tools_objects = $(patsubst %,%.o,$(tools_programs)) +tools: $(tools_programs) + +$(tools_objects): %.o: %.c + +$(tools_programs): % : %.o ${ARCHIVE_LIB} + $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) + +clean-tools: + $(RM) tools/*.o + $(RM) $(tools_programs) + ## ## TARGET : world - build absolutely everything ## @@ -1666,10 +1715,8 @@ clean-modules: $(RM) src/vector/src/*.o src/vector/bench/*.o src/vector/tests/*.o $(RM) src/libliquid.o -clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox - $(RM) $(extra_clean) - $(RM) libliquid.a - $(RM) $(SHARED_LIB) +clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox clean-tools + $(RM) ${ARCHIVE_LIB} ${SHARED_LIB} $(extra_clean) ## ## TARGET : distclean - removes everything except the originally distributed files diff --git a/external/liquid-dsp/makefile.mingw64 b/external/liquid-dsp/makefile.mingw64 index de02015..aebccbd 100644 --- a/external/liquid-dsp/makefile.mingw64 +++ b/external/liquid-dsp/makefile.mingw64 @@ -1,4 +1,4 @@ -# Copyright (c) 2007 - 2016 Joseph Gaeddert +# Copyright (c) 2007 - 2018 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 @@ -23,8 +23,7 @@ # # Targets: # all : dynamic shared-library object (e.g. libliquid.so) -# install : install the dynamic shared library object and -# header file(s) +# install : install the dynamic shared library object and headers # uninstall : uninstall the library and header file(s) # clean : clean all targets (bench, check, examples, etc) # distclean : removes everything except the originally distributed files @@ -57,21 +56,21 @@ include_dirs := . include CC := gcc MV := mv -f RM := rm -f -SED := /usr/bin/sed -GREP := /usr/bin/grep +SED := /bin/sed +GREP := /bin/grep AR := ar +LIBTOOL := RANLIB := ranlib # flags INCLUDE_CFLAGS = $(addprefix -I ,$(include_dirs)) -#MINGW: optimizations goes here -CONFIG_CFLAGS = -O3 -msse3 -ffast-math -static-libgcc -static-libstdc++ +#MINGW: optimizations goes here, use SSSE42 for 64bit +CONFIG_CFLAGS = -O3 -msse4.2 -ffast-math -static-libgcc -static-libstdc++ CPPFLAGS = $(INCLUDE_CFLAGS) CFLAGS = $(CONFIG_CFLAGS) -Wall -fPIC LDFLAGS = #MINGW: LIBS += -static-libgcc -static-libstdc++ -ARFLAGS = r PATHSEP = / # @@ -446,10 +445,13 @@ filter_includes := \ src/filter/src/iirdecim.c \ src/filter/src/iirfilt.c \ src/filter/src/iirfiltsos.c \ + src/filter/src/iirhilb.c \ src/filter/src/iirinterp.c \ src/filter/src/msresamp.c \ src/filter/src/msresamp2.c \ - src/filter/src/resamp.c \ + src/filter/src/ordfilt.c \ + src/filter/src/rresamp.c \ + src/filter/src/resamp.fixed.c \ src/filter/src/resamp2.c \ src/filter/src/symsync.c \ @@ -489,6 +491,7 @@ filter_autotests := \ src/filter/tests/iirfilt_xxxf_autotest.c \ src/filter/tests/iirfiltsos_rrrf_autotest.c \ src/filter/tests/msresamp_crcf_autotest.c \ + src/filter/tests/rresamp_crcf_autotest.c \ src/filter/tests/resamp_crcf_autotest.c \ src/filter/tests/resamp2_crcf_autotest.c \ src/filter/tests/symsync_crcf_autotest.c \ @@ -573,6 +576,7 @@ filter_benchmarks := \ src/filter/bench/iirdecim_crcf_benchmark.c \ src/filter/bench/iirfilt_crcf_benchmark.c \ src/filter/bench/iirinterp_crcf_benchmark.c \ + src/filter/bench/rresamp_crcf_benchmark.c \ src/filter/bench/resamp_crcf_benchmark.c \ src/filter/bench/resamp2_crcf_benchmark.c \ src/filter/bench/symsync_crcf_benchmark.c \ @@ -589,6 +593,8 @@ framing_objects := \ src/framing/src/bsync_crcf.o \ src/framing/src/bsync_cccf.o \ src/framing/src/detector_cccf.o \ + src/framing/src/dsssframegen.o \ + src/framing/src/dsssframesync.o \ src/framing/src/framedatastats.o \ src/framing/src/framesyncstats.o \ src/framing/src/framegen64.o \ @@ -618,6 +624,8 @@ src/framing/src/bsync_rrrf.o : %.o : %.c $(include_headers) src/framing/s src/framing/src/bsync_crcf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c src/framing/src/bsync_cccf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c src/framing/src/detector_cccf.o : %.o : %.c $(include_headers) +src/framing/src/dsssframegen.o : %.o : %.c $(include_headers) +src/framing/src/dsssframesync.o : %.o : %.c $(include_headers) src/framing/src/framedatastats.o : %.o : %.c $(include_headers) src/framing/src/framesyncstats.o : %.o : %.c $(include_headers) src/framing/src/framegen64.o : %.o : %.c $(include_headers) @@ -694,12 +702,14 @@ src/math/src/windows.o : %.o : %.c $(include_headers) math_autotests := \ + src/math/tests/gcd_autotest.c \ src/math/tests/kbd_autotest.c \ src/math/tests/math_autotest.c \ src/math/tests/math_bessel_autotest.c \ src/math/tests/math_gamma_autotest.c \ src/math/tests/math_complex_autotest.c \ src/math/tests/polynomial_autotest.c \ + src/math/tests/prime_autotest.c \ math_benchmarks := \ @@ -887,15 +897,18 @@ multichannel_benchmarks := \ nco_objects := \ src/nco/src/nco_crcf.o \ src/nco/src/nco.utilities.o \ + src/nco/src/synth_crcf.o \ src/nco/src/nco_crcf.o : %.o : %.c $(include_headers) src/nco/src/nco.c src/nco/src/nco.utilities.o : %.o : %.c $(include_headers) +src/nco/src/synth_crcf.o : %.o : %.c $(include_headers) src/nco/src/synth.c # autotests nco_autotests := \ src/nco/tests/nco_crcf_frequency_autotest.c \ + src/nco/tests/nco_crcf_mix_autotest.c \ src/nco/tests/nco_crcf_phase_autotest.c \ src/nco/tests/nco_crcf_pll_autotest.c \ src/nco/tests/unwrap_phase_autotest.c \ @@ -1023,6 +1036,7 @@ utility_objects := \ src/utility/src/msb_index.o \ src/utility/src/pack_bytes.o \ src/utility/src/shift_array.o \ + src/utility/src/utility.o \ $(utility_objects) : %.o : %.c $(include_headers) @@ -1033,9 +1047,9 @@ utility_autotests := \ src/utility/tests/pack_bytes_autotest.c \ src/utility/tests/shift_array_autotest.c \ - # benchmarks -utility_benchmarks := +utility_benchmarks := \ + src/utility/bench/byte_utilities_benchmark.c \ # @@ -1155,28 +1169,35 @@ benchmark_sources := \ .PHONY: all # Shared library +ARCHIVE_LIB = libliquid.a #MINGW: SHARED_LIB = libliquid.dll -# liquid library definition -libliquid.a: $(objects) - $(AR) $(ARFLAGS) $@ $^ - $(RANLIB) $@ - +# # darwin # +libliquid.ar: $(objects) + ${LIBTOOL} -static -o $@ $^ + # gcc -dynamiclib -install_name libliquid.dylib -o libliquid.dylib libmodem.a libutility.a libliquid.dylib: $(objects) $(CC) -dynamiclib -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS) +# # linux, et al +# +libliquid.a: $(objects) + ${AR} r $@ $^ + ${RANLIB} $@ + libliquid.so: libliquid.a $(CC) $(CFLAGS) $(LDFLAGS) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LIBS) #MINGW: libliquid.dll: libliquid.a $(CC) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive -Wl,--output-def,libliquid.def -Wl,--out-implib,libliquid.lib $(LIBS) -all: libliquid.a $(SHARED_LIB) +# static archive and library objects +all: ${ARCHIVE_LIB} ${SHARED_LIB} ## ## TARGET : help - print list of targets @@ -1196,7 +1217,7 @@ install: all @echo "" mkdir -p $(DESTDIR)$(exec_prefix)$(libdir) mkdir -p $(DESTDIR)$(prefix)/include/liquid - install -m 644 -p $(SHARED_LIB) libliquid.a $(DESTDIR)$(exec_prefix)$(libdir) + install -m 644 -p ${ARCHIVE_LIB} ${SHARED_LIB} $(DESTDIR)$(exec_prefix)$(libdir) install -m 644 -p $(addprefix include/,$(headers_install)) $(DESTDIR)$(prefix)/include/liquid @echo "" @echo "---------------------------------------------------------" @@ -1219,8 +1240,8 @@ install: all uninstall: @echo "uninstalling..." $(RM) $(addprefix $(DESTDIR)$(prefix)/include/liquid/, $(headers_install)) - $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/libliquid.a - $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/$(SHARED_LIB) + $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${ARCHIVE_LIB} + $(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${SHARED_LIB} @echo "done." ## @@ -1274,12 +1295,12 @@ $(autotest_prog).o : autotest/autotest.c autotest/autotest.h autotest_include.h # link the autotest program with the objects # NOTE: linked libraries must come _after_ the target program -$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o libliquid.a +$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o ${ARCHIVE_LIB} $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) # run the autotest program check: $(autotest_prog) - ./$(autotest_prog) -v + ./$(autotest_prog) -v -o autotest.json # let 'make test' be an alias for 'make check' test: check @@ -1290,6 +1311,7 @@ clean-check: $(RM) autotest/autotestlib.o $(RM) $(autotest_obj) $(RM) $(autotest_extra_obj) + $(RM) autotest.json ## @@ -1326,7 +1348,7 @@ $(bench_prog).o: bench/bench.c benchmark_include.h bench/bench.c # link the benchmark program with the library objects # NOTE: linked libraries must come _after_ the target program -$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) libliquid.a +$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) ${ARCHIVE_LIB} $(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $(bench_prog) $(BENCH_LIBS) # run the benchmark program @@ -1341,7 +1363,7 @@ scripts/benchmark_compare : % : %.c bench/fftbench.o : %.o : %.c $(CC) $(BENCH_CPPFLAGS) $(BENCH_CFLAGS) $< -c -o $@ -bench/fftbench : % : %.o libliquid.a +bench/fftbench : % : %.o ${ARCHIVE_LIB} $(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $@ $(BENCH_LIBS) # clean up the generated files @@ -1383,6 +1405,7 @@ example_programs := \ examples/cpfskmodem_psd_example \ examples/cvsd_example \ examples/detector_cccf_example \ + examples/dsssframesync_example \ examples/dotprod_rrrf_example \ examples/dotprod_cccf_example \ examples/eqlms_cccf_block_example \ @@ -1405,9 +1428,11 @@ example_programs := \ examples/firdespm_lowpass_example \ examples/firhilb_example \ examples/firhilb_decim_example \ + examples/firhilb_filter_example \ examples/firhilb_interp_example \ examples/firpfbch2_crcf_example \ examples/firinterp_crcf_example \ + examples/firinterp_firdecim_crcf_example \ examples/firpfbch_crcf_example \ examples/firpfbch_crcf_analysis_example \ examples/firpfbch_crcf_synthesis_example \ @@ -1416,6 +1441,7 @@ example_programs := \ examples/framesync64_example \ examples/freqmodem_example \ examples/fskmodem_example \ + examples/fskmodem_waterfall_example \ examples/gasearch_example \ examples/gasearch_knapsack_example \ examples/gmskframesync_example \ @@ -1432,6 +1458,8 @@ example_programs := \ examples/iirfilt_cccf_example \ examples/iirfilt_crcf_example \ examples/iirfilt_crcf_dcblocker_example \ + examples/iirhilb_example \ + examples/iirhilb_filter_example \ examples/iirinterp_crcf_example \ examples/kbd_window_example \ examples/lpc_example \ @@ -1446,13 +1474,16 @@ example_programs := \ examples/msequence_example \ examples/msourcecf_example \ examples/msresamp_crcf_example \ + examples/msresamp_crcf_noise_example \ examples/msresamp2_crcf_example \ + examples/nco_crcf_mix_example \ examples/nco_example \ examples/nco_pll_example \ examples/nco_pll_modem_example \ examples/nyquist_filter_example \ examples/ofdmflexframesync_example \ examples/ofdmframesync_example \ + examples/ordfilt_rrrf_example \ examples/packetizer_example \ examples/packetizer_soft_example \ examples/pll_example \ @@ -1467,7 +1498,9 @@ example_programs := \ examples/quantize_example \ examples/random_histogram_example \ examples/repack_bytes_example \ + examples/rresamp_crcf_example \ examples/resamp_crcf_example \ + examples/resamp_crcf_noise_example \ examples/resamp2_cccf_example \ examples/resamp2_crcf_example \ examples/resamp2_crcf_decim_example \ @@ -1477,7 +1510,6 @@ example_programs := \ examples/scramble_example \ examples/smatrix_example \ examples/spgramcf_example \ - examples/spgramcf_waterfall_example \ examples/spgramf_example \ examples/spwaterfallcf_example \ examples/symsync_crcf_example \ @@ -1499,7 +1531,7 @@ examples: $(example_programs) # NOTE: linked libraries must come _after_ the target program $(example_objects): %.o : %.c -$(example_programs): % : %.o libliquid.a +$(example_programs): % : %.o ${ARCHIVE_LIB} $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) # clean examples @@ -1605,6 +1637,7 @@ sandbox_programs = \ sandbox/symsync_eqlms_test \ sandbox/svd_test \ sandbox/thiran_allpass_iir_test \ + sandbox/throttle_test \ sandbox/vectorcf_test \ # sandbox/packetizer_persistent_ber_test @@ -1621,7 +1654,7 @@ SANDBOX_LDFLAGS = $(LDFLAGS) -lfftw3f # NOTE: linked libraries must come _after_ the target program $(sandbox_objects): %.o : %.c -$(sandbox_programs): % : %.o libliquid.a +$(sandbox_programs): % : %.o ${ARCHIVE_LIB} $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS) # clean sandbox @@ -1630,6 +1663,22 @@ clean-sandbox: $(RM) $(sandbox_programs) +.PHONY: tools +tools_programs = \ + tools/msequence_generator \ + +tools_objects = $(patsubst %,%.o,$(tools_programs)) +tools: $(tools_programs) + +$(tools_objects): %.o: %.c + +$(tools_programs): % : %.o ${ARCHIVE_LIB} + $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) + +clean-tools: + $(RM) tools/*.o + $(RM) $(tools_programs) + ## ## TARGET : world - build absolutely everything ## @@ -1666,10 +1715,8 @@ clean-modules: $(RM) src/vector/src/*.o src/vector/bench/*.o src/vector/tests/*.o $(RM) src/libliquid.o -clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox - $(RM) $(extra_clean) - $(RM) libliquid.a - $(RM) $(SHARED_LIB) +clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox clean-tools + $(RM) ${ARCHIVE_LIB} ${SHARED_LIB} $(extra_clean) ## ## TARGET : distclean - removes everything except the originally distributed files diff --git a/external/liquid-dsp/msvc/32/libliquid.a b/external/liquid-dsp/msvc/32/libliquid.a deleted file mode 100644 index 43b8aa6..0000000 Binary files a/external/liquid-dsp/msvc/32/libliquid.a and /dev/null differ diff --git a/external/liquid-dsp/msvc/32/libliquid.def b/external/liquid-dsp/msvc/32/libliquid.def index b270566..281365b 100644 --- a/external/liquid-dsp/msvc/32/libliquid.def +++ b/external/liquid-dsp/msvc/32/libliquid.def @@ -128,2031 +128,2238 @@ EXPORTS autocorr_cccf_print @127 autocorr_cccf_push @128 autocorr_cccf_reset @129 - autocorr_rrrf_create @130 - autocorr_rrrf_destroy @131 - autocorr_rrrf_execute @132 - autocorr_rrrf_execute_block @133 - autocorr_rrrf_get_energy @134 - autocorr_rrrf_print @135 - autocorr_rrrf_push @136 - autocorr_rrrf_reset @137 - awgn @138 - bessel_azpkf @139 - bilinear_zpkf @140 - blackmanharris @141 - blackmanharris7 @142 - bpacketgen_assemble_header @143 - bpacketgen_assemble_pnsequence @144 - bpacketgen_compute_packet_len @145 - bpacketgen_create @146 - bpacketgen_destroy @147 - bpacketgen_encode @148 - bpacketgen_get_packet_len @149 - bpacketgen_print @150 - bpacketgen_recreate @151 - bpacketsync_assemble_pnsequence @152 - bpacketsync_create @153 - bpacketsync_decode_header @154 - bpacketsync_decode_payload @155 - bpacketsync_destroy @156 - bpacketsync_execute @157 - bpacketsync_execute_bit @158 - bpacketsync_execute_byte @159 - bpacketsync_execute_rxheader @160 - bpacketsync_execute_rxpayload @161 - bpacketsync_execute_seekpn @162 - bpacketsync_execute_sym @163 - bpacketsync_print @164 - bpacketsync_reconfig @165 - bpacketsync_reset @166 - bpresync_cccf_correlate @167 - bpresync_cccf_correlatex @168 - bpresync_cccf_create @169 - bpresync_cccf_destroy @170 - bpresync_cccf_print @171 - bpresync_cccf_push @172 - bpresync_cccf_reset @173 - bsequence_accumulate @174 - bsequence_add @175 - bsequence_circshift @176 - bsequence_correlate @177 - bsequence_create @178 - bsequence_create_ccodes @179 - bsequence_destroy @180 - bsequence_get_length @181 - bsequence_index @182 - bsequence_init @183 - bsequence_init_msequence @184 - bsequence_mul @185 - bsequence_print @186 - bsequence_push @187 - bsequence_reset @188 - bsync_cccf_correlate @189 - bsync_cccf_create @190 - bsync_cccf_create_msequence @191 - bsync_cccf_destroy @192 - bsync_cccf_print @193 - bsync_crcf_correlate @194 - bsync_crcf_create @195 - bsync_crcf_create_msequence @196 - bsync_crcf_destroy @197 - bsync_crcf_print @198 - bsync_rrrf_correlate @199 - bsync_rrrf_create @200 - bsync_rrrf_create_msequence @201 - bsync_rrrf_destroy @202 - bsync_rrrf_print @203 - butter_azpkf @204 - cawgn @205 - cbuffercf_create @206 - cbuffercf_create_max @207 - cbuffercf_debug_print @208 - cbuffercf_destroy @209 - cbuffercf_is_full @210 - cbuffercf_linearize @211 - cbuffercf_max_read @212 - cbuffercf_max_size @213 - cbuffercf_pop @214 - cbuffercf_print @215 - cbuffercf_push @216 - cbuffercf_read @217 - cbuffercf_release @218 - cbuffercf_reset @219 - cbuffercf_size @220 - cbuffercf_space_available @221 - cbuffercf_write @222 - cbufferf_create @223 - cbufferf_create_max @224 - cbufferf_debug_print @225 - cbufferf_destroy @226 - cbufferf_is_full @227 - cbufferf_linearize @228 - cbufferf_max_read @229 - cbufferf_max_size @230 - cbufferf_pop @231 - cbufferf_print @232 - cbufferf_push @233 - cbufferf_read @234 - cbufferf_release @235 - cbufferf_reset @236 - cbufferf_size @237 - cbufferf_space_available @238 - cbufferf_write @239 - channel_cccf_add_awgn @240 - channel_cccf_add_carrier_offset @241 - channel_cccf_add_multipath @242 - channel_cccf_add_shadowing @243 - channel_cccf_create @244 - channel_cccf_destroy @245 - channel_cccf_execute @246 - channel_cccf_execute_block @247 - channel_cccf_print @248 - cheby1_azpkf @249 - cheby2_azpkf @250 - checksum_generate_key @251 - chromosome_copy @252 - chromosome_create @253 - chromosome_create_basic @254 - chromosome_create_clone @255 - chromosome_crossover @256 - chromosome_destroy @257 - chromosome_get_num_traits @258 - chromosome_init @259 - chromosome_init_random @260 - chromosome_initf @261 - chromosome_mutate @262 - chromosome_print @263 - chromosome_printf @264 - chromosome_reset @265 - chromosome_value @266 - chromosome_valuef @267 - compress_cf_mulaw @268 - compress_mulaw @269 - count_bit_errors @270 - count_bit_errors_array @271 - cpfskdem_create @272 - cpfskdem_demodulate @273 - cpfskdem_demodulate_coherent @274 - cpfskdem_demodulate_noncoherent @275 - cpfskdem_destroy @276 - cpfskdem_get_delay @277 - cpfskdem_init_coherent @278 - cpfskdem_init_noncoherent @279 - cpfskdem_print @280 - cpfskdem_reset @281 - cpfskmod_create @282 - cpfskmod_destroy @283 - cpfskmod_firdes @284 - cpfskmod_get_delay @285 - cpfskmod_modulate @286 - cpfskmod_print @287 - cpfskmod_reset @288 - crandnf @289 - crc16_generate_key @290 - crc24_generate_key @291 - crc32_generate_key @292 - crc8_generate_key @293 - crc_append_key @294 - crc_check_key @295 - crc_generate_key @296 - crc_get_length @297 - crc_scheme_str @298 DATA - crc_sizeof_key @299 - crc_validate_message @300 - cvsd_create @301 - cvsd_decode @302 - cvsd_decode8 @303 - cvsd_destroy @304 - cvsd_encode @305 - cvsd_encode8 @306 - cvsd_print @307 - detector_cccf_compute_dotprods @308 - detector_cccf_correlate @309 - detector_cccf_create @310 - detector_cccf_debug_print @311 - detector_cccf_destroy @312 - detector_cccf_estimate_offsets @313 - detector_cccf_print @314 - detector_cccf_reset @315 - detector_cccf_update_sumsq @316 - dotprod_cccf_create @317 - dotprod_cccf_destroy @318 - dotprod_cccf_execute @319 - dotprod_cccf_execute_mmx @320 - dotprod_cccf_execute_mmx4 @321 - dotprod_cccf_print @322 - dotprod_cccf_recreate @323 - dotprod_cccf_run @324 - dotprod_cccf_run4 @325 - dotprod_crcf_create @326 - dotprod_crcf_destroy @327 - dotprod_crcf_execute @328 - dotprod_crcf_execute_mmx @329 - dotprod_crcf_execute_mmx4 @330 - dotprod_crcf_print @331 - dotprod_crcf_recreate @332 - dotprod_crcf_run @333 - dotprod_crcf_run4 @334 - dotprod_rrrf_create @335 - dotprod_rrrf_destroy @336 - dotprod_rrrf_execute @337 - dotprod_rrrf_execute_mmx @338 - dotprod_rrrf_execute_mmx4 @339 - dotprod_rrrf_print @340 - dotprod_rrrf_recreate @341 - dotprod_rrrf_run @342 - dotprod_rrrf_run4 @343 - ellip_acdf @344 - ellip_asnf @345 - ellip_azpkf @346 - ellip_cdf @347 - ellip_snf @348 - ellipdegf @349 - ellipkf @350 - eqlms_cccf_create @351 - eqlms_cccf_create_lowpass @352 - eqlms_cccf_create_rnyquist @353 - eqlms_cccf_destroy @354 - eqlms_cccf_execute @355 - eqlms_cccf_execute_block @356 - eqlms_cccf_get_bw @357 - eqlms_cccf_get_weights @358 - eqlms_cccf_print @359 - eqlms_cccf_push @360 - eqlms_cccf_push_block @361 - eqlms_cccf_recreate @362 - eqlms_cccf_reset @363 - eqlms_cccf_set_bw @364 - eqlms_cccf_step @365 - eqlms_cccf_step_blind @366 - eqlms_cccf_train @367 - eqlms_cccf_update_sumsq @368 - eqlms_rrrf_create @369 - eqlms_rrrf_create_lowpass @370 - eqlms_rrrf_create_rnyquist @371 - eqlms_rrrf_destroy @372 - eqlms_rrrf_execute @373 - eqlms_rrrf_execute_block @374 - eqlms_rrrf_get_bw @375 - eqlms_rrrf_get_weights @376 - eqlms_rrrf_print @377 - eqlms_rrrf_push @378 - eqlms_rrrf_push_block @379 - eqlms_rrrf_recreate @380 - eqlms_rrrf_reset @381 - eqlms_rrrf_set_bw @382 - eqlms_rrrf_step @383 - eqlms_rrrf_step_blind @384 - eqlms_rrrf_train @385 - eqlms_rrrf_update_sumsq @386 - eqrls_cccf_create @387 - eqrls_cccf_destroy @388 - eqrls_cccf_execute @389 - eqrls_cccf_get_bw @390 - eqrls_cccf_get_weights @391 - eqrls_cccf_print @392 - eqrls_cccf_push @393 - eqrls_cccf_recreate @394 - eqrls_cccf_reset @395 - eqrls_cccf_set_bw @396 - eqrls_cccf_step @397 - eqrls_cccf_train @398 - eqrls_rrrf_create @399 - eqrls_rrrf_destroy @400 - eqrls_rrrf_execute @401 - eqrls_rrrf_get_bw @402 - eqrls_rrrf_get_weights @403 - eqrls_rrrf_print @404 - eqrls_rrrf_push @405 - eqrls_rrrf_recreate @406 - eqrls_rrrf_reset @407 - eqrls_rrrf_set_bw @408 - eqrls_rrrf_step @409 - eqrls_rrrf_train @410 - estimate_req_filter_As @411 - estimate_req_filter_df @412 - estimate_req_filter_len @413 - estimate_req_filter_len_Herrmann @414 - estimate_req_filter_len_Kaiser @415 - expand_cf_mulaw @416 - expand_mulaw @417 - fec_block_get_enc_msg_len @418 - fec_conv27_poly @419 DATA - fec_conv27p23_matrix @420 DATA - fec_conv27p34_matrix @421 DATA - fec_conv27p45_matrix @422 DATA - fec_conv27p56_matrix @423 DATA - fec_conv27p67_matrix @424 DATA - fec_conv27p78_matrix @425 DATA - fec_conv29_poly @426 DATA - fec_conv29p23_matrix @427 DATA - fec_conv29p34_matrix @428 DATA - fec_conv29p45_matrix @429 DATA - fec_conv29p56_matrix @430 DATA - fec_conv29p67_matrix @431 DATA - fec_conv29p78_matrix @432 DATA - fec_conv39_poly @433 DATA - fec_conv615_poly @434 DATA - fec_conv_create @435 - fec_conv_destroy @436 - fec_conv_get_enc_msg_len @437 - fec_conv_punctured_create @438 - fec_conv_punctured_decode @439 - fec_conv_punctured_destroy @440 - fec_conv_punctured_encode @441 - fec_create @442 - fec_decode @443 - fec_decode_soft @444 - fec_destroy @445 - fec_encode @446 - fec_get_enc_msg_length @447 - fec_get_rate @448 - fec_golay2412_create @449 - fec_golay2412_decode @450 - fec_golay2412_decode_symbol @451 - fec_golay2412_destroy @452 - fec_golay2412_encode @453 - fec_golay2412_encode_symbol @454 - fec_hamming128_create @455 - fec_hamming128_decode @456 - fec_hamming128_decode_soft @457 - fec_hamming128_decode_symbol @458 - fec_hamming128_destroy @459 - fec_hamming128_encode @460 - fec_hamming128_encode_symbol @461 - fec_hamming1511_decode_symbol @462 - fec_hamming1511_encode_symbol @463 - fec_hamming3126_decode_symbol @464 - fec_hamming3126_encode_symbol @465 - fec_hamming74_create @466 - fec_hamming74_decode @467 - fec_hamming74_decode_soft @468 - fec_hamming74_destroy @469 - fec_hamming74_encode @470 - fec_hamming84_create @471 - fec_hamming84_decode @472 - fec_hamming84_decode_soft @473 - fec_hamming84_destroy @474 - fec_hamming84_encode @475 - fec_pass_create @476 - fec_pass_decode @477 - fec_pass_destroy @478 - fec_pass_encode @479 - fec_pass_print @480 - fec_print @481 - fec_recreate @482 - fec_rep3_create @483 - fec_rep3_decode @484 - fec_rep3_decode_soft @485 - fec_rep3_destroy @486 - fec_rep3_encode @487 - fec_rep3_print @488 - fec_rep5_create @489 - fec_rep5_decode @490 - fec_rep5_decode_soft @491 - fec_rep5_destroy @492 - fec_rep5_encode @493 - fec_rep5_print @494 - fec_rs_create @495 - fec_rs_decode @496 - fec_rs_destroy @497 - fec_rs_encode @498 - fec_rs_get_enc_msg_len @499 - fec_scheme_is_convolutional @500 - fec_scheme_is_hamming @501 - fec_scheme_is_punctured @502 - fec_scheme_is_reedsolomon @503 - fec_scheme_is_repeat @504 - fec_scheme_str @505 DATA - fec_secded2216_compute_parity @506 - fec_secded2216_compute_syndrome @507 - fec_secded2216_create @508 - fec_secded2216_decode @509 - fec_secded2216_decode_symbol @510 - fec_secded2216_destroy @511 - fec_secded2216_encode @512 - fec_secded2216_encode_symbol @513 - fec_secded2216_estimate_ehat @514 - fec_secded3932_compute_parity @515 - fec_secded3932_compute_syndrome @516 - fec_secded3932_create @517 - fec_secded3932_decode @518 - fec_secded3932_decode_symbol @519 - fec_secded3932_destroy @520 - fec_secded3932_encode @521 - fec_secded3932_encode_symbol @522 - fec_secded3932_estimate_ehat @523 - fec_secded7264_compute_parity @524 - fec_secded7264_compute_syndrome @525 - fec_secded7264_create @526 - fec_secded7264_decode @527 - fec_secded7264_decode_symbol @528 - fec_secded7264_destroy @529 - fec_secded7264_encode @530 - fec_secded7264_encode_symbol @531 - fec_secded7264_estimate_ehat @532 - fec_sumproduct @533 - fec_sumproduct_step @534 - fecsoft_hamming128_decode @535 - fecsoft_hamming128_decode_n3 @536 - fecsoft_hamming128_n3 @537 DATA - fecsoft_hamming74_decode @538 - fecsoft_hamming84_decode @539 - fft_create_plan @540 - fft_create_plan_dft @541 - fft_create_plan_mixed_radix @542 - fft_create_plan_r2r_1d @543 - fft_create_plan_rader @544 - fft_create_plan_rader2 @545 - fft_create_plan_radix2 @546 - fft_destroy_plan @547 - fft_destroy_plan_dft @548 - fft_destroy_plan_mixed_radix @549 - fft_destroy_plan_r2r_1d @550 - fft_destroy_plan_rader @551 - fft_destroy_plan_rader2 @552 - fft_destroy_plan_radix2 @553 - fft_estimate_mixed_radix @554 - fft_execute @555 - fft_execute_REDFT00 @556 - fft_execute_REDFT01 @557 - fft_execute_REDFT10 @558 - fft_execute_REDFT11 @559 - fft_execute_RODFT00 @560 - fft_execute_RODFT01 @561 - fft_execute_RODFT10 @562 - fft_execute_RODFT11 @563 - fft_execute_dft @564 - fft_execute_dft_16 @565 - fft_execute_dft_2 @566 - fft_execute_dft_3 @567 - fft_execute_dft_4 @568 - fft_execute_dft_5 @569 - fft_execute_dft_6 @570 - fft_execute_dft_7 @571 - fft_execute_dft_8 @572 - fft_execute_mixed_radix @573 - fft_execute_rader @574 - fft_execute_rader2 @575 - fft_execute_radix2 @576 - fft_is_radix2 @577 - fft_print_plan @578 - fft_print_plan_r2r_1d @579 - fft_print_plan_recursive @580 - fft_r2r_1d_run @581 - fft_reverse_index @582 - fft_run @583 - fft_shift @584 - fftfilt_cccf_create @585 - fftfilt_cccf_destroy @586 - fftfilt_cccf_execute @587 - fftfilt_cccf_get_length @588 - fftfilt_cccf_print @589 - fftfilt_cccf_reset @590 - fftfilt_cccf_set_scale @591 - fftfilt_crcf_create @592 - fftfilt_crcf_destroy @593 - fftfilt_crcf_execute @594 - fftfilt_crcf_get_length @595 - fftfilt_crcf_print @596 - fftfilt_crcf_reset @597 - fftfilt_crcf_set_scale @598 - fftfilt_rrrf_create @599 - fftfilt_rrrf_destroy @600 - fftfilt_rrrf_execute @601 - fftfilt_rrrf_get_length @602 - fftfilt_rrrf_print @603 - fftfilt_rrrf_reset @604 - fftfilt_rrrf_set_scale @605 - fir_group_delay @606 - firdecim_cccf_create @607 - firdecim_cccf_create_kaiser @608 - firdecim_cccf_create_prototype @609 - firdecim_cccf_destroy @610 - firdecim_cccf_execute @611 - firdecim_cccf_execute_block @612 - firdecim_cccf_print @613 - firdecim_cccf_reset @614 - firdecim_crcf_create @615 - firdecim_crcf_create_kaiser @616 - firdecim_crcf_create_prototype @617 - firdecim_crcf_destroy @618 - firdecim_crcf_execute @619 - firdecim_crcf_execute_block @620 - firdecim_crcf_print @621 - firdecim_crcf_reset @622 - firdecim_rrrf_create @623 - firdecim_rrrf_create_kaiser @624 - firdecim_rrrf_create_prototype @625 - firdecim_rrrf_destroy @626 - firdecim_rrrf_execute @627 - firdecim_rrrf_execute_block @628 - firdecim_rrrf_print @629 - firdecim_rrrf_reset @630 - firdespm_compute_error @631 - firdespm_compute_interp @632 - firdespm_compute_taps @633 - firdespm_create @634 - firdespm_create_callback @635 - firdespm_destroy @636 - firdespm_execute @637 - firdespm_iext_search @638 - firdespm_init_grid @639 - firdespm_init_memory @640 - firdespm_is_search_complete @641 - firdespm_lowpass @642 - firdespm_print @643 - firdespm_run @644 - firfarrow_crcf_create @645 - firfarrow_crcf_destroy @646 - firfarrow_crcf_execute @647 - firfarrow_crcf_execute_block @648 - firfarrow_crcf_freqresponse @649 - firfarrow_crcf_genpoly @650 - firfarrow_crcf_get_coefficients @651 - firfarrow_crcf_get_length @652 - firfarrow_crcf_groupdelay @653 - firfarrow_crcf_print @654 - firfarrow_crcf_push @655 - firfarrow_crcf_reset @656 - firfarrow_crcf_set_delay @657 - firfarrow_rrrf_create @658 - firfarrow_rrrf_destroy @659 - firfarrow_rrrf_execute @660 - firfarrow_rrrf_execute_block @661 - firfarrow_rrrf_freqresponse @662 - firfarrow_rrrf_genpoly @663 - firfarrow_rrrf_get_coefficients @664 - firfarrow_rrrf_get_length @665 - firfarrow_rrrf_groupdelay @666 - firfarrow_rrrf_print @667 - firfarrow_rrrf_push @668 - firfarrow_rrrf_reset @669 - firfarrow_rrrf_set_delay @670 - firfilt_cccf_create @671 - firfilt_cccf_create_kaiser @672 - firfilt_cccf_create_rect @673 - firfilt_cccf_create_rnyquist @674 - firfilt_cccf_destroy @675 - firfilt_cccf_execute @676 - firfilt_cccf_execute_block @677 - firfilt_cccf_freqresponse @678 - firfilt_cccf_get_length @679 - firfilt_cccf_groupdelay @680 - firfilt_cccf_print @681 - firfilt_cccf_push @682 - firfilt_cccf_recreate @683 - firfilt_cccf_reset @684 - firfilt_cccf_set_scale @685 - firfilt_crcf_create @686 - firfilt_crcf_create_kaiser @687 - firfilt_crcf_create_rect @688 - firfilt_crcf_create_rnyquist @689 - firfilt_crcf_destroy @690 - firfilt_crcf_execute @691 - firfilt_crcf_execute_block @692 - firfilt_crcf_freqresponse @693 - firfilt_crcf_get_length @694 - firfilt_crcf_groupdelay @695 - firfilt_crcf_print @696 - firfilt_crcf_push @697 - firfilt_crcf_recreate @698 - firfilt_crcf_reset @699 - firfilt_crcf_set_scale @700 - firfilt_rrrf_create @701 - firfilt_rrrf_create_kaiser @702 - firfilt_rrrf_create_rect @703 - firfilt_rrrf_create_rnyquist @704 - firfilt_rrrf_destroy @705 - firfilt_rrrf_execute @706 - firfilt_rrrf_execute_block @707 - firfilt_rrrf_freqresponse @708 - firfilt_rrrf_get_length @709 - firfilt_rrrf_groupdelay @710 - firfilt_rrrf_print @711 - firfilt_rrrf_push @712 - firfilt_rrrf_recreate @713 - firfilt_rrrf_reset @714 - firfilt_rrrf_set_scale @715 - firhilbf_c2r_execute @716 - firhilbf_create @717 - firhilbf_decim_execute @718 - firhilbf_decim_execute_block @719 - firhilbf_destroy @720 - firhilbf_interp_execute @721 - firhilbf_interp_execute_block @722 - firhilbf_print @723 - firhilbf_r2c_execute @724 - firhilbf_reset @725 - firinterp_cccf_create @726 - firinterp_cccf_create_kaiser @727 - firinterp_cccf_create_prototype @728 - firinterp_cccf_destroy @729 - firinterp_cccf_execute @730 - firinterp_cccf_execute_block @731 - firinterp_cccf_print @732 - firinterp_cccf_reset @733 - firinterp_crcf_create @734 - firinterp_crcf_create_kaiser @735 - firinterp_crcf_create_prototype @736 - firinterp_crcf_destroy @737 - firinterp_crcf_execute @738 - firinterp_crcf_execute_block @739 - firinterp_crcf_print @740 - firinterp_crcf_reset @741 - firinterp_rrrf_create @742 - firinterp_rrrf_create_kaiser @743 - firinterp_rrrf_create_prototype @744 - firinterp_rrrf_destroy @745 - firinterp_rrrf_execute @746 - firinterp_rrrf_execute_block @747 - firinterp_rrrf_print @748 - firinterp_rrrf_reset @749 - firpfb_cccf_create @750 - firpfb_cccf_create_drnyquist @751 - firpfb_cccf_create_kaiser @752 - firpfb_cccf_create_rnyquist @753 - firpfb_cccf_destroy @754 - firpfb_cccf_execute @755 - firpfb_cccf_execute_block @756 - firpfb_cccf_print @757 - firpfb_cccf_push @758 - firpfb_cccf_recreate @759 - firpfb_cccf_reset @760 - firpfb_cccf_set_scale @761 - firpfb_crcf_create @762 - firpfb_crcf_create_drnyquist @763 - firpfb_crcf_create_kaiser @764 - firpfb_crcf_create_rnyquist @765 - firpfb_crcf_destroy @766 - firpfb_crcf_execute @767 - firpfb_crcf_execute_block @768 - firpfb_crcf_print @769 - firpfb_crcf_push @770 - firpfb_crcf_recreate @771 - firpfb_crcf_reset @772 - firpfb_crcf_set_scale @773 - firpfb_rrrf_create @774 - firpfb_rrrf_create_drnyquist @775 - firpfb_rrrf_create_kaiser @776 - firpfb_rrrf_create_rnyquist @777 - firpfb_rrrf_destroy @778 - firpfb_rrrf_execute @779 - firpfb_rrrf_execute_block @780 - firpfb_rrrf_print @781 - firpfb_rrrf_push @782 - firpfb_rrrf_recreate @783 - firpfb_rrrf_reset @784 - firpfb_rrrf_set_scale @785 - firpfbch2_crcf_create @786 - firpfbch2_crcf_create_kaiser @787 - firpfbch2_crcf_destroy @788 - firpfbch2_crcf_execute @789 - firpfbch2_crcf_execute_analyzer @790 - firpfbch2_crcf_execute_synthesizer @791 - firpfbch2_crcf_print @792 - firpfbch2_crcf_reset @793 - firpfbch_cccf_analyzer_execute @794 - firpfbch_cccf_analyzer_push @795 - firpfbch_cccf_analyzer_run @796 - firpfbch_cccf_create @797 - firpfbch_cccf_create_kaiser @798 - firpfbch_cccf_create_rnyquist @799 - firpfbch_cccf_destroy @800 - firpfbch_cccf_print @801 - firpfbch_cccf_reset @802 - firpfbch_cccf_synthesizer_execute @803 - firpfbch_crcf_analyzer_execute @804 - firpfbch_crcf_analyzer_push @805 - firpfbch_crcf_analyzer_run @806 - firpfbch_crcf_create @807 - firpfbch_crcf_create_kaiser @808 - firpfbch_crcf_create_rnyquist @809 - firpfbch_crcf_destroy @810 - firpfbch_crcf_print @811 - firpfbch_crcf_reset @812 - firpfbch_crcf_synthesizer_execute @813 - flattop @814 - flexframegen_assemble @815 - flexframegen_create @816 - flexframegen_destroy @817 - flexframegen_generate_header @818 - flexframegen_generate_payload @819 - flexframegen_generate_preamble @820 - flexframegen_generate_symbol @821 - flexframegen_generate_tail @822 - flexframegen_getframelen @823 - flexframegen_getprops @824 - flexframegen_is_assembled @825 - flexframegen_print @826 - flexframegen_reconfigure @827 - flexframegen_reset @828 - flexframegen_setprops @829 - flexframegen_write_samples @830 - flexframegenprops_init_default @831 - flexframesync_create @832 - flexframesync_debug_disable @833 - flexframesync_debug_enable @834 - flexframesync_debug_print @835 - flexframesync_decode_header @836 - flexframesync_destroy @837 - flexframesync_execute @838 - flexframesync_execute_rxheader @839 - flexframesync_execute_rxpayload @840 - flexframesync_execute_rxpreamble @841 - flexframesync_execute_seekpn @842 - flexframesync_get_framedatastats @843 - flexframesync_is_frame_open @844 - flexframesync_print @845 - flexframesync_reset @846 - flexframesync_reset_framedatastats @847 - flexframesync_step @848 - fpoly_bessel @849 - fpoly_bessel_roots @850 - fpoly_bessel_roots_orchard @851 - fpoly_bessel_roots_orchard_recursion @852 - framedatastats_print @853 - framedatastats_reset @854 - framegen64_create @855 - framegen64_destroy @856 - framegen64_execute @857 - framegen64_print @858 - framesync64_create @859 - framesync64_debug_disable @860 - framesync64_debug_enable @861 - framesync64_debug_print @862 - framesync64_destroy @863 - framesync64_execute @864 - framesync64_execute_rxpayload @865 - framesync64_execute_rxpreamble @866 - framesync64_execute_seekpn @867 - framesync64_print @868 - framesync64_reset @869 - framesync64_step @870 - framesyncstats_default @871 DATA - framesyncstats_init_default @872 - framesyncstats_print @873 - freqdem_create @874 - freqdem_demodulate @875 - freqdem_demodulate_block @876 - freqdem_destroy @877 - freqdem_print @878 - freqdem_reset @879 - freqmod_create @880 - freqmod_destroy @881 - freqmod_modulate @882 - freqmod_modulate_block @883 - freqmod_print @884 - freqmod_reset @885 - fskdem_create @886 - fskdem_demodulate @887 - fskdem_destroy @888 - fskdem_get_frequency_error @889 - fskdem_print @890 - fskdem_reset @891 - fskmod_create @892 - fskmod_destroy @893 - fskmod_modulate @894 - fskmod_print @895 - fskmod_reset @896 - gasearch_create @897 - gasearch_create_advanced @898 - gasearch_crossover @899 - gasearch_destroy @900 - gasearch_evaluate @901 - gasearch_evolve @902 - gasearch_getopt @903 - gasearch_mutate @904 - gasearch_print @905 - gasearch_rank @906 - gasearch_run @907 - gasearch_set_mutation_rate @908 - gasearch_set_population_size @909 - gmskdem_create @910 - gmskdem_debug_print @911 - gmskdem_demodulate @912 - gmskdem_destroy @913 - gmskdem_print @914 - gmskdem_reset @915 - gmskdem_set_eq_bw @916 - gmskframegen_assemble @917 - gmskframegen_create @918 - gmskframegen_destroy @919 - gmskframegen_encode_header @920 - gmskframegen_getframelen @921 - gmskframegen_is_assembled @922 - gmskframegen_print @923 - gmskframegen_reset @924 - gmskframegen_write_header @925 - gmskframegen_write_payload @926 - gmskframegen_write_preamble @927 - gmskframegen_write_samples @928 - gmskframegen_write_tail @929 - gmskframesync_create @930 - gmskframesync_debug_disable @931 - gmskframesync_debug_enable @932 - gmskframesync_debug_print @933 - gmskframesync_decode_header @934 - gmskframesync_destroy @935 - gmskframesync_execute @936 - gmskframesync_execute_detectframe @937 - gmskframesync_execute_rxheader @938 - gmskframesync_execute_rxpayload @939 - gmskframesync_execute_rxpreamble @940 - gmskframesync_execute_sample @941 - gmskframesync_is_frame_open @942 - gmskframesync_print @943 - gmskframesync_pushpn @944 - gmskframesync_reset @945 - gmskframesync_syncpn @946 - gmskframesync_update_fi @947 - gmskframesync_update_symsync @948 - gmskmod_create @949 - gmskmod_destroy @950 - gmskmod_modulate @951 - gmskmod_print @952 - gmskmod_reset @953 - golay2412_Gt @954 DATA - golay2412_H @955 DATA - golay2412_P @956 DATA - golay2412_matrix_mul @957 - golay2412_parity_search @958 - gradsearch_create @959 - gradsearch_destroy @960 - gradsearch_execute @961 - gradsearch_gradient @962 - gradsearch_linesearch @963 - gradsearch_norm @964 - gradsearch_print @965 - gradsearch_step @966 - gray_decode @967 - gray_encode @968 - hamming @969 - hamming128_enc_gentab @970 DATA - hamming74_dec_gentab @971 DATA - hamming74_enc_gentab @972 DATA - hamming84_dec_gentab @973 DATA - hamming84_enc_gentab @974 DATA - hann @975 - icrandnf @976 - iir_group_delay @977 - iirdecim_cccf_create @978 - iirdecim_cccf_create_default @979 - iirdecim_cccf_create_prototype @980 - iirdecim_cccf_destroy @981 - iirdecim_cccf_execute @982 - iirdecim_cccf_execute_block @983 - iirdecim_cccf_groupdelay @984 - iirdecim_cccf_print @985 - iirdecim_cccf_reset @986 - iirdecim_crcf_create @987 - iirdecim_crcf_create_default @988 - iirdecim_crcf_create_prototype @989 - iirdecim_crcf_destroy @990 - iirdecim_crcf_execute @991 - iirdecim_crcf_execute_block @992 - iirdecim_crcf_groupdelay @993 - iirdecim_crcf_print @994 - iirdecim_crcf_reset @995 - iirdecim_rrrf_create @996 - iirdecim_rrrf_create_default @997 - iirdecim_rrrf_create_prototype @998 - iirdecim_rrrf_destroy @999 - iirdecim_rrrf_execute @1000 - iirdecim_rrrf_execute_block @1001 - iirdecim_rrrf_groupdelay @1002 - iirdecim_rrrf_print @1003 - iirdecim_rrrf_reset @1004 - iirdes_dzpk2sosf @1005 - iirdes_dzpk2tff @1006 - iirdes_dzpk_lp2bp @1007 - iirdes_dzpk_lp2hp @1008 - iirdes_freqprewarp @1009 - iirdes_isstable @1010 - iirdes_pll_active_PI @1011 - iirdes_pll_active_lag @1012 - iirfilt_cccf_create @1013 - iirfilt_cccf_create_dc_blocker @1014 - iirfilt_cccf_create_differentiator @1015 - iirfilt_cccf_create_integrator @1016 - iirfilt_cccf_create_lowpass @1017 - iirfilt_cccf_create_pll @1018 - iirfilt_cccf_create_prototype @1019 - iirfilt_cccf_create_sos @1020 - iirfilt_cccf_destroy @1021 - iirfilt_cccf_execute @1022 - iirfilt_cccf_execute_block @1023 - iirfilt_cccf_execute_norm @1024 - iirfilt_cccf_execute_sos @1025 - iirfilt_cccf_freqresponse @1026 - iirfilt_cccf_get_length @1027 - iirfilt_cccf_groupdelay @1028 - iirfilt_cccf_init @1029 - iirfilt_cccf_print @1030 - iirfilt_cccf_reset @1031 - iirfilt_crcf_create @1032 - iirfilt_crcf_create_dc_blocker @1033 - iirfilt_crcf_create_differentiator @1034 - iirfilt_crcf_create_integrator @1035 - iirfilt_crcf_create_lowpass @1036 - iirfilt_crcf_create_pll @1037 - iirfilt_crcf_create_prototype @1038 - iirfilt_crcf_create_sos @1039 - iirfilt_crcf_destroy @1040 - iirfilt_crcf_execute @1041 - iirfilt_crcf_execute_block @1042 - iirfilt_crcf_execute_norm @1043 - iirfilt_crcf_execute_sos @1044 - iirfilt_crcf_freqresponse @1045 - iirfilt_crcf_get_length @1046 - iirfilt_crcf_groupdelay @1047 - iirfilt_crcf_init @1048 - iirfilt_crcf_print @1049 - iirfilt_crcf_reset @1050 - iirfilt_rrrf_create @1051 - iirfilt_rrrf_create_dc_blocker @1052 - iirfilt_rrrf_create_differentiator @1053 - iirfilt_rrrf_create_integrator @1054 - iirfilt_rrrf_create_lowpass @1055 - iirfilt_rrrf_create_pll @1056 - iirfilt_rrrf_create_prototype @1057 - iirfilt_rrrf_create_sos @1058 - iirfilt_rrrf_destroy @1059 - iirfilt_rrrf_execute @1060 - iirfilt_rrrf_execute_block @1061 - iirfilt_rrrf_execute_norm @1062 - iirfilt_rrrf_execute_sos @1063 - iirfilt_rrrf_freqresponse @1064 - iirfilt_rrrf_get_length @1065 - iirfilt_rrrf_groupdelay @1066 - iirfilt_rrrf_init @1067 - iirfilt_rrrf_print @1068 - iirfilt_rrrf_reset @1069 - iirfiltsos_cccf_create @1070 - iirfiltsos_cccf_destroy @1071 - iirfiltsos_cccf_execute @1072 - iirfiltsos_cccf_execute_df1 @1073 - iirfiltsos_cccf_execute_df2 @1074 - iirfiltsos_cccf_groupdelay @1075 - iirfiltsos_cccf_print @1076 - iirfiltsos_cccf_reset @1077 - iirfiltsos_cccf_set_coefficients @1078 - iirfiltsos_crcf_create @1079 - iirfiltsos_crcf_destroy @1080 - iirfiltsos_crcf_execute @1081 - iirfiltsos_crcf_execute_df1 @1082 - iirfiltsos_crcf_execute_df2 @1083 - iirfiltsos_crcf_groupdelay @1084 - iirfiltsos_crcf_print @1085 - iirfiltsos_crcf_reset @1086 - iirfiltsos_crcf_set_coefficients @1087 - iirfiltsos_rrrf_create @1088 - iirfiltsos_rrrf_destroy @1089 - iirfiltsos_rrrf_execute @1090 - iirfiltsos_rrrf_execute_df1 @1091 - iirfiltsos_rrrf_execute_df2 @1092 - iirfiltsos_rrrf_groupdelay @1093 - iirfiltsos_rrrf_print @1094 - iirfiltsos_rrrf_reset @1095 - iirfiltsos_rrrf_set_coefficients @1096 - iirinterp_cccf_create @1097 - iirinterp_cccf_create_default @1098 - iirinterp_cccf_create_prototype @1099 - iirinterp_cccf_destroy @1100 - iirinterp_cccf_execute @1101 - iirinterp_cccf_execute_block @1102 - iirinterp_cccf_groupdelay @1103 - iirinterp_cccf_print @1104 - iirinterp_cccf_reset @1105 - iirinterp_crcf_create @1106 - iirinterp_crcf_create_default @1107 - iirinterp_crcf_create_prototype @1108 - iirinterp_crcf_destroy @1109 - iirinterp_crcf_execute @1110 - iirinterp_crcf_execute_block @1111 - iirinterp_crcf_groupdelay @1112 - iirinterp_crcf_print @1113 - iirinterp_crcf_reset @1114 - iirinterp_rrrf_create @1115 - iirinterp_rrrf_create_default @1116 - iirinterp_rrrf_create_prototype @1117 - iirinterp_rrrf_destroy @1118 - iirinterp_rrrf_execute @1119 - iirinterp_rrrf_execute_block @1120 - iirinterp_rrrf_groupdelay @1121 - iirinterp_rrrf_print @1122 - iirinterp_rrrf_reset @1123 - interleaver_create @1124 - interleaver_decode @1125 - interleaver_decode_soft @1126 - interleaver_destroy @1127 - interleaver_encode @1128 - interleaver_encode_soft @1129 - interleaver_permute @1130 - interleaver_permute_mask @1131 - interleaver_permute_mask_soft @1132 - interleaver_permute_soft @1133 - interleaver_print @1134 - interleaver_set_depth @1135 - kaiser @1136 - kaiser_beta_As @1137 - landenf @1138 - liquid_MarcumQ1f @1139 - liquid_MarcumQf @1140 - liquid_Qf @1141 - liquid_apsk128 @1142 DATA - liquid_apsk16 @1143 DATA - liquid_apsk256 @1144 DATA - liquid_apsk32 @1145 DATA - liquid_apsk4 @1146 DATA - liquid_apsk64 @1147 DATA - liquid_apsk8 @1148 DATA - liquid_asechf @1149 - liquid_bdotprod @1150 - liquid_besseli0f @1151 - liquid_besselif @1152 - liquid_besselj0f @1153 - liquid_besseljf @1154 - liquid_c_leading_zeros @1155 DATA - liquid_c_ones @1156 DATA - liquid_c_ones_mod2 @1157 DATA - liquid_cacosf @1158 - liquid_cargf_approx @1159 - liquid_casinf @1160 - liquid_catanf @1161 - liquid_cexpf @1162 - liquid_clogf @1163 - liquid_cosf @1164 - liquid_count_leading_zeros @1165 - liquid_count_ones @1166 - liquid_count_ones_mod2 @1167 - liquid_cplxpair @1168 - liquid_cplxpair_cleanup @1169 - liquid_csqrtf @1170 - liquid_expf @1171 - liquid_factor @1172 - liquid_factorialf @1173 - liquid_fft_estimate_method @1174 - liquid_filter_autocorr @1175 - liquid_filter_crosscorr @1176 - liquid_filter_energy @1177 - liquid_filter_isi @1178 - liquid_firdes_arkaiser @1179 - liquid_firdes_doppler @1180 - liquid_firdes_farcsech @1181 - liquid_firdes_farcsech_freqresponse @1182 - liquid_firdes_fexp @1183 - liquid_firdes_fexp_freqresponse @1184 - liquid_firdes_fnyquist @1185 - liquid_firdes_fsech @1186 - liquid_firdes_fsech_freqresponse @1187 - liquid_firdes_gmskrx @1188 - liquid_firdes_gmsktx @1189 - liquid_firdes_hM3 @1190 - liquid_firdes_kaiser @1191 - liquid_firdes_prototype @1192 - liquid_firdes_rcos @1193 - liquid_firdes_rfarcsech @1194 - liquid_firdes_rfexp @1195 - liquid_firdes_rfsech @1196 - liquid_firdes_rkaiser @1197 - liquid_firdes_rkaiser_bisection @1198 - liquid_firdes_rkaiser_internal_isi @1199 - liquid_firdes_rkaiser_quadratic @1200 - liquid_firdes_rrcos @1201 - liquid_gammaf @1202 - liquid_getopt_str2crc @1203 - liquid_getopt_str2fec @1204 - liquid_getopt_str2firfilt @1205 - liquid_getopt_str2mod @1206 - liquid_getopt_str2window @1207 - liquid_iirdes @1208 - liquid_invgauss @1209 - liquid_is_prime @1210 - liquid_kbd @1211 - liquid_kbd_window @1212 - liquid_lbcircshift @1213 - liquid_lbshift @1214 - liquid_lcircshift @1215 - liquid_levinson @1216 - liquid_libversion @1217 - liquid_libversion_number @1218 - liquid_lnbesselif @1219 - liquid_lngammaf @1220 - liquid_lnlowergammaf @1221 - liquid_lnuppergammaf @1222 - liquid_logf @1223 - liquid_lowergammaf @1224 - liquid_lpc @1225 - liquid_lshift @1226 - liquid_modem_is_apsk @1227 - liquid_modem_is_ask @1228 - liquid_modem_is_dpsk @1229 - liquid_modem_is_psk @1230 - liquid_modem_is_qam @1231 - liquid_modpow @1232 - liquid_msb_index @1233 - liquid_multimodal @1234 - liquid_nchoosek @1235 - liquid_nextpow2 @1236 - liquid_pack_array @1237 - liquid_pack_bytes @1238 - liquid_pack_soft_bits @1239 - liquid_primitive_root @1240 - liquid_primitive_root_prime @1241 - liquid_print_bitstring @1242 - liquid_print_crc_schemes @1243 - liquid_print_fec_schemes @1244 - liquid_print_modulation_schemes @1245 - liquid_print_windows @1246 - liquid_rbcircshift @1247 - liquid_rbshift @1248 - liquid_rcircshift @1249 - liquid_rcostaper_windowf @1250 - liquid_repack_bytes @1251 - liquid_reverse_byte @1252 - liquid_reverse_byte_gentab @1253 DATA - liquid_reverse_uint16 @1254 - liquid_reverse_uint24 @1255 - liquid_reverse_uint32 @1256 - liquid_rosenbrock @1257 - liquid_rshift @1258 - liquid_sincosf @1259 - liquid_sinf @1260 - liquid_spiral @1261 - liquid_sumsqcf @1262 - liquid_sumsqf @1263 - liquid_tanf @1264 - liquid_totient @1265 - liquid_unique_factor @1266 - liquid_unpack_array @1267 - liquid_unpack_bytes @1268 - liquid_unpack_soft_bits @1269 - liquid_unwrap_phase @1270 - liquid_unwrap_phase2 @1271 - liquid_uppergammaf @1272 - liquid_vectorcf_abs @1273 - liquid_vectorcf_add @1274 - liquid_vectorcf_addscalar @1275 - liquid_vectorcf_carg @1276 - liquid_vectorcf_cexpj @1277 - liquid_vectorcf_mul @1278 - liquid_vectorcf_mulscalar @1279 - liquid_vectorcf_norm @1280 - liquid_vectorcf_normalize @1281 - liquid_vectorf_abs @1282 - liquid_vectorf_add @1283 - liquid_vectorf_addscalar @1284 - liquid_vectorf_carg @1285 - liquid_vectorf_cexpj @1286 - liquid_vectorf_mul @1287 - liquid_vectorf_mulscalar @1288 - liquid_vectorf_norm @1289 - liquid_vectorf_normalize @1290 - liquid_version @1291 DATA - liquid_window_str @1292 DATA - matrix_add @1293 - matrix_aug @1294 - matrix_cgsolve @1295 - matrix_chol @1296 - matrix_det @1297 - matrix_det2x2 @1298 - matrix_div @1299 - matrix_eye @1300 - matrix_gjelim @1301 - matrix_gramschmidt @1302 - matrix_hermitian @1303 - matrix_hermitian_mul @1304 - matrix_inv @1305 - matrix_linsolve @1306 - matrix_ludecomp_crout @1307 - matrix_ludecomp_doolittle @1308 - matrix_mul @1309 - matrix_mul_hermitian @1310 - matrix_mul_transpose @1311 - matrix_ones @1312 - matrix_pdiv @1313 - matrix_pivot @1314 - matrix_pmul @1315 - matrix_print @1316 - matrix_proj @1317 - matrix_qrdecomp_gramschmidt @1318 - matrix_sub @1319 - matrix_swaprows @1320 - matrix_trans @1321 - matrix_transpose_mul @1322 - matrix_zeros @1323 - matrixc_add @1324 - matrixc_aug @1325 - matrixc_cgsolve @1326 - matrixc_chol @1327 - matrixc_det @1328 - matrixc_det2x2 @1329 - matrixc_div @1330 - matrixc_eye @1331 - matrixc_gjelim @1332 - matrixc_gramschmidt @1333 - matrixc_hermitian @1334 - matrixc_hermitian_mul @1335 - matrixc_inv @1336 - matrixc_linsolve @1337 - matrixc_ludecomp_crout @1338 - matrixc_ludecomp_doolittle @1339 - matrixc_mul @1340 - matrixc_mul_hermitian @1341 - matrixc_mul_transpose @1342 - matrixc_ones @1343 - matrixc_pdiv @1344 - matrixc_pivot @1345 - matrixc_pmul @1346 - matrixc_print @1347 - matrixc_proj @1348 - matrixc_qrdecomp_gramschmidt @1349 - matrixc_sub @1350 - matrixc_swaprows @1351 - matrixc_trans @1352 - matrixc_transpose_mul @1353 - matrixc_zeros @1354 - matrixcf_add @1355 - matrixcf_aug @1356 - matrixcf_cgsolve @1357 - matrixcf_chol @1358 - matrixcf_det @1359 - matrixcf_det2x2 @1360 - matrixcf_div @1361 - matrixcf_eye @1362 - matrixcf_gjelim @1363 - matrixcf_gramschmidt @1364 - matrixcf_hermitian @1365 - matrixcf_hermitian_mul @1366 - matrixcf_inv @1367 - matrixcf_linsolve @1368 - matrixcf_ludecomp_crout @1369 - matrixcf_ludecomp_doolittle @1370 - matrixcf_mul @1371 - matrixcf_mul_hermitian @1372 - matrixcf_mul_transpose @1373 - matrixcf_ones @1374 - matrixcf_pdiv @1375 - matrixcf_pivot @1376 - matrixcf_pmul @1377 - matrixcf_print @1378 - matrixcf_proj @1379 - matrixcf_qrdecomp_gramschmidt @1380 - matrixcf_sub @1381 - matrixcf_swaprows @1382 - matrixcf_trans @1383 - matrixcf_transpose_mul @1384 - matrixcf_zeros @1385 - matrixf_add @1386 - matrixf_aug @1387 - matrixf_cgsolve @1388 - matrixf_chol @1389 - matrixf_det @1390 - matrixf_det2x2 @1391 - matrixf_div @1392 - matrixf_eye @1393 - matrixf_gjelim @1394 - matrixf_gramschmidt @1395 - matrixf_hermitian @1396 - matrixf_hermitian_mul @1397 - matrixf_inv @1398 - matrixf_linsolve @1399 - matrixf_ludecomp_crout @1400 - matrixf_ludecomp_doolittle @1401 - matrixf_mul @1402 - matrixf_mul_hermitian @1403 - matrixf_mul_transpose @1404 - matrixf_ones @1405 - matrixf_pdiv @1406 - matrixf_pivot @1407 - matrixf_pmul @1408 - matrixf_print @1409 - matrixf_proj @1410 - matrixf_qrdecomp_gramschmidt @1411 - matrixf_sub @1412 - matrixf_swaprows @1413 - matrixf_trans @1414 - matrixf_transpose_mul @1415 - matrixf_zeros @1416 - modem_arb128opt @1417 DATA - modem_arb16opt @1418 DATA - modem_arb256opt @1419 DATA - modem_arb32opt @1420 DATA - modem_arb64opt @1421 DATA - modem_arb_V29 @1422 DATA - modem_arb_balance_iq @1423 - modem_arb_init @1424 - modem_arb_init_file @1425 - modem_arb_scale @1426 - modem_arb_sqam128 @1427 DATA - modem_arb_sqam32 @1428 DATA - modem_arb_vt64 @1429 DATA - modem_create @1430 - modem_create_V29 @1431 - modem_create_apsk @1432 - modem_create_arb @1433 - modem_create_arb128opt @1434 - modem_create_arb16opt @1435 - modem_create_arb256opt @1436 - modem_create_arb32opt @1437 - modem_create_arb64opt @1438 - modem_create_arb64vt @1439 - modem_create_arbitrary @1440 - modem_create_ask @1441 - modem_create_bpsk @1442 - modem_create_dpsk @1443 - modem_create_ook @1444 - modem_create_psk @1445 - modem_create_qam @1446 - modem_create_qpsk @1447 - modem_create_sqam128 @1448 - modem_create_sqam32 @1449 - modem_demodsoft_gentab @1450 - modem_demodulate @1451 - modem_demodulate_apsk @1452 - modem_demodulate_arb @1453 - modem_demodulate_ask @1454 - modem_demodulate_bpsk @1455 - modem_demodulate_dpsk @1456 - modem_demodulate_linear_array @1457 - modem_demodulate_linear_array_ref @1458 - modem_demodulate_ook @1459 - modem_demodulate_psk @1460 - modem_demodulate_qam @1461 - modem_demodulate_qpsk @1462 - modem_demodulate_soft @1463 - modem_demodulate_soft_arb @1464 - modem_demodulate_soft_bpsk @1465 - modem_demodulate_soft_qpsk @1466 - modem_demodulate_soft_table @1467 - modem_demodulate_sqam128 @1468 - modem_demodulate_sqam32 @1469 - modem_destroy @1470 - modem_gen_rand_sym @1471 - modem_get_bps @1472 - modem_get_demodulator_evm @1473 - modem_get_demodulator_phase_error @1474 - modem_get_demodulator_sample @1475 - modem_get_scheme @1476 - modem_init @1477 - modem_init_map @1478 - modem_modulate @1479 - modem_modulate_apsk @1480 - modem_modulate_arb @1481 - modem_modulate_ask @1482 - modem_modulate_bpsk @1483 - modem_modulate_dpsk @1484 - modem_modulate_map @1485 - modem_modulate_ook @1486 - modem_modulate_psk @1487 - modem_modulate_qam @1488 - modem_modulate_qpsk @1489 - modem_modulate_sqam128 @1490 - modem_modulate_sqam32 @1491 - modem_print @1492 - modem_recreate @1493 - modem_reset @1494 - modulation_types @1495 DATA - msequence_advance @1496 - msequence_create @1497 - msequence_create_default @1498 - msequence_create_genpoly @1499 - msequence_default @1500 DATA - msequence_destroy @1501 - msequence_generate_symbol @1502 - msequence_get_length @1503 - msequence_get_state @1504 - msequence_print @1505 - msequence_reset @1506 - msequence_set_state @1507 - msourcecf_add_modem @1508 - msourcecf_add_noise @1509 - msourcecf_add_source @1510 - msourcecf_add_tone @1511 - msourcecf_create @1512 - msourcecf_destroy @1513 - msourcecf_disable @1514 - msourcecf_enable @1515 - msourcecf_get_source @1516 - msourcecf_print @1517 - msourcecf_remove @1518 - msourcecf_reset @1519 - msourcecf_set_frequency @1520 - msourcecf_set_gain @1521 - msourcecf_write_samples @1522 - msresamp2_cccf_create @1523 - msresamp2_cccf_decim_execute @1524 - msresamp2_cccf_destroy @1525 - msresamp2_cccf_execute @1526 - msresamp2_cccf_get_delay @1527 - msresamp2_cccf_interp_execute @1528 - msresamp2_cccf_print @1529 - msresamp2_cccf_reset @1530 - msresamp2_crcf_create @1531 - msresamp2_crcf_decim_execute @1532 - msresamp2_crcf_destroy @1533 - msresamp2_crcf_execute @1534 - msresamp2_crcf_get_delay @1535 - msresamp2_crcf_interp_execute @1536 - msresamp2_crcf_print @1537 - msresamp2_crcf_reset @1538 - msresamp2_rrrf_create @1539 - msresamp2_rrrf_decim_execute @1540 - msresamp2_rrrf_destroy @1541 - msresamp2_rrrf_execute @1542 - msresamp2_rrrf_get_delay @1543 - msresamp2_rrrf_interp_execute @1544 - msresamp2_rrrf_print @1545 - msresamp2_rrrf_reset @1546 - msresamp_cccf_create @1547 - msresamp_cccf_decim_execute @1548 - msresamp_cccf_destroy @1549 - msresamp_cccf_execute @1550 - msresamp_cccf_get_delay @1551 - msresamp_cccf_interp_execute @1552 - msresamp_cccf_print @1553 - msresamp_cccf_reset @1554 - msresamp_crcf_create @1555 - msresamp_crcf_decim_execute @1556 - msresamp_crcf_destroy @1557 - msresamp_crcf_execute @1558 - msresamp_crcf_get_delay @1559 - msresamp_crcf_interp_execute @1560 - msresamp_crcf_print @1561 - msresamp_crcf_reset @1562 - msresamp_rrrf_create @1563 - msresamp_rrrf_decim_execute @1564 - msresamp_rrrf_destroy @1565 - msresamp_rrrf_execute @1566 - msresamp_rrrf_get_delay @1567 - msresamp_rrrf_interp_execute @1568 - msresamp_rrrf_print @1569 - msresamp_rrrf_reset @1570 - nco_crcf_adjust_frequency @1571 - nco_crcf_adjust_phase @1572 - nco_crcf_cexpf @1573 - nco_crcf_compute_sincos_nco @1574 - nco_crcf_compute_sincos_vco @1575 - nco_crcf_constrain_frequency @1576 - nco_crcf_constrain_phase @1577 - nco_crcf_cos @1578 - nco_crcf_create @1579 - nco_crcf_destroy @1580 - nco_crcf_get_frequency @1581 - nco_crcf_get_phase @1582 - nco_crcf_mix_block_down @1583 - nco_crcf_mix_block_up @1584 - nco_crcf_mix_down @1585 - nco_crcf_mix_up @1586 - nco_crcf_pll_reset @1587 - nco_crcf_pll_set_bandwidth @1588 - nco_crcf_pll_step @1589 - nco_crcf_reset @1590 - nco_crcf_set_frequency @1591 - nco_crcf_set_phase @1592 - nco_crcf_sin @1593 - nco_crcf_sincos @1594 - nco_crcf_step @1595 - ofdmflexframegen_assemble @1596 - ofdmflexframegen_create @1597 - ofdmflexframegen_destroy @1598 - ofdmflexframegen_encode_header @1599 - ofdmflexframegen_gen_S0a @1600 - ofdmflexframegen_gen_S0b @1601 - ofdmflexframegen_gen_S1 @1602 - ofdmflexframegen_gen_header @1603 - ofdmflexframegen_gen_payload @1604 - ofdmflexframegen_gen_symbol @1605 - ofdmflexframegen_gen_tail @1606 - ofdmflexframegen_gen_zeros @1607 - ofdmflexframegen_getframelen @1608 - ofdmflexframegen_getprops @1609 - ofdmflexframegen_is_assembled @1610 - ofdmflexframegen_modulate_header @1611 - ofdmflexframegen_print @1612 - ofdmflexframegen_reconfigure @1613 - ofdmflexframegen_reset @1614 - ofdmflexframegen_setprops @1615 - ofdmflexframegen_write @1616 - ofdmflexframegenprops_init_default @1617 - ofdmflexframesync_create @1618 - ofdmflexframesync_debug_disable @1619 - ofdmflexframesync_debug_enable @1620 - ofdmflexframesync_debug_print @1621 - ofdmflexframesync_decode_header @1622 - ofdmflexframesync_destroy @1623 - ofdmflexframesync_execute @1624 - ofdmflexframesync_get_cfo @1625 - ofdmflexframesync_get_rssi @1626 - ofdmflexframesync_internal_callback @1627 - ofdmflexframesync_is_frame_open @1628 - ofdmflexframesync_print @1629 - ofdmflexframesync_reset @1630 - ofdmflexframesync_rxheader @1631 - ofdmflexframesync_rxpayload @1632 - ofdmframe_init_S0 @1633 - ofdmframe_init_S1 @1634 - ofdmframe_init_default_sctype @1635 - ofdmframe_init_sctype_range @1636 - ofdmframe_print_sctype @1637 - ofdmframe_validate_sctype @1638 - ofdmframegen_create @1639 - ofdmframegen_destroy @1640 - ofdmframegen_gensymbol @1641 - ofdmframegen_print @1642 - ofdmframegen_reset @1643 - ofdmframegen_write_S0a @1644 - ofdmframegen_write_S0b @1645 - ofdmframegen_write_S1 @1646 - ofdmframegen_writesymbol @1647 - ofdmframegen_writetail @1648 - ofdmframesync_S0_metrics @1649 - ofdmframesync_create @1650 - ofdmframesync_debug_disable @1651 - ofdmframesync_debug_enable @1652 - ofdmframesync_debug_print @1653 - ofdmframesync_destroy @1654 - ofdmframesync_estimate_eqgain @1655 - ofdmframesync_estimate_eqgain_poly @1656 - ofdmframesync_estimate_gain_S0 @1657 - ofdmframesync_estimate_gain_S1 @1658 - ofdmframesync_execute @1659 - ofdmframesync_execute_S0a @1660 - ofdmframesync_execute_S0b @1661 - ofdmframesync_execute_S1 @1662 - ofdmframesync_execute_rxsymbols @1663 - ofdmframesync_execute_seekplcp @1664 - ofdmframesync_get_cfo @1665 - ofdmframesync_get_rssi @1666 - ofdmframesync_is_frame_open @1667 - ofdmframesync_print @1668 - ofdmframesync_reset @1669 - ofdmframesync_rxsymbol @1670 - optim_sort @1671 - optim_threshold_switch @1672 - packetizer_compute_dec_msg_len @1673 - packetizer_compute_enc_msg_len @1674 - packetizer_create @1675 - packetizer_decode @1676 - packetizer_decode_soft @1677 - packetizer_destroy @1678 - packetizer_encode @1679 - packetizer_get_crc @1680 - packetizer_get_dec_msg_len @1681 - packetizer_get_enc_msg_len @1682 - packetizer_get_fec0 @1683 - packetizer_get_fec1 @1684 - packetizer_print @1685 - packetizer_realloc_buffers @1686 - packetizer_recreate @1687 - packetizer_set_scheme @1688 - poly_expandbinomial @1689 - poly_expandbinomial_pm @1690 - poly_expandroots @1691 - poly_expandroots2 @1692 - poly_findroots @1693 - poly_findroots_bairstow @1694 - poly_findroots_bairstow_recursion @1695 - poly_findroots_durandkerner @1696 - poly_fit @1697 - poly_fit_lagrange @1698 - poly_fit_lagrange_barycentric @1699 - poly_interp_lagrange @1700 - poly_mul @1701 - poly_val @1702 - poly_val_lagrange_barycentric @1703 - polyc_expandbinomial @1704 - polyc_expandbinomial_pm @1705 - polyc_expandroots @1706 - polyc_expandroots2 @1707 - polyc_findroots @1708 - polyc_findroots_bairstow @1709 - polyc_findroots_bairstow_recursion @1710 - polyc_findroots_durandkerner @1711 - polyc_fit @1712 - polyc_fit_lagrange @1713 - polyc_fit_lagrange_barycentric @1714 - polyc_interp_lagrange @1715 - polyc_mul @1716 - polyc_val @1717 - polyc_val_lagrange_barycentric @1718 - polycf_expandbinomial @1719 - polycf_expandbinomial_pm @1720 - polycf_expandroots @1721 - polycf_expandroots2 @1722 - polycf_findroots @1723 - polycf_findroots_bairstow @1724 - polycf_findroots_bairstow_recursion @1725 - polycf_findroots_durandkerner @1726 - polycf_fit @1727 - polycf_fit_lagrange @1728 - polycf_fit_lagrange_barycentric @1729 - polycf_interp_lagrange @1730 - polycf_mul @1731 - polycf_val @1732 - polycf_val_lagrange_barycentric @1733 - polyf_expandbinomial @1734 - polyf_expandbinomial_pm @1735 - polyf_expandroots @1736 - polyf_expandroots2 @1737 - polyf_findroots @1738 - polyf_findroots_bairstow @1739 - polyf_findroots_bairstow_recursion @1740 - polyf_findroots_durandkerner @1741 - polyf_fit @1742 - polyf_fit_lagrange @1743 - polyf_fit_lagrange_barycentric @1744 - polyf_interp_lagrange @1745 - polyf_mul @1746 - polyf_val @1747 - polyf_val_lagrange_barycentric @1748 - presync_cccf_correlate @1749 - presync_cccf_correlatex @1750 - presync_cccf_create @1751 - presync_cccf_destroy @1752 - presync_cccf_print @1753 - presync_cccf_push @1754 - presync_cccf_reset @1755 - qdetector_cccf_create @1756 - qdetector_cccf_create_gmsk @1757 - qdetector_cccf_create_linear @1758 - qdetector_cccf_destroy @1759 - qdetector_cccf_execute @1760 - qdetector_cccf_execute_align @1761 - qdetector_cccf_execute_seek @1762 - qdetector_cccf_get_buf_len @1763 - qdetector_cccf_get_dphi @1764 - qdetector_cccf_get_gamma @1765 - qdetector_cccf_get_phi @1766 - qdetector_cccf_get_seq_len @1767 - qdetector_cccf_get_sequence @1768 - qdetector_cccf_get_tau @1769 - qdetector_cccf_print @1770 - qdetector_cccf_reset @1771 - qdetector_cccf_set_range @1772 - qdetector_cccf_set_threshold @1773 - qnsearch_compute_Hessian @1774 - qnsearch_compute_gradient @1775 - qnsearch_create @1776 - qnsearch_destroy @1777 - qnsearch_normalize_gradient @1778 - qnsearch_print @1779 - qnsearch_reset @1780 - qnsearch_run @1781 - qnsearch_step @1782 - qpacketmodem_configure @1783 - qpacketmodem_create @1784 - qpacketmodem_decode @1785 - qpacketmodem_decode_bits @1786 - qpacketmodem_decode_soft @1787 - qpacketmodem_decode_syms @1788 - qpacketmodem_destroy @1789 - qpacketmodem_encode @1790 - qpacketmodem_encode_syms @1791 - qpacketmodem_get_crc @1792 - qpacketmodem_get_fec0 @1793 - qpacketmodem_get_fec1 @1794 - qpacketmodem_get_frame_len @1795 - qpacketmodem_get_modscheme @1796 - qpacketmodem_get_payload_len @1797 - qpacketmodem_print @1798 - qpacketmodem_reset @1799 - qpilotgen_create @1800 - qpilotgen_destroy @1801 - qpilotgen_execute @1802 - qpilotgen_get_frame_len @1803 - qpilotgen_print @1804 - qpilotgen_recreate @1805 - qpilotgen_reset @1806 - qpilotsync_create @1807 - qpilotsync_destroy @1808 - qpilotsync_execute @1809 - qpilotsync_get_dphi @1810 - qpilotsync_get_frame_len @1811 - qpilotsync_get_gain @1812 - qpilotsync_get_phi @1813 - qpilotsync_print @1814 - qpilotsync_recreate @1815 - qpilotsync_reset @1816 - qsourcecf_create_modem @1817 - qsourcecf_create_noise @1818 - qsourcecf_create_tone @1819 - qsourcecf_destroy @1820 - qsourcecf_disable @1821 - qsourcecf_enable @1822 - qsourcecf_gen_sample @1823 - qsourcecf_print @1824 - qsourcecf_reset @1825 - qsourcecf_set_frequency @1826 - qsourcecf_set_gain @1827 - quantize_adc @1828 - quantize_dac @1829 - quantizercf_create @1830 - quantizercf_destroy @1831 - quantizercf_execute_adc @1832 - quantizercf_execute_dac @1833 - quantizercf_print @1834 - quantizerf_create @1835 - quantizerf_destroy @1836 - quantizerf_execute_adc @1837 - quantizerf_execute_dac @1838 - quantizerf_print @1839 - randexpf @1840 - randexpf_cdf @1841 - randexpf_pdf @1842 - randf @1843 - randf_cdf @1844 - randf_pdf @1845 - randgammaf @1846 - randgammaf_cdf @1847 - randgammaf_delta @1848 - randgammaf_pdf @1849 - randnakmf @1850 - randnakmf_cdf @1851 - randnakmf_pdf @1852 - randnf @1853 - randnf_cdf @1854 - randnf_pdf @1855 - randricekf @1856 - randricekf_cdf @1857 - randricekf_pdf @1858 - randweibf @1859 - randweibf_cdf @1860 - randweibf_pdf @1861 - resamp2_cccf_analyzer_execute @1862 - resamp2_cccf_create @1863 - resamp2_cccf_decim_execute @1864 - resamp2_cccf_destroy @1865 - resamp2_cccf_filter_execute @1866 - resamp2_cccf_get_delay @1867 - resamp2_cccf_interp_execute @1868 - resamp2_cccf_print @1869 - resamp2_cccf_recreate @1870 - resamp2_cccf_reset @1871 - resamp2_cccf_synthesizer_execute @1872 - resamp2_crcf_analyzer_execute @1873 - resamp2_crcf_create @1874 - resamp2_crcf_decim_execute @1875 - resamp2_crcf_destroy @1876 - resamp2_crcf_filter_execute @1877 - resamp2_crcf_get_delay @1878 - resamp2_crcf_interp_execute @1879 - resamp2_crcf_print @1880 - resamp2_crcf_recreate @1881 - resamp2_crcf_reset @1882 - resamp2_crcf_synthesizer_execute @1883 - resamp2_rrrf_analyzer_execute @1884 - resamp2_rrrf_create @1885 - resamp2_rrrf_decim_execute @1886 - resamp2_rrrf_destroy @1887 - resamp2_rrrf_filter_execute @1888 - resamp2_rrrf_get_delay @1889 - resamp2_rrrf_interp_execute @1890 - resamp2_rrrf_print @1891 - resamp2_rrrf_recreate @1892 - resamp2_rrrf_reset @1893 - resamp2_rrrf_synthesizer_execute @1894 - resamp_cccf_adjust_rate @1895 - resamp_cccf_adjust_timing_phase @1896 - resamp_cccf_create @1897 - resamp_cccf_create_default @1898 - resamp_cccf_destroy @1899 - resamp_cccf_execute @1900 - resamp_cccf_execute_block @1901 - resamp_cccf_get_delay @1902 - resamp_cccf_print @1903 - resamp_cccf_reset @1904 - resamp_cccf_set_rate @1905 - resamp_cccf_set_timing_phase @1906 - resamp_cccf_update_timing_state @1907 - resamp_crcf_adjust_rate @1908 - resamp_crcf_adjust_timing_phase @1909 - resamp_crcf_create @1910 - resamp_crcf_create_default @1911 - resamp_crcf_destroy @1912 - resamp_crcf_execute @1913 - resamp_crcf_execute_block @1914 - resamp_crcf_get_delay @1915 - resamp_crcf_print @1916 - resamp_crcf_reset @1917 - resamp_crcf_set_rate @1918 - resamp_crcf_set_timing_phase @1919 - resamp_crcf_update_timing_state @1920 - resamp_rrrf_adjust_rate @1921 - resamp_rrrf_adjust_timing_phase @1922 - resamp_rrrf_create @1923 - resamp_rrrf_create_default @1924 - resamp_rrrf_destroy @1925 - resamp_rrrf_execute @1926 - resamp_rrrf_execute_block @1927 - resamp_rrrf_get_delay @1928 - resamp_rrrf_print @1929 - resamp_rrrf_reset @1930 - resamp_rrrf_set_rate @1931 - resamp_rrrf_set_timing_phase @1932 - resamp_rrrf_update_timing_state @1933 - rkaiser_approximate_rho @1934 - scramble_data @1935 - secded2216_P @1936 DATA - secded2216_syndrome_w1 @1937 DATA - secded3932_P @1938 DATA - secded3932_syndrome_w1 @1939 DATA - secded7264_P @1940 DATA - secded7264_syndrome_w1 @1941 DATA - sincf @1942 - smatrix_indexsearch @1943 - smatrixb_clear @1944 - smatrixb_create @1945 - smatrixb_create_array @1946 - smatrixb_delete @1947 - smatrixb_destroy @1948 - smatrixb_eye @1949 - smatrixb_get @1950 - smatrixb_insert @1951 - smatrixb_isset @1952 - smatrixb_mul @1953 - smatrixb_mulf @1954 - smatrixb_print @1955 - smatrixb_print_expanded @1956 - smatrixb_reset @1957 - smatrixb_reset_max_mlist @1958 - smatrixb_reset_max_nlist @1959 - smatrixb_set @1960 - smatrixb_size @1961 - smatrixb_vmul @1962 - smatrixb_vmulf @1963 - smatrixf_clear @1964 - smatrixf_create @1965 - smatrixf_create_array @1966 - smatrixf_delete @1967 - smatrixf_destroy @1968 - smatrixf_eye @1969 - smatrixf_get @1970 - smatrixf_insert @1971 - smatrixf_isset @1972 - smatrixf_mul @1973 - smatrixf_print @1974 - smatrixf_print_expanded @1975 - smatrixf_reset @1976 - smatrixf_reset_max_mlist @1977 - smatrixf_reset_max_nlist @1978 - smatrixf_set @1979 - smatrixf_size @1980 - smatrixf_vmul @1981 - smatrixi_clear @1982 - smatrixi_create @1983 - smatrixi_create_array @1984 - smatrixi_delete @1985 - smatrixi_destroy @1986 - smatrixi_eye @1987 - smatrixi_get @1988 - smatrixi_insert @1989 - smatrixi_isset @1990 - smatrixi_mul @1991 - smatrixi_print @1992 - smatrixi_print_expanded @1993 - smatrixi_reset @1994 - smatrixi_reset_max_mlist @1995 - smatrixi_reset_max_nlist @1996 - smatrixi_set @1997 - smatrixi_size @1998 - smatrixi_vmul @1999 - spgramcf_clear @2000 - spgramcf_create @2001 - spgramcf_create_default @2002 - spgramcf_destroy @2003 - spgramcf_estimate_psd @2004 - spgramcf_export_gnuplot @2005 - spgramcf_get_delay @2006 - spgramcf_get_nfft @2007 - spgramcf_get_num_samples @2008 - spgramcf_get_num_samples_total @2009 - spgramcf_get_num_transforms @2010 - spgramcf_get_num_transforms_total @2011 - spgramcf_get_psd @2012 - spgramcf_get_window_len @2013 - spgramcf_print @2014 - spgramcf_push @2015 - spgramcf_reset @2016 - spgramcf_set_alpha @2017 - spgramcf_step @2018 - spgramcf_write @2019 - spgramf_clear @2020 - spgramf_create @2021 - spgramf_create_default @2022 - spgramf_destroy @2023 - spgramf_estimate_psd @2024 - spgramf_export_gnuplot @2025 - spgramf_get_delay @2026 - spgramf_get_nfft @2027 - spgramf_get_num_samples @2028 - spgramf_get_num_samples_total @2029 - spgramf_get_num_transforms @2030 - spgramf_get_num_transforms_total @2031 - spgramf_get_psd @2032 - spgramf_get_window_len @2033 - spgramf_print @2034 - spgramf_push @2035 - spgramf_reset @2036 - spgramf_set_alpha @2037 - spgramf_step @2038 - spgramf_write @2039 - spwaterfallcf_clear @2040 - spwaterfallcf_consolidate_buffer @2041 - spwaterfallcf_create @2042 - spwaterfallcf_create_default @2043 - spwaterfallcf_destroy @2044 - spwaterfallcf_export @2045 - spwaterfallcf_export_bin @2046 - spwaterfallcf_export_gnu @2047 - spwaterfallcf_print @2048 - spwaterfallcf_push @2049 - spwaterfallcf_reset @2050 - spwaterfallcf_step @2051 - spwaterfallcf_write @2052 - spwaterfallf_clear @2053 - spwaterfallf_consolidate_buffer @2054 - spwaterfallf_create @2055 - spwaterfallf_create_default @2056 - spwaterfallf_destroy @2057 - spwaterfallf_export @2058 - spwaterfallf_export_bin @2059 - spwaterfallf_export_gnu @2060 - spwaterfallf_print @2061 - spwaterfallf_push @2062 - spwaterfallf_reset @2063 - spwaterfallf_step @2064 - spwaterfallf_write @2065 - sumproduct_phi @2066 - symstreamcf_create @2067 - symstreamcf_create_linear @2068 - symstreamcf_destroy @2069 - symstreamcf_fill_buffer @2070 - symstreamcf_print @2071 - symstreamcf_reset @2072 - symstreamcf_write_samples @2073 - symsync_crcf_advance_internal_loop @2074 - symsync_crcf_create @2075 - symsync_crcf_create_kaiser @2076 - symsync_crcf_create_rnyquist @2077 - symsync_crcf_destroy @2078 - symsync_crcf_execute @2079 - symsync_crcf_get_tau @2080 - symsync_crcf_lock @2081 - symsync_crcf_output_debug_file @2082 - symsync_crcf_print @2083 - symsync_crcf_reset @2084 - symsync_crcf_set_lf_bw @2085 - symsync_crcf_set_output_rate @2086 - symsync_crcf_step @2087 - symsync_crcf_unlock @2088 - symsync_rrrf_advance_internal_loop @2089 - symsync_rrrf_create @2090 - symsync_rrrf_create_kaiser @2091 - symsync_rrrf_create_rnyquist @2092 - symsync_rrrf_destroy @2093 - symsync_rrrf_execute @2094 - symsync_rrrf_get_tau @2095 - symsync_rrrf_lock @2096 - symsync_rrrf_output_debug_file @2097 - symsync_rrrf_print @2098 - symsync_rrrf_reset @2099 - symsync_rrrf_set_lf_bw @2100 - symsync_rrrf_set_output_rate @2101 - symsync_rrrf_step @2102 - symsync_rrrf_unlock @2103 - symtrack_cccf_adjust_phase @2104 - symtrack_cccf_create @2105 - symtrack_cccf_create_default @2106 - symtrack_cccf_destroy @2107 - symtrack_cccf_execute @2108 - symtrack_cccf_execute_block @2109 - symtrack_cccf_print @2110 - symtrack_cccf_reset @2111 - symtrack_cccf_set_bandwidth @2112 - symtrack_cccf_set_modscheme @2113 - triangular @2114 - tvmpch_cccf_create @2115 - tvmpch_cccf_destroy @2116 - tvmpch_cccf_execute @2117 - tvmpch_cccf_execute_block @2118 - tvmpch_cccf_print @2119 - tvmpch_cccf_push @2120 - tvmpch_cccf_reset @2121 - unscramble_data @2122 - unscramble_data_soft @2123 - wdelaycf_create @2124 - wdelaycf_destroy @2125 - wdelaycf_print @2126 - wdelaycf_push @2127 - wdelaycf_read @2128 - wdelaycf_recreate @2129 - wdelaycf_reset @2130 - wdelayf_create @2131 - wdelayf_destroy @2132 - wdelayf_print @2133 - wdelayf_push @2134 - wdelayf_read @2135 - wdelayf_recreate @2136 - wdelayf_reset @2137 - windowcf_create @2138 - windowcf_debug_print @2139 - windowcf_destroy @2140 - windowcf_index @2141 - windowcf_print @2142 - windowcf_push @2143 - windowcf_read @2144 - windowcf_recreate @2145 - windowcf_reset @2146 - windowcf_write @2147 - windowf_create @2148 - windowf_debug_print @2149 - windowf_destroy @2150 - windowf_index @2151 - windowf_print @2152 - windowf_push @2153 - windowf_read @2154 - windowf_recreate @2155 - windowf_reset @2156 - windowf_write @2157 + autocorr_cccf_write @130 + autocorr_rrrf_create @131 + autocorr_rrrf_destroy @132 + autocorr_rrrf_execute @133 + autocorr_rrrf_execute_block @134 + autocorr_rrrf_get_energy @135 + autocorr_rrrf_print @136 + autocorr_rrrf_push @137 + autocorr_rrrf_reset @138 + autocorr_rrrf_write @139 + awgn @140 + bessel_azpkf @141 + bilinear_zpkf @142 + blackmanharris @143 + blackmanharris7 @144 + bpacketgen_assemble_header @145 + bpacketgen_assemble_pnsequence @146 + bpacketgen_compute_packet_len @147 + bpacketgen_create @148 + bpacketgen_destroy @149 + bpacketgen_encode @150 + bpacketgen_get_packet_len @151 + bpacketgen_print @152 + bpacketgen_recreate @153 + bpacketsync_assemble_pnsequence @154 + bpacketsync_create @155 + bpacketsync_decode_header @156 + bpacketsync_decode_payload @157 + bpacketsync_destroy @158 + bpacketsync_execute @159 + bpacketsync_execute_bit @160 + bpacketsync_execute_byte @161 + bpacketsync_execute_rxheader @162 + bpacketsync_execute_rxpayload @163 + bpacketsync_execute_seekpn @164 + bpacketsync_execute_sym @165 + bpacketsync_print @166 + bpacketsync_reconfig @167 + bpacketsync_reset @168 + bpresync_cccf_correlatex @169 + bpresync_cccf_create @170 + bpresync_cccf_destroy @171 + bpresync_cccf_execute @172 + bpresync_cccf_print @173 + bpresync_cccf_push @174 + bpresync_cccf_reset @175 + bsequence_accumulate @176 + bsequence_add @177 + bsequence_circshift @178 + bsequence_correlate @179 + bsequence_create @180 + bsequence_create_ccodes @181 + bsequence_destroy @182 + bsequence_get_length @183 + bsequence_index @184 + bsequence_init @185 + bsequence_init_msequence @186 + bsequence_mul @187 + bsequence_print @188 + bsequence_push @189 + bsequence_reset @190 + bsync_cccf_correlate @191 + bsync_cccf_create @192 + bsync_cccf_create_msequence @193 + bsync_cccf_destroy @194 + bsync_cccf_print @195 + bsync_crcf_correlate @196 + bsync_crcf_create @197 + bsync_crcf_create_msequence @198 + bsync_crcf_destroy @199 + bsync_crcf_print @200 + bsync_rrrf_correlate @201 + bsync_rrrf_create @202 + bsync_rrrf_create_msequence @203 + bsync_rrrf_destroy @204 + bsync_rrrf_print @205 + butter_azpkf @206 + cawgn @207 + cbuffercf_create @208 + cbuffercf_create_max @209 + cbuffercf_debug_print @210 + cbuffercf_destroy @211 + cbuffercf_is_full @212 + cbuffercf_linearize @213 + cbuffercf_max_read @214 + cbuffercf_max_size @215 + cbuffercf_pop @216 + cbuffercf_print @217 + cbuffercf_push @218 + cbuffercf_read @219 + cbuffercf_release @220 + cbuffercf_reset @221 + cbuffercf_size @222 + cbuffercf_space_available @223 + cbuffercf_write @224 + cbufferf_create @225 + cbufferf_create_max @226 + cbufferf_debug_print @227 + cbufferf_destroy @228 + cbufferf_is_full @229 + cbufferf_linearize @230 + cbufferf_max_read @231 + cbufferf_max_size @232 + cbufferf_pop @233 + cbufferf_print @234 + cbufferf_push @235 + cbufferf_read @236 + cbufferf_release @237 + cbufferf_reset @238 + cbufferf_size @239 + cbufferf_space_available @240 + cbufferf_write @241 + channel_cccf_add_awgn @242 + channel_cccf_add_carrier_offset @243 + channel_cccf_add_multipath @244 + channel_cccf_add_shadowing @245 + channel_cccf_create @246 + channel_cccf_destroy @247 + channel_cccf_execute @248 + channel_cccf_execute_block @249 + channel_cccf_print @250 + cheby1_azpkf @251 + cheby2_azpkf @252 + checksum_generate_key @253 + chromosome_copy @254 + chromosome_create @255 + chromosome_create_basic @256 + chromosome_create_clone @257 + chromosome_crossover @258 + chromosome_destroy @259 + chromosome_get_num_traits @260 + chromosome_init @261 + chromosome_init_random @262 + chromosome_initf @263 + chromosome_mutate @264 + chromosome_print @265 + chromosome_printf @266 + chromosome_reset @267 + chromosome_value @268 + chromosome_valuef @269 + compress_cf_mulaw @270 + compress_mulaw @271 + count_bit_errors @272 + count_bit_errors_array @273 + cpfskdem_create @274 + cpfskdem_demodulate @275 + cpfskdem_demodulate_coherent @276 + cpfskdem_demodulate_noncoherent @277 + cpfskdem_destroy @278 + cpfskdem_get_delay @279 + cpfskdem_init_coherent @280 + cpfskdem_init_noncoherent @281 + cpfskdem_print @282 + cpfskdem_reset @283 + cpfskmod_create @284 + cpfskmod_destroy @285 + cpfskmod_firdes @286 + cpfskmod_get_delay @287 + cpfskmod_modulate @288 + cpfskmod_print @289 + cpfskmod_reset @290 + crandnf @291 + crc16_generate_key @292 + crc24_generate_key @293 + crc32_generate_key @294 + crc8_generate_key @295 + crc_append_key @296 + crc_check_key @297 + crc_generate_key @298 + crc_get_length @299 + crc_scheme_str @300 DATA + crc_sizeof_key @301 + crc_validate_message @302 + cvsd_create @303 + cvsd_decode @304 + cvsd_decode8 @305 + cvsd_destroy @306 + cvsd_encode @307 + cvsd_encode8 @308 + cvsd_print @309 + detector_cccf_compute_dotprods @310 + detector_cccf_correlate @311 + detector_cccf_create @312 + detector_cccf_debug_print @313 + detector_cccf_destroy @314 + detector_cccf_estimate_offsets @315 + detector_cccf_print @316 + detector_cccf_reset @317 + detector_cccf_update_sumsq @318 + dotprod_cccf_create @319 + dotprod_cccf_destroy @320 + dotprod_cccf_execute @321 + dotprod_cccf_execute_mmx @322 + dotprod_cccf_execute_mmx4 @323 + dotprod_cccf_print @324 + dotprod_cccf_recreate @325 + dotprod_cccf_run @326 + dotprod_cccf_run4 @327 + dotprod_crcf_create @328 + dotprod_crcf_destroy @329 + dotprod_crcf_execute @330 + dotprod_crcf_execute_mmx @331 + dotprod_crcf_execute_mmx4 @332 + dotprod_crcf_print @333 + dotprod_crcf_recreate @334 + dotprod_crcf_run @335 + dotprod_crcf_run4 @336 + dotprod_rrrf_create @337 + dotprod_rrrf_destroy @338 + dotprod_rrrf_execute @339 + dotprod_rrrf_execute_mmx @340 + dotprod_rrrf_execute_mmx4 @341 + dotprod_rrrf_print @342 + dotprod_rrrf_recreate @343 + dotprod_rrrf_run @344 + dotprod_rrrf_run4 @345 + dsssframegen_assemble @346 + dsssframegen_create @347 + dsssframegen_destroy @348 + dsssframegen_generate_header @349 + dsssframegen_generate_payload @350 + dsssframegen_generate_preamble @351 + dsssframegen_generate_symbol @352 + dsssframegen_generate_tail @353 + dsssframegen_getframelen @354 + dsssframegen_getprops @355 + dsssframegen_is_assembled @356 + dsssframegen_reconfigure @357 + dsssframegen_reconfigure_header @358 + dsssframegen_reset @359 + dsssframegen_set_header_len @360 + dsssframegen_set_header_props @361 + dsssframegen_setprops @362 + dsssframegen_write_samples @363 + dsssframesync_configure_payload @364 + dsssframesync_create @365 + dsssframesync_debug_disable @366 + dsssframesync_debug_enable @367 + dsssframesync_debug_print @368 + dsssframesync_decode_header @369 + dsssframesync_decode_header_soft @370 + dsssframesync_decode_payload @371 + dsssframesync_decode_payload_soft @372 + dsssframesync_destroy @373 + dsssframesync_execute @374 + dsssframesync_execute_rxheader @375 + dsssframesync_execute_rxpayload @376 + dsssframesync_execute_rxpreamble @377 + dsssframesync_execute_seekpn @378 + dsssframesync_get_framedatastats @379 + dsssframesync_is_frame_open @380 + dsssframesync_print @381 + dsssframesync_reset @382 + dsssframesync_reset_framedatastats @383 + dsssframesync_set_header_len @384 + dsssframesync_set_header_props @385 + dsssframesync_step @386 + ellip_acdf @387 + ellip_asnf @388 + ellip_azpkf @389 + ellip_cdf @390 + ellip_snf @391 + ellipdegf @392 + ellipkf @393 + eqlms_cccf_create @394 + eqlms_cccf_create_lowpass @395 + eqlms_cccf_create_rnyquist @396 + eqlms_cccf_destroy @397 + eqlms_cccf_execute @398 + eqlms_cccf_execute_block @399 + eqlms_cccf_get_bw @400 + eqlms_cccf_get_weights @401 + eqlms_cccf_print @402 + eqlms_cccf_push @403 + eqlms_cccf_push_block @404 + eqlms_cccf_recreate @405 + eqlms_cccf_reset @406 + eqlms_cccf_set_bw @407 + eqlms_cccf_step @408 + eqlms_cccf_step_blind @409 + eqlms_cccf_train @410 + eqlms_cccf_update_sumsq @411 + eqlms_rrrf_create @412 + eqlms_rrrf_create_lowpass @413 + eqlms_rrrf_create_rnyquist @414 + eqlms_rrrf_destroy @415 + eqlms_rrrf_execute @416 + eqlms_rrrf_execute_block @417 + eqlms_rrrf_get_bw @418 + eqlms_rrrf_get_weights @419 + eqlms_rrrf_print @420 + eqlms_rrrf_push @421 + eqlms_rrrf_push_block @422 + eqlms_rrrf_recreate @423 + eqlms_rrrf_reset @424 + eqlms_rrrf_set_bw @425 + eqlms_rrrf_step @426 + eqlms_rrrf_step_blind @427 + eqlms_rrrf_train @428 + eqlms_rrrf_update_sumsq @429 + eqrls_cccf_create @430 + eqrls_cccf_destroy @431 + eqrls_cccf_execute @432 + eqrls_cccf_get_bw @433 + eqrls_cccf_get_weights @434 + eqrls_cccf_print @435 + eqrls_cccf_push @436 + eqrls_cccf_recreate @437 + eqrls_cccf_reset @438 + eqrls_cccf_set_bw @439 + eqrls_cccf_step @440 + eqrls_cccf_train @441 + eqrls_rrrf_create @442 + eqrls_rrrf_destroy @443 + eqrls_rrrf_execute @444 + eqrls_rrrf_get_bw @445 + eqrls_rrrf_get_weights @446 + eqrls_rrrf_print @447 + eqrls_rrrf_push @448 + eqrls_rrrf_recreate @449 + eqrls_rrrf_reset @450 + eqrls_rrrf_set_bw @451 + eqrls_rrrf_step @452 + eqrls_rrrf_train @453 + estimate_req_filter_As @454 + estimate_req_filter_df @455 + estimate_req_filter_len @456 + estimate_req_filter_len_Herrmann @457 + estimate_req_filter_len_Kaiser @458 + expand_cf_mulaw @459 + expand_mulaw @460 + fec_block_get_enc_msg_len @461 + fec_conv27_poly @462 DATA + fec_conv27p23_matrix @463 DATA + fec_conv27p34_matrix @464 DATA + fec_conv27p45_matrix @465 DATA + fec_conv27p56_matrix @466 DATA + fec_conv27p67_matrix @467 DATA + fec_conv27p78_matrix @468 DATA + fec_conv29_poly @469 DATA + fec_conv29p23_matrix @470 DATA + fec_conv29p34_matrix @471 DATA + fec_conv29p45_matrix @472 DATA + fec_conv29p56_matrix @473 DATA + fec_conv29p67_matrix @474 DATA + fec_conv29p78_matrix @475 DATA + fec_conv39_poly @476 DATA + fec_conv615_poly @477 DATA + fec_conv_create @478 + fec_conv_destroy @479 + fec_conv_get_enc_msg_len @480 + fec_conv_punctured_create @481 + fec_conv_punctured_decode @482 + fec_conv_punctured_destroy @483 + fec_conv_punctured_encode @484 + fec_create @485 + fec_decode @486 + fec_decode_soft @487 + fec_destroy @488 + fec_encode @489 + fec_get_enc_msg_length @490 + fec_get_rate @491 + fec_golay2412_create @492 + fec_golay2412_decode @493 + fec_golay2412_decode_symbol @494 + fec_golay2412_destroy @495 + fec_golay2412_encode @496 + fec_golay2412_encode_symbol @497 + fec_hamming128_create @498 + fec_hamming128_decode @499 + fec_hamming128_decode_soft @500 + fec_hamming128_decode_symbol @501 + fec_hamming128_destroy @502 + fec_hamming128_encode @503 + fec_hamming128_encode_symbol @504 + fec_hamming1511_decode_symbol @505 + fec_hamming1511_encode_symbol @506 + fec_hamming3126_decode_symbol @507 + fec_hamming3126_encode_symbol @508 + fec_hamming74_create @509 + fec_hamming74_decode @510 + fec_hamming74_decode_soft @511 + fec_hamming74_destroy @512 + fec_hamming74_encode @513 + fec_hamming84_create @514 + fec_hamming84_decode @515 + fec_hamming84_decode_soft @516 + fec_hamming84_destroy @517 + fec_hamming84_encode @518 + fec_pass_create @519 + fec_pass_decode @520 + fec_pass_destroy @521 + fec_pass_encode @522 + fec_pass_print @523 + fec_print @524 + fec_recreate @525 + fec_rep3_create @526 + fec_rep3_decode @527 + fec_rep3_decode_soft @528 + fec_rep3_destroy @529 + fec_rep3_encode @530 + fec_rep3_print @531 + fec_rep5_create @532 + fec_rep5_decode @533 + fec_rep5_decode_soft @534 + fec_rep5_destroy @535 + fec_rep5_encode @536 + fec_rep5_print @537 + fec_rs_create @538 + fec_rs_decode @539 + fec_rs_destroy @540 + fec_rs_encode @541 + fec_rs_get_enc_msg_len @542 + fec_scheme_is_convolutional @543 + fec_scheme_is_hamming @544 + fec_scheme_is_punctured @545 + fec_scheme_is_reedsolomon @546 + fec_scheme_is_repeat @547 + fec_scheme_str @548 DATA + fec_secded2216_compute_parity @549 + fec_secded2216_compute_syndrome @550 + fec_secded2216_create @551 + fec_secded2216_decode @552 + fec_secded2216_decode_symbol @553 + fec_secded2216_destroy @554 + fec_secded2216_encode @555 + fec_secded2216_encode_symbol @556 + fec_secded2216_estimate_ehat @557 + fec_secded3932_compute_parity @558 + fec_secded3932_compute_syndrome @559 + fec_secded3932_create @560 + fec_secded3932_decode @561 + fec_secded3932_decode_symbol @562 + fec_secded3932_destroy @563 + fec_secded3932_encode @564 + fec_secded3932_encode_symbol @565 + fec_secded3932_estimate_ehat @566 + fec_secded7264_compute_parity @567 + fec_secded7264_compute_syndrome @568 + fec_secded7264_create @569 + fec_secded7264_decode @570 + fec_secded7264_decode_symbol @571 + fec_secded7264_destroy @572 + fec_secded7264_encode @573 + fec_secded7264_encode_symbol @574 + fec_secded7264_estimate_ehat @575 + fec_sumproduct @576 + fec_sumproduct_step @577 + fecsoft_hamming128_decode @578 + fecsoft_hamming128_decode_n3 @579 + fecsoft_hamming128_n3 @580 DATA + fecsoft_hamming74_decode @581 + fecsoft_hamming84_decode @582 + fft_create_plan @583 + fft_create_plan_dft @584 + fft_create_plan_mixed_radix @585 + fft_create_plan_r2r_1d @586 + fft_create_plan_rader @587 + fft_create_plan_rader2 @588 + fft_create_plan_radix2 @589 + fft_destroy_plan @590 + fft_destroy_plan_dft @591 + fft_destroy_plan_mixed_radix @592 + fft_destroy_plan_r2r_1d @593 + fft_destroy_plan_rader @594 + fft_destroy_plan_rader2 @595 + fft_destroy_plan_radix2 @596 + fft_estimate_mixed_radix @597 + fft_execute @598 + fft_execute_REDFT00 @599 + fft_execute_REDFT01 @600 + fft_execute_REDFT10 @601 + fft_execute_REDFT11 @602 + fft_execute_RODFT00 @603 + fft_execute_RODFT01 @604 + fft_execute_RODFT10 @605 + fft_execute_RODFT11 @606 + fft_execute_dft @607 + fft_execute_dft_16 @608 + fft_execute_dft_2 @609 + fft_execute_dft_3 @610 + fft_execute_dft_4 @611 + fft_execute_dft_5 @612 + fft_execute_dft_6 @613 + fft_execute_dft_7 @614 + fft_execute_dft_8 @615 + fft_execute_mixed_radix @616 + fft_execute_rader @617 + fft_execute_rader2 @618 + fft_execute_radix2 @619 + fft_is_radix2 @620 + fft_print_plan @621 + fft_print_plan_r2r_1d @622 + fft_print_plan_recursive @623 + fft_r2r_1d_run @624 + fft_reverse_index @625 + fft_run @626 + fft_shift @627 + fftfilt_cccf_create @628 + fftfilt_cccf_destroy @629 + fftfilt_cccf_execute @630 + fftfilt_cccf_get_length @631 + fftfilt_cccf_get_scale @632 + fftfilt_cccf_print @633 + fftfilt_cccf_reset @634 + fftfilt_cccf_set_scale @635 + fftfilt_crcf_create @636 + fftfilt_crcf_destroy @637 + fftfilt_crcf_execute @638 + fftfilt_crcf_get_length @639 + fftfilt_crcf_get_scale @640 + fftfilt_crcf_print @641 + fftfilt_crcf_reset @642 + fftfilt_crcf_set_scale @643 + fftfilt_rrrf_create @644 + fftfilt_rrrf_destroy @645 + fftfilt_rrrf_execute @646 + fftfilt_rrrf_get_length @647 + fftfilt_rrrf_get_scale @648 + fftfilt_rrrf_print @649 + fftfilt_rrrf_reset @650 + fftfilt_rrrf_set_scale @651 + fir_group_delay @652 + firdecim_cccf_create @653 + firdecim_cccf_create_kaiser @654 + firdecim_cccf_create_prototype @655 + firdecim_cccf_destroy @656 + firdecim_cccf_execute @657 + firdecim_cccf_execute_block @658 + firdecim_cccf_get_scale @659 + firdecim_cccf_print @660 + firdecim_cccf_reset @661 + firdecim_cccf_set_scale @662 + firdecim_crcf_create @663 + firdecim_crcf_create_kaiser @664 + firdecim_crcf_create_prototype @665 + firdecim_crcf_destroy @666 + firdecim_crcf_execute @667 + firdecim_crcf_execute_block @668 + firdecim_crcf_get_scale @669 + firdecim_crcf_print @670 + firdecim_crcf_reset @671 + firdecim_crcf_set_scale @672 + firdecim_rrrf_create @673 + firdecim_rrrf_create_kaiser @674 + firdecim_rrrf_create_prototype @675 + firdecim_rrrf_destroy @676 + firdecim_rrrf_execute @677 + firdecim_rrrf_execute_block @678 + firdecim_rrrf_get_scale @679 + firdecim_rrrf_print @680 + firdecim_rrrf_reset @681 + firdecim_rrrf_set_scale @682 + firdespm_compute_error @683 + firdespm_compute_interp @684 + firdespm_compute_taps @685 + firdespm_create @686 + firdespm_create_callback @687 + firdespm_destroy @688 + firdespm_execute @689 + firdespm_iext_search @690 + firdespm_init_grid @691 + firdespm_init_memory @692 + firdespm_is_search_complete @693 + firdespm_lowpass @694 + firdespm_print @695 + firdespm_run @696 + firfarrow_crcf_create @697 + firfarrow_crcf_destroy @698 + firfarrow_crcf_execute @699 + firfarrow_crcf_execute_block @700 + firfarrow_crcf_freqresponse @701 + firfarrow_crcf_genpoly @702 + firfarrow_crcf_get_coefficients @703 + firfarrow_crcf_get_length @704 + firfarrow_crcf_groupdelay @705 + firfarrow_crcf_print @706 + firfarrow_crcf_push @707 + firfarrow_crcf_reset @708 + firfarrow_crcf_set_delay @709 + firfarrow_rrrf_create @710 + firfarrow_rrrf_destroy @711 + firfarrow_rrrf_execute @712 + firfarrow_rrrf_execute_block @713 + firfarrow_rrrf_freqresponse @714 + firfarrow_rrrf_genpoly @715 + firfarrow_rrrf_get_coefficients @716 + firfarrow_rrrf_get_length @717 + firfarrow_rrrf_groupdelay @718 + firfarrow_rrrf_print @719 + firfarrow_rrrf_push @720 + firfarrow_rrrf_reset @721 + firfarrow_rrrf_set_delay @722 + firfilt_cccf_create @723 + firfilt_cccf_create_kaiser @724 + firfilt_cccf_create_rect @725 + firfilt_cccf_create_rnyquist @726 + firfilt_cccf_destroy @727 + firfilt_cccf_execute @728 + firfilt_cccf_execute_block @729 + firfilt_cccf_freqresponse @730 + firfilt_cccf_get_length @731 + firfilt_cccf_get_scale @732 + firfilt_cccf_groupdelay @733 + firfilt_cccf_print @734 + firfilt_cccf_push @735 + firfilt_cccf_recreate @736 + firfilt_cccf_reset @737 + firfilt_cccf_set_scale @738 + firfilt_cccf_write @739 + firfilt_crcf_create @740 + firfilt_crcf_create_kaiser @741 + firfilt_crcf_create_rect @742 + firfilt_crcf_create_rnyquist @743 + firfilt_crcf_destroy @744 + firfilt_crcf_execute @745 + firfilt_crcf_execute_block @746 + firfilt_crcf_freqresponse @747 + firfilt_crcf_get_length @748 + firfilt_crcf_get_scale @749 + firfilt_crcf_groupdelay @750 + firfilt_crcf_print @751 + firfilt_crcf_push @752 + firfilt_crcf_recreate @753 + firfilt_crcf_reset @754 + firfilt_crcf_set_scale @755 + firfilt_crcf_write @756 + firfilt_rrrf_create @757 + firfilt_rrrf_create_kaiser @758 + firfilt_rrrf_create_rect @759 + firfilt_rrrf_create_rnyquist @760 + firfilt_rrrf_destroy @761 + firfilt_rrrf_execute @762 + firfilt_rrrf_execute_block @763 + firfilt_rrrf_freqresponse @764 + firfilt_rrrf_get_length @765 + firfilt_rrrf_get_scale @766 + firfilt_rrrf_groupdelay @767 + firfilt_rrrf_print @768 + firfilt_rrrf_push @769 + firfilt_rrrf_recreate @770 + firfilt_rrrf_reset @771 + firfilt_rrrf_set_scale @772 + firfilt_rrrf_write @773 + firhilbf_c2r_execute @774 + firhilbf_create @775 + firhilbf_decim_execute @776 + firhilbf_decim_execute_block @777 + firhilbf_destroy @778 + firhilbf_interp_execute @779 + firhilbf_interp_execute_block @780 + firhilbf_print @781 + firhilbf_r2c_execute @782 + firhilbf_reset @783 + firinterp_cccf_create @784 + firinterp_cccf_create_kaiser @785 + firinterp_cccf_create_prototype @786 + firinterp_cccf_destroy @787 + firinterp_cccf_execute @788 + firinterp_cccf_execute_block @789 + firinterp_cccf_get_scale @790 + firinterp_cccf_print @791 + firinterp_cccf_reset @792 + firinterp_cccf_set_scale @793 + firinterp_crcf_create @794 + firinterp_crcf_create_kaiser @795 + firinterp_crcf_create_prototype @796 + firinterp_crcf_destroy @797 + firinterp_crcf_execute @798 + firinterp_crcf_execute_block @799 + firinterp_crcf_get_scale @800 + firinterp_crcf_print @801 + firinterp_crcf_reset @802 + firinterp_crcf_set_scale @803 + firinterp_rrrf_create @804 + firinterp_rrrf_create_kaiser @805 + firinterp_rrrf_create_prototype @806 + firinterp_rrrf_destroy @807 + firinterp_rrrf_execute @808 + firinterp_rrrf_execute_block @809 + firinterp_rrrf_get_scale @810 + firinterp_rrrf_print @811 + firinterp_rrrf_reset @812 + firinterp_rrrf_set_scale @813 + firpfb_cccf_create @814 + firpfb_cccf_create_drnyquist @815 + firpfb_cccf_create_kaiser @816 + firpfb_cccf_create_rnyquist @817 + firpfb_cccf_destroy @818 + firpfb_cccf_execute @819 + firpfb_cccf_execute_block @820 + firpfb_cccf_get_scale @821 + firpfb_cccf_print @822 + firpfb_cccf_push @823 + firpfb_cccf_recreate @824 + firpfb_cccf_reset @825 + firpfb_cccf_set_scale @826 + firpfb_crcf_create @827 + firpfb_crcf_create_drnyquist @828 + firpfb_crcf_create_kaiser @829 + firpfb_crcf_create_rnyquist @830 + firpfb_crcf_destroy @831 + firpfb_crcf_execute @832 + firpfb_crcf_execute_block @833 + firpfb_crcf_get_scale @834 + firpfb_crcf_print @835 + firpfb_crcf_push @836 + firpfb_crcf_recreate @837 + firpfb_crcf_reset @838 + firpfb_crcf_set_scale @839 + firpfb_rrrf_create @840 + firpfb_rrrf_create_drnyquist @841 + firpfb_rrrf_create_kaiser @842 + firpfb_rrrf_create_rnyquist @843 + firpfb_rrrf_destroy @844 + firpfb_rrrf_execute @845 + firpfb_rrrf_execute_block @846 + firpfb_rrrf_get_scale @847 + firpfb_rrrf_print @848 + firpfb_rrrf_push @849 + firpfb_rrrf_recreate @850 + firpfb_rrrf_reset @851 + firpfb_rrrf_set_scale @852 + firpfbch2_crcf_create @853 + firpfbch2_crcf_create_kaiser @854 + firpfbch2_crcf_destroy @855 + firpfbch2_crcf_execute @856 + firpfbch2_crcf_execute_analyzer @857 + firpfbch2_crcf_execute_synthesizer @858 + firpfbch2_crcf_print @859 + firpfbch2_crcf_reset @860 + firpfbch_cccf_analyzer_execute @861 + firpfbch_cccf_analyzer_push @862 + firpfbch_cccf_analyzer_run @863 + firpfbch_cccf_create @864 + firpfbch_cccf_create_kaiser @865 + firpfbch_cccf_create_rnyquist @866 + firpfbch_cccf_destroy @867 + firpfbch_cccf_print @868 + firpfbch_cccf_reset @869 + firpfbch_cccf_synthesizer_execute @870 + firpfbch_crcf_analyzer_execute @871 + firpfbch_crcf_analyzer_push @872 + firpfbch_crcf_analyzer_run @873 + firpfbch_crcf_create @874 + firpfbch_crcf_create_kaiser @875 + firpfbch_crcf_create_rnyquist @876 + firpfbch_crcf_destroy @877 + firpfbch_crcf_print @878 + firpfbch_crcf_reset @879 + firpfbch_crcf_synthesizer_execute @880 + flattop @881 + flexframegen_assemble @882 + flexframegen_create @883 + flexframegen_destroy @884 + flexframegen_generate_header @885 + flexframegen_generate_payload @886 + flexframegen_generate_preamble @887 + flexframegen_generate_symbol @888 + flexframegen_generate_tail @889 + flexframegen_getframelen @890 + flexframegen_getprops @891 + flexframegen_is_assembled @892 + flexframegen_print @893 + flexframegen_reconfigure @894 + flexframegen_reset @895 + flexframegen_set_header_len @896 + flexframegen_set_header_props @897 + flexframegen_setprops @898 + flexframegen_write_samples @899 + flexframegenprops_init_default @900 + flexframesync_create @901 + flexframesync_debug_disable @902 + flexframesync_debug_enable @903 + flexframesync_debug_print @904 + flexframesync_decode_header @905 + flexframesync_decode_header_soft @906 + flexframesync_decode_payload_soft @907 + flexframesync_destroy @908 + flexframesync_execute @909 + flexframesync_execute_rxheader @910 + flexframesync_execute_rxpayload @911 + flexframesync_execute_rxpreamble @912 + flexframesync_execute_seekpn @913 + flexframesync_get_framedatastats @914 + flexframesync_is_frame_open @915 + flexframesync_print @916 + flexframesync_reset @917 + flexframesync_reset_framedatastats @918 + flexframesync_set_header_len @919 + flexframesync_set_header_props @920 + flexframesync_step @921 + fpoly_bessel @922 + fpoly_bessel_roots @923 + fpoly_bessel_roots_orchard @924 + fpoly_bessel_roots_orchard_recursion @925 + framedatastats_print @926 + framedatastats_reset @927 + framegen64_create @928 + framegen64_destroy @929 + framegen64_execute @930 + framegen64_print @931 + framesync64_create @932 + framesync64_debug_disable @933 + framesync64_debug_enable @934 + framesync64_debug_print @935 + framesync64_destroy @936 + framesync64_execute @937 + framesync64_execute_rxpayload @938 + framesync64_execute_rxpreamble @939 + framesync64_execute_seekpn @940 + framesync64_print @941 + framesync64_reset @942 + framesync64_step @943 + framesyncstats_default @944 DATA + framesyncstats_init_default @945 + framesyncstats_print @946 + freqdem_create @947 + freqdem_demodulate @948 + freqdem_demodulate_block @949 + freqdem_destroy @950 + freqdem_print @951 + freqdem_reset @952 + freqmod_create @953 + freqmod_destroy @954 + freqmod_modulate @955 + freqmod_modulate_block @956 + freqmod_print @957 + freqmod_reset @958 + fskdem_create @959 + fskdem_demodulate @960 + fskdem_destroy @961 + fskdem_get_frequency_error @962 + fskdem_print @963 + fskdem_reset @964 + fskmod_create @965 + fskmod_destroy @966 + fskmod_modulate @967 + fskmod_print @968 + fskmod_reset @969 + gasearch_create @970 + gasearch_create_advanced @971 + gasearch_crossover @972 + gasearch_destroy @973 + gasearch_evaluate @974 + gasearch_evolve @975 + gasearch_getopt @976 + gasearch_mutate @977 + gasearch_print @978 + gasearch_rank @979 + gasearch_run @980 + gasearch_set_mutation_rate @981 + gasearch_set_population_size @982 + gmskdem_create @983 + gmskdem_debug_print @984 + gmskdem_demodulate @985 + gmskdem_destroy @986 + gmskdem_print @987 + gmskdem_reset @988 + gmskdem_set_eq_bw @989 + gmskframegen_assemble @990 + gmskframegen_create @991 + gmskframegen_destroy @992 + gmskframegen_encode_header @993 + gmskframegen_getframelen @994 + gmskframegen_is_assembled @995 + gmskframegen_print @996 + gmskframegen_reset @997 + gmskframegen_set_header_len @998 + gmskframegen_write_header @999 + gmskframegen_write_payload @1000 + gmskframegen_write_preamble @1001 + gmskframegen_write_samples @1002 + gmskframegen_write_tail @1003 + gmskframesync_create @1004 + gmskframesync_debug_disable @1005 + gmskframesync_debug_enable @1006 + gmskframesync_debug_print @1007 + gmskframesync_decode_header @1008 + gmskframesync_destroy @1009 + gmskframesync_execute @1010 + gmskframesync_execute_detectframe @1011 + gmskframesync_execute_rxheader @1012 + gmskframesync_execute_rxpayload @1013 + gmskframesync_execute_rxpreamble @1014 + gmskframesync_execute_sample @1015 + gmskframesync_is_frame_open @1016 + gmskframesync_print @1017 + gmskframesync_pushpn @1018 + gmskframesync_reset @1019 + gmskframesync_set_header_len @1020 + gmskframesync_syncpn @1021 + gmskframesync_update_fi @1022 + gmskframesync_update_symsync @1023 + gmskmod_create @1024 + gmskmod_destroy @1025 + gmskmod_modulate @1026 + gmskmod_print @1027 + gmskmod_reset @1028 + golay2412_Gt @1029 DATA + golay2412_H @1030 DATA + golay2412_P @1031 DATA + golay2412_matrix_mul @1032 + golay2412_parity_search @1033 + gradsearch_create @1034 + gradsearch_destroy @1035 + gradsearch_execute @1036 + gradsearch_gradient @1037 + gradsearch_linesearch @1038 + gradsearch_norm @1039 + gradsearch_print @1040 + gradsearch_step @1041 + gray_decode @1042 + gray_encode @1043 + hamming @1044 + hamming128_enc_gentab @1045 DATA + hamming74_dec_gentab @1046 DATA + hamming74_enc_gentab @1047 DATA + hamming84_dec_gentab @1048 DATA + hamming84_enc_gentab @1049 DATA + hann @1050 + icrandnf @1051 + iir_group_delay @1052 + iirdecim_cccf_create @1053 + iirdecim_cccf_create_default @1054 + iirdecim_cccf_create_prototype @1055 + iirdecim_cccf_destroy @1056 + iirdecim_cccf_execute @1057 + iirdecim_cccf_execute_block @1058 + iirdecim_cccf_groupdelay @1059 + iirdecim_cccf_print @1060 + iirdecim_cccf_reset @1061 + iirdecim_crcf_create @1062 + iirdecim_crcf_create_default @1063 + iirdecim_crcf_create_prototype @1064 + iirdecim_crcf_destroy @1065 + iirdecim_crcf_execute @1066 + iirdecim_crcf_execute_block @1067 + iirdecim_crcf_groupdelay @1068 + iirdecim_crcf_print @1069 + iirdecim_crcf_reset @1070 + iirdecim_rrrf_create @1071 + iirdecim_rrrf_create_default @1072 + iirdecim_rrrf_create_prototype @1073 + iirdecim_rrrf_destroy @1074 + iirdecim_rrrf_execute @1075 + iirdecim_rrrf_execute_block @1076 + iirdecim_rrrf_groupdelay @1077 + iirdecim_rrrf_print @1078 + iirdecim_rrrf_reset @1079 + iirdes_dzpk2sosf @1080 + iirdes_dzpk2tff @1081 + iirdes_dzpk_lp2bp @1082 + iirdes_dzpk_lp2hp @1083 + iirdes_freqprewarp @1084 + iirdes_isstable @1085 + iirdes_pll_active_PI @1086 + iirdes_pll_active_lag @1087 + iirfilt_cccf_create @1088 + iirfilt_cccf_create_dc_blocker @1089 + iirfilt_cccf_create_differentiator @1090 + iirfilt_cccf_create_integrator @1091 + iirfilt_cccf_create_lowpass @1092 + iirfilt_cccf_create_pll @1093 + iirfilt_cccf_create_prototype @1094 + iirfilt_cccf_create_sos @1095 + iirfilt_cccf_destroy @1096 + iirfilt_cccf_execute @1097 + iirfilt_cccf_execute_block @1098 + iirfilt_cccf_execute_norm @1099 + iirfilt_cccf_execute_sos @1100 + iirfilt_cccf_freqresponse @1101 + iirfilt_cccf_get_length @1102 + iirfilt_cccf_groupdelay @1103 + iirfilt_cccf_init @1104 + iirfilt_cccf_print @1105 + iirfilt_cccf_reset @1106 + iirfilt_crcf_create @1107 + iirfilt_crcf_create_dc_blocker @1108 + iirfilt_crcf_create_differentiator @1109 + iirfilt_crcf_create_integrator @1110 + iirfilt_crcf_create_lowpass @1111 + iirfilt_crcf_create_pll @1112 + iirfilt_crcf_create_prototype @1113 + iirfilt_crcf_create_sos @1114 + iirfilt_crcf_destroy @1115 + iirfilt_crcf_execute @1116 + iirfilt_crcf_execute_block @1117 + iirfilt_crcf_execute_norm @1118 + iirfilt_crcf_execute_sos @1119 + iirfilt_crcf_freqresponse @1120 + iirfilt_crcf_get_length @1121 + iirfilt_crcf_groupdelay @1122 + iirfilt_crcf_init @1123 + iirfilt_crcf_print @1124 + iirfilt_crcf_reset @1125 + iirfilt_rrrf_create @1126 + iirfilt_rrrf_create_dc_blocker @1127 + iirfilt_rrrf_create_differentiator @1128 + iirfilt_rrrf_create_integrator @1129 + iirfilt_rrrf_create_lowpass @1130 + iirfilt_rrrf_create_pll @1131 + iirfilt_rrrf_create_prototype @1132 + iirfilt_rrrf_create_sos @1133 + iirfilt_rrrf_destroy @1134 + iirfilt_rrrf_execute @1135 + iirfilt_rrrf_execute_block @1136 + iirfilt_rrrf_execute_norm @1137 + iirfilt_rrrf_execute_sos @1138 + iirfilt_rrrf_freqresponse @1139 + iirfilt_rrrf_get_length @1140 + iirfilt_rrrf_groupdelay @1141 + iirfilt_rrrf_init @1142 + iirfilt_rrrf_print @1143 + iirfilt_rrrf_reset @1144 + iirfiltsos_cccf_create @1145 + iirfiltsos_cccf_destroy @1146 + iirfiltsos_cccf_execute @1147 + iirfiltsos_cccf_execute_df1 @1148 + iirfiltsos_cccf_execute_df2 @1149 + iirfiltsos_cccf_groupdelay @1150 + iirfiltsos_cccf_print @1151 + iirfiltsos_cccf_reset @1152 + iirfiltsos_cccf_set_coefficients @1153 + iirfiltsos_crcf_create @1154 + iirfiltsos_crcf_destroy @1155 + iirfiltsos_crcf_execute @1156 + iirfiltsos_crcf_execute_df1 @1157 + iirfiltsos_crcf_execute_df2 @1158 + iirfiltsos_crcf_groupdelay @1159 + iirfiltsos_crcf_print @1160 + iirfiltsos_crcf_reset @1161 + iirfiltsos_crcf_set_coefficients @1162 + iirfiltsos_rrrf_create @1163 + iirfiltsos_rrrf_destroy @1164 + iirfiltsos_rrrf_execute @1165 + iirfiltsos_rrrf_execute_df1 @1166 + iirfiltsos_rrrf_execute_df2 @1167 + iirfiltsos_rrrf_groupdelay @1168 + iirfiltsos_rrrf_print @1169 + iirfiltsos_rrrf_reset @1170 + iirfiltsos_rrrf_set_coefficients @1171 + iirhilbf_c2r_execute @1172 + iirhilbf_create @1173 + iirhilbf_create_default @1174 + iirhilbf_decim_execute @1175 + iirhilbf_decim_execute_block @1176 + iirhilbf_destroy @1177 + iirhilbf_interp_execute @1178 + iirhilbf_interp_execute_block @1179 + iirhilbf_print @1180 + iirhilbf_r2c_execute @1181 + iirhilbf_reset @1182 + iirinterp_cccf_create @1183 + iirinterp_cccf_create_default @1184 + iirinterp_cccf_create_prototype @1185 + iirinterp_cccf_destroy @1186 + iirinterp_cccf_execute @1187 + iirinterp_cccf_execute_block @1188 + iirinterp_cccf_groupdelay @1189 + iirinterp_cccf_print @1190 + iirinterp_cccf_reset @1191 + iirinterp_crcf_create @1192 + iirinterp_crcf_create_default @1193 + iirinterp_crcf_create_prototype @1194 + iirinterp_crcf_destroy @1195 + iirinterp_crcf_execute @1196 + iirinterp_crcf_execute_block @1197 + iirinterp_crcf_groupdelay @1198 + iirinterp_crcf_print @1199 + iirinterp_crcf_reset @1200 + iirinterp_rrrf_create @1201 + iirinterp_rrrf_create_default @1202 + iirinterp_rrrf_create_prototype @1203 + iirinterp_rrrf_destroy @1204 + iirinterp_rrrf_execute @1205 + iirinterp_rrrf_execute_block @1206 + iirinterp_rrrf_groupdelay @1207 + iirinterp_rrrf_print @1208 + iirinterp_rrrf_reset @1209 + interleaver_create @1210 + interleaver_decode @1211 + interleaver_decode_soft @1212 + interleaver_destroy @1213 + interleaver_encode @1214 + interleaver_encode_soft @1215 + interleaver_permute @1216 + interleaver_permute_mask @1217 + interleaver_permute_mask_soft @1218 + interleaver_permute_soft @1219 + interleaver_print @1220 + interleaver_set_depth @1221 + kaiser @1222 + kaiser_beta_As @1223 + landenf @1224 + liquid_MarcumQ1f @1225 + liquid_MarcumQf @1226 + liquid_Qf @1227 + liquid_apsk128 @1228 DATA + liquid_apsk16 @1229 DATA + liquid_apsk256 @1230 DATA + liquid_apsk32 @1231 DATA + liquid_apsk4 @1232 DATA + liquid_apsk64 @1233 DATA + liquid_apsk8 @1234 DATA + liquid_asechf @1235 + liquid_bdotprod @1236 + liquid_besseli0f @1237 + liquid_besselif @1238 + liquid_besselj0f @1239 + liquid_besseljf @1240 + liquid_c_leading_zeros @1241 DATA + liquid_c_ones @1242 DATA + liquid_c_ones_mod2 @1243 DATA + liquid_cacosf @1244 + liquid_cargf_approx @1245 + liquid_casinf @1246 + liquid_catanf @1247 + liquid_cexpf @1248 + liquid_clogf @1249 + liquid_cosf @1250 + liquid_count_leading_zeros @1251 + liquid_count_ones @1252 + liquid_count_ones_mod2 @1253 + liquid_cplxpair @1254 + liquid_cplxpair_cleanup @1255 + liquid_csqrtf @1256 + liquid_expf @1257 + liquid_factor @1258 + liquid_factorialf @1259 + liquid_fft_estimate_method @1260 + liquid_filter_autocorr @1261 + liquid_filter_crosscorr @1262 + liquid_filter_energy @1263 + liquid_filter_isi @1264 + liquid_firdes_arkaiser @1265 + liquid_firdes_doppler @1266 + liquid_firdes_farcsech @1267 + liquid_firdes_farcsech_freqresponse @1268 + liquid_firdes_fexp @1269 + liquid_firdes_fexp_freqresponse @1270 + liquid_firdes_fnyquist @1271 + liquid_firdes_fsech @1272 + liquid_firdes_fsech_freqresponse @1273 + liquid_firdes_gmskrx @1274 + liquid_firdes_gmsktx @1275 + liquid_firdes_hM3 @1276 + liquid_firdes_kaiser @1277 + liquid_firdes_prototype @1278 + liquid_firdes_rcos @1279 + liquid_firdes_rfarcsech @1280 + liquid_firdes_rfexp @1281 + liquid_firdes_rfsech @1282 + liquid_firdes_rkaiser @1283 + liquid_firdes_rkaiser_bisection @1284 + liquid_firdes_rkaiser_internal_isi @1285 + liquid_firdes_rkaiser_quadratic @1286 + liquid_firdes_rrcos @1287 + liquid_gammaf @1288 + liquid_gcd @1289 + liquid_get_scale @1290 + liquid_getopt_str2crc @1291 + liquid_getopt_str2fec @1292 + liquid_getopt_str2firfilt @1293 + liquid_getopt_str2mod @1294 + liquid_getopt_str2window @1295 + liquid_iirdes @1296 + liquid_invgauss @1297 + liquid_is_prime @1298 + liquid_kbd @1299 + liquid_kbd_window @1300 + liquid_lbcircshift @1301 + liquid_lbshift @1302 + liquid_lcircshift @1303 + liquid_levinson @1304 + liquid_libversion @1305 + liquid_libversion_number @1306 + liquid_lnbesselif @1307 + liquid_lngammaf @1308 + liquid_lnlowergammaf @1309 + liquid_lnuppergammaf @1310 + liquid_logf @1311 + liquid_lowergammaf @1312 + liquid_lpc @1313 + liquid_lshift @1314 + liquid_modem_is_apsk @1315 + liquid_modem_is_ask @1316 + liquid_modem_is_dpsk @1317 + liquid_modem_is_psk @1318 + liquid_modem_is_qam @1319 + liquid_modpow @1320 + liquid_msb_index @1321 + liquid_multimodal @1322 + liquid_nchoosek @1323 + liquid_nextpow2 @1324 + liquid_pack_array @1325 + liquid_pack_bytes @1326 + liquid_pack_soft_bits @1327 + liquid_primitive_root @1328 + liquid_primitive_root_prime @1329 + liquid_print_bitstring @1330 + liquid_print_crc_schemes @1331 + liquid_print_fec_schemes @1332 + liquid_print_modulation_schemes @1333 + liquid_print_windows @1334 + liquid_rbcircshift @1335 + liquid_rbshift @1336 + liquid_rcircshift @1337 + liquid_rcostaper_windowf @1338 + liquid_repack_bytes @1339 + liquid_reverse_byte @1340 + liquid_reverse_byte_gentab @1341 DATA + liquid_reverse_uint16 @1342 + liquid_reverse_uint24 @1343 + liquid_reverse_uint32 @1344 + liquid_rosenbrock @1345 + liquid_rshift @1346 + liquid_sincosf @1347 + liquid_sinf @1348 + liquid_spiral @1349 + liquid_sumsqcf @1350 + liquid_sumsqf @1351 + liquid_tanf @1352 + liquid_totient @1353 + liquid_unique_factor @1354 + liquid_unpack_array @1355 + liquid_unpack_bytes @1356 + liquid_unpack_soft_bits @1357 + liquid_unwrap_phase @1358 + liquid_unwrap_phase2 @1359 + liquid_uppergammaf @1360 + liquid_vectorcf_abs @1361 + liquid_vectorcf_add @1362 + liquid_vectorcf_addscalar @1363 + liquid_vectorcf_carg @1364 + liquid_vectorcf_cexpj @1365 + liquid_vectorcf_mul @1366 + liquid_vectorcf_mulscalar @1367 + liquid_vectorcf_norm @1368 + liquid_vectorcf_normalize @1369 + liquid_vectorf_abs @1370 + liquid_vectorf_add @1371 + liquid_vectorf_addscalar @1372 + liquid_vectorf_carg @1373 + liquid_vectorf_cexpj @1374 + liquid_vectorf_mul @1375 + liquid_vectorf_mulscalar @1376 + liquid_vectorf_norm @1377 + liquid_vectorf_normalize @1378 + liquid_version @1379 DATA + liquid_window_str @1380 DATA + matrix_add @1381 + matrix_aug @1382 + matrix_cgsolve @1383 + matrix_chol @1384 + matrix_det @1385 + matrix_det2x2 @1386 + matrix_div @1387 + matrix_eye @1388 + matrix_gjelim @1389 + matrix_gramschmidt @1390 + matrix_hermitian @1391 + matrix_hermitian_mul @1392 + matrix_inv @1393 + matrix_linsolve @1394 + matrix_ludecomp_crout @1395 + matrix_ludecomp_doolittle @1396 + matrix_mul @1397 + matrix_mul_hermitian @1398 + matrix_mul_transpose @1399 + matrix_ones @1400 + matrix_pdiv @1401 + matrix_pivot @1402 + matrix_pmul @1403 + matrix_print @1404 + matrix_proj @1405 + matrix_qrdecomp_gramschmidt @1406 + matrix_sub @1407 + matrix_swaprows @1408 + matrix_trans @1409 + matrix_transpose_mul @1410 + matrix_zeros @1411 + matrixc_add @1412 + matrixc_aug @1413 + matrixc_cgsolve @1414 + matrixc_chol @1415 + matrixc_det @1416 + matrixc_det2x2 @1417 + matrixc_div @1418 + matrixc_eye @1419 + matrixc_gjelim @1420 + matrixc_gramschmidt @1421 + matrixc_hermitian @1422 + matrixc_hermitian_mul @1423 + matrixc_inv @1424 + matrixc_linsolve @1425 + matrixc_ludecomp_crout @1426 + matrixc_ludecomp_doolittle @1427 + matrixc_mul @1428 + matrixc_mul_hermitian @1429 + matrixc_mul_transpose @1430 + matrixc_ones @1431 + matrixc_pdiv @1432 + matrixc_pivot @1433 + matrixc_pmul @1434 + matrixc_print @1435 + matrixc_proj @1436 + matrixc_qrdecomp_gramschmidt @1437 + matrixc_sub @1438 + matrixc_swaprows @1439 + matrixc_trans @1440 + matrixc_transpose_mul @1441 + matrixc_zeros @1442 + matrixcf_add @1443 + matrixcf_aug @1444 + matrixcf_cgsolve @1445 + matrixcf_chol @1446 + matrixcf_det @1447 + matrixcf_det2x2 @1448 + matrixcf_div @1449 + matrixcf_eye @1450 + matrixcf_gjelim @1451 + matrixcf_gramschmidt @1452 + matrixcf_hermitian @1453 + matrixcf_hermitian_mul @1454 + matrixcf_inv @1455 + matrixcf_linsolve @1456 + matrixcf_ludecomp_crout @1457 + matrixcf_ludecomp_doolittle @1458 + matrixcf_mul @1459 + matrixcf_mul_hermitian @1460 + matrixcf_mul_transpose @1461 + matrixcf_ones @1462 + matrixcf_pdiv @1463 + matrixcf_pivot @1464 + matrixcf_pmul @1465 + matrixcf_print @1466 + matrixcf_proj @1467 + matrixcf_qrdecomp_gramschmidt @1468 + matrixcf_sub @1469 + matrixcf_swaprows @1470 + matrixcf_trans @1471 + matrixcf_transpose_mul @1472 + matrixcf_zeros @1473 + matrixf_add @1474 + matrixf_aug @1475 + matrixf_cgsolve @1476 + matrixf_chol @1477 + matrixf_det @1478 + matrixf_det2x2 @1479 + matrixf_div @1480 + matrixf_eye @1481 + matrixf_gjelim @1482 + matrixf_gramschmidt @1483 + matrixf_hermitian @1484 + matrixf_hermitian_mul @1485 + matrixf_inv @1486 + matrixf_linsolve @1487 + matrixf_ludecomp_crout @1488 + matrixf_ludecomp_doolittle @1489 + matrixf_mul @1490 + matrixf_mul_hermitian @1491 + matrixf_mul_transpose @1492 + matrixf_ones @1493 + matrixf_pdiv @1494 + matrixf_pivot @1495 + matrixf_pmul @1496 + matrixf_print @1497 + matrixf_proj @1498 + matrixf_qrdecomp_gramschmidt @1499 + matrixf_sub @1500 + matrixf_swaprows @1501 + matrixf_trans @1502 + matrixf_transpose_mul @1503 + matrixf_zeros @1504 + modem_arb128opt @1505 DATA + modem_arb16opt @1506 DATA + modem_arb256opt @1507 DATA + modem_arb32opt @1508 DATA + modem_arb64opt @1509 DATA + modem_arb_V29 @1510 DATA + modem_arb_balance_iq @1511 + modem_arb_init @1512 + modem_arb_init_file @1513 + modem_arb_scale @1514 + modem_arb_sqam128 @1515 DATA + modem_arb_sqam32 @1516 DATA + modem_arb_vt64 @1517 DATA + modem_create @1518 + modem_create_V29 @1519 + modem_create_apsk @1520 + modem_create_arb @1521 + modem_create_arb128opt @1522 + modem_create_arb16opt @1523 + modem_create_arb256opt @1524 + modem_create_arb32opt @1525 + modem_create_arb64opt @1526 + modem_create_arb64vt @1527 + modem_create_arbitrary @1528 + modem_create_ask @1529 + modem_create_bpsk @1530 + modem_create_dpsk @1531 + modem_create_ook @1532 + modem_create_psk @1533 + modem_create_qam @1534 + modem_create_qpsk @1535 + modem_create_sqam128 @1536 + modem_create_sqam32 @1537 + modem_demodsoft_gentab @1538 + modem_demodulate @1539 + modem_demodulate_apsk @1540 + modem_demodulate_arb @1541 + modem_demodulate_ask @1542 + modem_demodulate_bpsk @1543 + modem_demodulate_dpsk @1544 + modem_demodulate_linear_array @1545 + modem_demodulate_linear_array_ref @1546 + modem_demodulate_ook @1547 + modem_demodulate_psk @1548 + modem_demodulate_qam @1549 + modem_demodulate_qpsk @1550 + modem_demodulate_soft @1551 + modem_demodulate_soft_arb @1552 + modem_demodulate_soft_bpsk @1553 + modem_demodulate_soft_qpsk @1554 + modem_demodulate_soft_table @1555 + modem_demodulate_sqam128 @1556 + modem_demodulate_sqam32 @1557 + modem_destroy @1558 + modem_gen_rand_sym @1559 + modem_get_bps @1560 + modem_get_demodulator_evm @1561 + modem_get_demodulator_phase_error @1562 + modem_get_demodulator_sample @1563 + modem_get_scheme @1564 + modem_init @1565 + modem_init_map @1566 + modem_modulate @1567 + modem_modulate_apsk @1568 + modem_modulate_arb @1569 + modem_modulate_ask @1570 + modem_modulate_bpsk @1571 + modem_modulate_dpsk @1572 + modem_modulate_map @1573 + modem_modulate_ook @1574 + modem_modulate_psk @1575 + modem_modulate_qam @1576 + modem_modulate_qpsk @1577 + modem_modulate_sqam128 @1578 + modem_modulate_sqam32 @1579 + modem_print @1580 + modem_recreate @1581 + modem_reset @1582 + modulation_types @1583 DATA + msequence_advance @1584 + msequence_create @1585 + msequence_create_default @1586 + msequence_create_genpoly @1587 + msequence_default @1588 DATA + msequence_destroy @1589 + msequence_generate_symbol @1590 + msequence_get_length @1591 + msequence_get_state @1592 + msequence_print @1593 + msequence_reset @1594 + msequence_set_state @1595 + msourcecf_add_modem @1596 + msourcecf_add_noise @1597 + msourcecf_add_source @1598 + msourcecf_add_tone @1599 + msourcecf_create @1600 + msourcecf_destroy @1601 + msourcecf_disable @1602 + msourcecf_enable @1603 + msourcecf_get_frequency @1604 + msourcecf_get_gain @1605 + msourcecf_get_source @1606 + msourcecf_print @1607 + msourcecf_remove @1608 + msourcecf_reset @1609 + msourcecf_set_frequency @1610 + msourcecf_set_gain @1611 + msourcecf_write_samples @1612 + msresamp2_cccf_create @1613 + msresamp2_cccf_decim_execute @1614 + msresamp2_cccf_destroy @1615 + msresamp2_cccf_execute @1616 + msresamp2_cccf_get_delay @1617 + msresamp2_cccf_get_num_stages @1618 + msresamp2_cccf_get_rate @1619 + msresamp2_cccf_get_type @1620 + msresamp2_cccf_interp_execute @1621 + msresamp2_cccf_print @1622 + msresamp2_cccf_reset @1623 + msresamp2_crcf_create @1624 + msresamp2_crcf_decim_execute @1625 + msresamp2_crcf_destroy @1626 + msresamp2_crcf_execute @1627 + msresamp2_crcf_get_delay @1628 + msresamp2_crcf_get_num_stages @1629 + msresamp2_crcf_get_rate @1630 + msresamp2_crcf_get_type @1631 + msresamp2_crcf_interp_execute @1632 + msresamp2_crcf_print @1633 + msresamp2_crcf_reset @1634 + msresamp2_rrrf_create @1635 + msresamp2_rrrf_decim_execute @1636 + msresamp2_rrrf_destroy @1637 + msresamp2_rrrf_execute @1638 + msresamp2_rrrf_get_delay @1639 + msresamp2_rrrf_get_num_stages @1640 + msresamp2_rrrf_get_rate @1641 + msresamp2_rrrf_get_type @1642 + msresamp2_rrrf_interp_execute @1643 + msresamp2_rrrf_print @1644 + msresamp2_rrrf_reset @1645 + msresamp_cccf_create @1646 + msresamp_cccf_decim_execute @1647 + msresamp_cccf_destroy @1648 + msresamp_cccf_execute @1649 + msresamp_cccf_get_delay @1650 + msresamp_cccf_get_rate @1651 + msresamp_cccf_interp_execute @1652 + msresamp_cccf_print @1653 + msresamp_cccf_reset @1654 + msresamp_crcf_create @1655 + msresamp_crcf_decim_execute @1656 + msresamp_crcf_destroy @1657 + msresamp_crcf_execute @1658 + msresamp_crcf_get_delay @1659 + msresamp_crcf_get_rate @1660 + msresamp_crcf_interp_execute @1661 + msresamp_crcf_print @1662 + msresamp_crcf_reset @1663 + msresamp_rrrf_create @1664 + msresamp_rrrf_decim_execute @1665 + msresamp_rrrf_destroy @1666 + msresamp_rrrf_execute @1667 + msresamp_rrrf_get_delay @1668 + msresamp_rrrf_get_rate @1669 + msresamp_rrrf_interp_execute @1670 + msresamp_rrrf_print @1671 + msresamp_rrrf_reset @1672 + nco_crcf_adjust_frequency @1673 + nco_crcf_adjust_phase @1674 + nco_crcf_cexpf @1675 + nco_crcf_constrain @1676 + nco_crcf_cos @1677 + nco_crcf_create @1678 + nco_crcf_destroy @1679 + nco_crcf_get_frequency @1680 + nco_crcf_get_phase @1681 + nco_crcf_index @1682 + nco_crcf_mix_block_down @1683 + nco_crcf_mix_block_up @1684 + nco_crcf_mix_down @1685 + nco_crcf_mix_up @1686 + nco_crcf_pll_reset @1687 + nco_crcf_pll_set_bandwidth @1688 + nco_crcf_pll_step @1689 + nco_crcf_print @1690 + nco_crcf_reset @1691 + nco_crcf_set_frequency @1692 + nco_crcf_set_phase @1693 + nco_crcf_sin @1694 + nco_crcf_sincos @1695 + nco_crcf_step @1696 + ofdmflexframegen_assemble @1697 + ofdmflexframegen_create @1698 + ofdmflexframegen_destroy @1699 + ofdmflexframegen_encode_header @1700 + ofdmflexframegen_gen_S0a @1701 + ofdmflexframegen_gen_S0b @1702 + ofdmflexframegen_gen_S1 @1703 + ofdmflexframegen_gen_header @1704 + ofdmflexframegen_gen_payload @1705 + ofdmflexframegen_gen_symbol @1706 + ofdmflexframegen_gen_tail @1707 + ofdmflexframegen_gen_zeros @1708 + ofdmflexframegen_getframelen @1709 + ofdmflexframegen_getprops @1710 + ofdmflexframegen_is_assembled @1711 + ofdmflexframegen_modulate_header @1712 + ofdmflexframegen_print @1713 + ofdmflexframegen_reconfigure @1714 + ofdmflexframegen_reset @1715 + ofdmflexframegen_set_header_len @1716 + ofdmflexframegen_set_header_props @1717 + ofdmflexframegen_setprops @1718 + ofdmflexframegen_write @1719 + ofdmflexframegenprops_init_default @1720 + ofdmflexframesync_create @1721 + ofdmflexframesync_debug_disable @1722 + ofdmflexframesync_debug_enable @1723 + ofdmflexframesync_debug_print @1724 + ofdmflexframesync_decode_header @1725 + ofdmflexframesync_decode_header_soft @1726 + ofdmflexframesync_decode_payload_soft @1727 + ofdmflexframesync_destroy @1728 + ofdmflexframesync_execute @1729 + ofdmflexframesync_get_cfo @1730 + ofdmflexframesync_get_rssi @1731 + ofdmflexframesync_internal_callback @1732 + ofdmflexframesync_is_frame_open @1733 + ofdmflexframesync_print @1734 + ofdmflexframesync_reset @1735 + ofdmflexframesync_rxheader @1736 + ofdmflexframesync_rxpayload @1737 + ofdmflexframesync_set_header_len @1738 + ofdmflexframesync_set_header_props @1739 + ofdmframe_init_S0 @1740 + ofdmframe_init_S1 @1741 + ofdmframe_init_default_sctype @1742 + ofdmframe_init_sctype_range @1743 + ofdmframe_print_sctype @1744 + ofdmframe_validate_sctype @1745 + ofdmframegen_create @1746 + ofdmframegen_destroy @1747 + ofdmframegen_gensymbol @1748 + ofdmframegen_print @1749 + ofdmframegen_reset @1750 + ofdmframegen_write_S0a @1751 + ofdmframegen_write_S0b @1752 + ofdmframegen_write_S1 @1753 + ofdmframegen_writesymbol @1754 + ofdmframegen_writetail @1755 + ofdmframesync_S0_metrics @1756 + ofdmframesync_create @1757 + ofdmframesync_debug_disable @1758 + ofdmframesync_debug_enable @1759 + ofdmframesync_debug_print @1760 + ofdmframesync_destroy @1761 + ofdmframesync_estimate_eqgain @1762 + ofdmframesync_estimate_eqgain_poly @1763 + ofdmframesync_estimate_gain_S0 @1764 + ofdmframesync_estimate_gain_S1 @1765 + ofdmframesync_execute @1766 + ofdmframesync_execute_S0a @1767 + ofdmframesync_execute_S0b @1768 + ofdmframesync_execute_S1 @1769 + ofdmframesync_execute_rxsymbols @1770 + ofdmframesync_execute_seekplcp @1771 + ofdmframesync_get_cfo @1772 + ofdmframesync_get_rssi @1773 + ofdmframesync_is_frame_open @1774 + ofdmframesync_print @1775 + ofdmframesync_reset @1776 + ofdmframesync_rxsymbol @1777 + optim_sort @1778 + optim_threshold_switch @1779 + ordfilt_rrrf_create @1780 + ordfilt_rrrf_create_medfilt @1781 + ordfilt_rrrf_destroy @1782 + ordfilt_rrrf_execute @1783 + ordfilt_rrrf_execute_block @1784 + ordfilt_rrrf_print @1785 + ordfilt_rrrf_push @1786 + ordfilt_rrrf_reset @1787 + ordfilt_rrrf_write @1788 + ordfilt_sort_compf @1789 + packetizer_compute_dec_msg_len @1790 + packetizer_compute_enc_msg_len @1791 + packetizer_create @1792 + packetizer_decode @1793 + packetizer_decode_soft @1794 + packetizer_destroy @1795 + packetizer_encode @1796 + packetizer_get_crc @1797 + packetizer_get_dec_msg_len @1798 + packetizer_get_enc_msg_len @1799 + packetizer_get_fec0 @1800 + packetizer_get_fec1 @1801 + packetizer_print @1802 + packetizer_realloc_buffers @1803 + packetizer_recreate @1804 + packetizer_set_scheme @1805 + poly_expandbinomial @1806 + poly_expandbinomial_pm @1807 + poly_expandroots @1808 + poly_expandroots2 @1809 + poly_findroots @1810 + poly_findroots_bairstow @1811 + poly_findroots_bairstow_recursion @1812 + poly_findroots_durandkerner @1813 + poly_fit @1814 + poly_fit_lagrange @1815 + poly_fit_lagrange_barycentric @1816 + poly_interp_lagrange @1817 + poly_mul @1818 + poly_val @1819 + poly_val_lagrange_barycentric @1820 + polyc_expandbinomial @1821 + polyc_expandbinomial_pm @1822 + polyc_expandroots @1823 + polyc_expandroots2 @1824 + polyc_findroots @1825 + polyc_findroots_bairstow @1826 + polyc_findroots_bairstow_recursion @1827 + polyc_findroots_durandkerner @1828 + polyc_fit @1829 + polyc_fit_lagrange @1830 + polyc_fit_lagrange_barycentric @1831 + polyc_interp_lagrange @1832 + polyc_mul @1833 + polyc_val @1834 + polyc_val_lagrange_barycentric @1835 + polycf_expandbinomial @1836 + polycf_expandbinomial_pm @1837 + polycf_expandroots @1838 + polycf_expandroots2 @1839 + polycf_findroots @1840 + polycf_findroots_bairstow @1841 + polycf_findroots_bairstow_recursion @1842 + polycf_findroots_durandkerner @1843 + polycf_fit @1844 + polycf_fit_lagrange @1845 + polycf_fit_lagrange_barycentric @1846 + polycf_interp_lagrange @1847 + polycf_mul @1848 + polycf_val @1849 + polycf_val_lagrange_barycentric @1850 + polyf_expandbinomial @1851 + polyf_expandbinomial_pm @1852 + polyf_expandroots @1853 + polyf_expandroots2 @1854 + polyf_findroots @1855 + polyf_findroots_bairstow @1856 + polyf_findroots_bairstow_recursion @1857 + polyf_findroots_durandkerner @1858 + polyf_fit @1859 + polyf_fit_lagrange @1860 + polyf_fit_lagrange_barycentric @1861 + polyf_interp_lagrange @1862 + polyf_mul @1863 + polyf_val @1864 + polyf_val_lagrange_barycentric @1865 + presync_cccf_correlate @1866 + presync_cccf_create @1867 + presync_cccf_destroy @1868 + presync_cccf_execute @1869 + presync_cccf_print @1870 + presync_cccf_push @1871 + presync_cccf_reset @1872 + qdetector_cccf_create @1873 + qdetector_cccf_create_cpfsk @1874 + qdetector_cccf_create_gmsk @1875 + qdetector_cccf_create_linear @1876 + qdetector_cccf_destroy @1877 + qdetector_cccf_execute @1878 + qdetector_cccf_execute_align @1879 + qdetector_cccf_execute_seek @1880 + qdetector_cccf_get_buf_len @1881 + qdetector_cccf_get_dphi @1882 + qdetector_cccf_get_gamma @1883 + qdetector_cccf_get_phi @1884 + qdetector_cccf_get_rxy @1885 + qdetector_cccf_get_seq_len @1886 + qdetector_cccf_get_sequence @1887 + qdetector_cccf_get_tau @1888 + qdetector_cccf_print @1889 + qdetector_cccf_reset @1890 + qdetector_cccf_set_range @1891 + qdetector_cccf_set_threshold @1892 + qnsearch_compute_Hessian @1893 + qnsearch_compute_gradient @1894 + qnsearch_create @1895 + qnsearch_destroy @1896 + qnsearch_normalize_gradient @1897 + qnsearch_print @1898 + qnsearch_reset @1899 + qnsearch_run @1900 + qnsearch_step @1901 + qpacketmodem_configure @1902 + qpacketmodem_create @1903 + qpacketmodem_decode @1904 + qpacketmodem_decode_bits @1905 + qpacketmodem_decode_soft @1906 + qpacketmodem_decode_soft_payload @1907 + qpacketmodem_decode_soft_sym @1908 + qpacketmodem_decode_syms @1909 + qpacketmodem_destroy @1910 + qpacketmodem_encode @1911 + qpacketmodem_encode_syms @1912 + qpacketmodem_get_crc @1913 + qpacketmodem_get_demodulator_evm @1914 + qpacketmodem_get_demodulator_phase_error @1915 + qpacketmodem_get_fec0 @1916 + qpacketmodem_get_fec1 @1917 + qpacketmodem_get_frame_len @1918 + qpacketmodem_get_modscheme @1919 + qpacketmodem_get_payload_len @1920 + qpacketmodem_print @1921 + qpacketmodem_reset @1922 + qpilotgen_create @1923 + qpilotgen_destroy @1924 + qpilotgen_execute @1925 + qpilotgen_get_frame_len @1926 + qpilotgen_print @1927 + qpilotgen_recreate @1928 + qpilotgen_reset @1929 + qpilotsync_create @1930 + qpilotsync_destroy @1931 + qpilotsync_execute @1932 + qpilotsync_get_dphi @1933 + qpilotsync_get_frame_len @1934 + qpilotsync_get_gain @1935 + qpilotsync_get_phi @1936 + qpilotsync_print @1937 + qpilotsync_recreate @1938 + qpilotsync_reset @1939 + qsourcecf_create_modem @1940 + qsourcecf_create_noise @1941 + qsourcecf_create_tone @1942 + qsourcecf_destroy @1943 + qsourcecf_disable @1944 + qsourcecf_enable @1945 + qsourcecf_gen_sample @1946 + qsourcecf_get_frequency @1947 + qsourcecf_get_gain @1948 + qsourcecf_print @1949 + qsourcecf_reset @1950 + qsourcecf_set_frequency @1951 + qsourcecf_set_gain @1952 + quantize_adc @1953 + quantize_dac @1954 + quantizercf_create @1955 + quantizercf_destroy @1956 + quantizercf_execute_adc @1957 + quantizercf_execute_dac @1958 + quantizercf_print @1959 + quantizerf_create @1960 + quantizerf_destroy @1961 + quantizerf_execute_adc @1962 + quantizerf_execute_dac @1963 + quantizerf_print @1964 + randexpf @1965 + randexpf_cdf @1966 + randexpf_pdf @1967 + randf @1968 + randf_cdf @1969 + randf_pdf @1970 + randgammaf @1971 + randgammaf_cdf @1972 + randgammaf_delta @1973 + randgammaf_pdf @1974 + randnakmf @1975 + randnakmf_cdf @1976 + randnakmf_pdf @1977 + randnf @1978 + randnf_cdf @1979 + randnf_pdf @1980 + randricekf @1981 + randricekf_cdf @1982 + randricekf_pdf @1983 + randuf @1984 + randuf_cdf @1985 + randuf_pdf @1986 + randweibf @1987 + randweibf_cdf @1988 + randweibf_pdf @1989 + resamp2_cccf_analyzer_execute @1990 + resamp2_cccf_create @1991 + resamp2_cccf_decim_execute @1992 + resamp2_cccf_destroy @1993 + resamp2_cccf_filter_execute @1994 + resamp2_cccf_get_delay @1995 + resamp2_cccf_interp_execute @1996 + resamp2_cccf_print @1997 + resamp2_cccf_recreate @1998 + resamp2_cccf_reset @1999 + resamp2_cccf_synthesizer_execute @2000 + resamp2_crcf_analyzer_execute @2001 + resamp2_crcf_create @2002 + resamp2_crcf_decim_execute @2003 + resamp2_crcf_destroy @2004 + resamp2_crcf_filter_execute @2005 + resamp2_crcf_get_delay @2006 + resamp2_crcf_interp_execute @2007 + resamp2_crcf_print @2008 + resamp2_crcf_recreate @2009 + resamp2_crcf_reset @2010 + resamp2_crcf_synthesizer_execute @2011 + resamp2_rrrf_analyzer_execute @2012 + resamp2_rrrf_create @2013 + resamp2_rrrf_decim_execute @2014 + resamp2_rrrf_destroy @2015 + resamp2_rrrf_filter_execute @2016 + resamp2_rrrf_get_delay @2017 + resamp2_rrrf_interp_execute @2018 + resamp2_rrrf_print @2019 + resamp2_rrrf_recreate @2020 + resamp2_rrrf_reset @2021 + resamp2_rrrf_synthesizer_execute @2022 + resamp_cccf_adjust_rate @2023 + resamp_cccf_adjust_timing_phase @2024 + resamp_cccf_create @2025 + resamp_cccf_create_default @2026 + resamp_cccf_destroy @2027 + resamp_cccf_execute @2028 + resamp_cccf_execute_block @2029 + resamp_cccf_get_delay @2030 + resamp_cccf_get_rate @2031 + resamp_cccf_print @2032 + resamp_cccf_reset @2033 + resamp_cccf_set_rate @2034 + resamp_cccf_set_timing_phase @2035 + resamp_crcf_adjust_rate @2036 + resamp_crcf_adjust_timing_phase @2037 + resamp_crcf_create @2038 + resamp_crcf_create_default @2039 + resamp_crcf_destroy @2040 + resamp_crcf_execute @2041 + resamp_crcf_execute_block @2042 + resamp_crcf_get_delay @2043 + resamp_crcf_get_rate @2044 + resamp_crcf_print @2045 + resamp_crcf_reset @2046 + resamp_crcf_set_rate @2047 + resamp_crcf_set_timing_phase @2048 + resamp_rrrf_adjust_rate @2049 + resamp_rrrf_adjust_timing_phase @2050 + resamp_rrrf_create @2051 + resamp_rrrf_create_default @2052 + resamp_rrrf_destroy @2053 + resamp_rrrf_execute @2054 + resamp_rrrf_execute_block @2055 + resamp_rrrf_get_delay @2056 + resamp_rrrf_get_rate @2057 + resamp_rrrf_print @2058 + resamp_rrrf_reset @2059 + resamp_rrrf_set_rate @2060 + resamp_rrrf_set_timing_phase @2061 + rkaiser_approximate_rho @2062 + rresamp_cccf_create @2063 + rresamp_cccf_create_default @2064 + rresamp_cccf_destroy @2065 + rresamp_cccf_execute @2066 + rresamp_cccf_get_decim @2067 + rresamp_cccf_get_delay @2068 + rresamp_cccf_get_interp @2069 + rresamp_cccf_get_rate @2070 + rresamp_cccf_get_scale @2071 + rresamp_cccf_print @2072 + rresamp_cccf_reset @2073 + rresamp_cccf_set_scale @2074 + rresamp_crcf_create @2075 + rresamp_crcf_create_default @2076 + rresamp_crcf_destroy @2077 + rresamp_crcf_execute @2078 + rresamp_crcf_get_decim @2079 + rresamp_crcf_get_delay @2080 + rresamp_crcf_get_interp @2081 + rresamp_crcf_get_rate @2082 + rresamp_crcf_get_scale @2083 + rresamp_crcf_print @2084 + rresamp_crcf_reset @2085 + rresamp_crcf_set_scale @2086 + rresamp_rrrf_create @2087 + rresamp_rrrf_create_default @2088 + rresamp_rrrf_destroy @2089 + rresamp_rrrf_execute @2090 + rresamp_rrrf_get_decim @2091 + rresamp_rrrf_get_delay @2092 + rresamp_rrrf_get_interp @2093 + rresamp_rrrf_get_rate @2094 + rresamp_rrrf_get_scale @2095 + rresamp_rrrf_print @2096 + rresamp_rrrf_reset @2097 + rresamp_rrrf_set_scale @2098 + scramble_data @2099 + secded2216_P @2100 DATA + secded2216_syndrome_w1 @2101 DATA + secded3932_P @2102 DATA + secded3932_syndrome_w1 @2103 DATA + secded7264_P @2104 DATA + secded7264_syndrome_w1 @2105 DATA + sincf @2106 + smatrix_indexsearch @2107 + smatrixb_clear @2108 + smatrixb_create @2109 + smatrixb_create_array @2110 + smatrixb_delete @2111 + smatrixb_destroy @2112 + smatrixb_eye @2113 + smatrixb_get @2114 + smatrixb_insert @2115 + smatrixb_isset @2116 + smatrixb_mul @2117 + smatrixb_mulf @2118 + smatrixb_print @2119 + smatrixb_print_expanded @2120 + smatrixb_reset @2121 + smatrixb_reset_max_mlist @2122 + smatrixb_reset_max_nlist @2123 + smatrixb_set @2124 + smatrixb_size @2125 + smatrixb_vmul @2126 + smatrixb_vmulf @2127 + smatrixf_clear @2128 + smatrixf_create @2129 + smatrixf_create_array @2130 + smatrixf_delete @2131 + smatrixf_destroy @2132 + smatrixf_eye @2133 + smatrixf_get @2134 + smatrixf_insert @2135 + smatrixf_isset @2136 + smatrixf_mul @2137 + smatrixf_print @2138 + smatrixf_print_expanded @2139 + smatrixf_reset @2140 + smatrixf_reset_max_mlist @2141 + smatrixf_reset_max_nlist @2142 + smatrixf_set @2143 + smatrixf_size @2144 + smatrixf_vmul @2145 + smatrixi_clear @2146 + smatrixi_create @2147 + smatrixi_create_array @2148 + smatrixi_delete @2149 + smatrixi_destroy @2150 + smatrixi_eye @2151 + smatrixi_get @2152 + smatrixi_insert @2153 + smatrixi_isset @2154 + smatrixi_mul @2155 + smatrixi_print @2156 + smatrixi_print_expanded @2157 + smatrixi_reset @2158 + smatrixi_reset_max_mlist @2159 + smatrixi_reset_max_nlist @2160 + smatrixi_set @2161 + smatrixi_size @2162 + smatrixi_vmul @2163 + spgramcf_clear @2164 + spgramcf_create @2165 + spgramcf_create_default @2166 + spgramcf_destroy @2167 + spgramcf_estimate_psd @2168 + spgramcf_export_gnuplot @2169 + spgramcf_get_delay @2170 + spgramcf_get_nfft @2171 + spgramcf_get_num_samples @2172 + spgramcf_get_num_samples_total @2173 + spgramcf_get_num_transforms @2174 + spgramcf_get_num_transforms_total @2175 + spgramcf_get_psd @2176 + spgramcf_get_window_len @2177 + spgramcf_print @2178 + spgramcf_push @2179 + spgramcf_reset @2180 + spgramcf_set_alpha @2181 + spgramcf_set_freq @2182 + spgramcf_set_rate @2183 + spgramcf_step @2184 + spgramcf_write @2185 + spgramf_clear @2186 + spgramf_create @2187 + spgramf_create_default @2188 + spgramf_destroy @2189 + spgramf_estimate_psd @2190 + spgramf_export_gnuplot @2191 + spgramf_get_delay @2192 + spgramf_get_nfft @2193 + spgramf_get_num_samples @2194 + spgramf_get_num_samples_total @2195 + spgramf_get_num_transforms @2196 + spgramf_get_num_transforms_total @2197 + spgramf_get_psd @2198 + spgramf_get_window_len @2199 + spgramf_print @2200 + spgramf_push @2201 + spgramf_reset @2202 + spgramf_set_alpha @2203 + spgramf_set_freq @2204 + spgramf_set_rate @2205 + spgramf_step @2206 + spgramf_write @2207 + spwaterfallcf_clear @2208 + spwaterfallcf_consolidate_buffer @2209 + spwaterfallcf_create @2210 + spwaterfallcf_create_default @2211 + spwaterfallcf_destroy @2212 + spwaterfallcf_export @2213 + spwaterfallcf_export_bin @2214 + spwaterfallcf_export_gnu @2215 + spwaterfallcf_print @2216 + spwaterfallcf_push @2217 + spwaterfallcf_reset @2218 + spwaterfallcf_set_commands @2219 + spwaterfallcf_set_dims @2220 + spwaterfallcf_set_freq @2221 + spwaterfallcf_set_rate @2222 + spwaterfallcf_step @2223 + spwaterfallcf_write @2224 + spwaterfallf_clear @2225 + spwaterfallf_consolidate_buffer @2226 + spwaterfallf_create @2227 + spwaterfallf_create_default @2228 + spwaterfallf_destroy @2229 + spwaterfallf_export @2230 + spwaterfallf_export_bin @2231 + spwaterfallf_export_gnu @2232 + spwaterfallf_print @2233 + spwaterfallf_push @2234 + spwaterfallf_reset @2235 + spwaterfallf_set_commands @2236 + spwaterfallf_set_dims @2237 + spwaterfallf_set_freq @2238 + spwaterfallf_set_rate @2239 + spwaterfallf_step @2240 + spwaterfallf_write @2241 + sumproduct_phi @2242 + symstreamcf_create @2243 + symstreamcf_create_linear @2244 + symstreamcf_destroy @2245 + symstreamcf_fill_buffer @2246 + symstreamcf_get_gain @2247 + symstreamcf_get_scheme @2248 + symstreamcf_print @2249 + symstreamcf_reset @2250 + symstreamcf_set_gain @2251 + symstreamcf_set_scheme @2252 + symstreamcf_write_samples @2253 + symsync_crcf_advance_internal_loop @2254 + symsync_crcf_create @2255 + symsync_crcf_create_kaiser @2256 + symsync_crcf_create_rnyquist @2257 + symsync_crcf_destroy @2258 + symsync_crcf_execute @2259 + symsync_crcf_get_tau @2260 + symsync_crcf_lock @2261 + symsync_crcf_output_debug_file @2262 + symsync_crcf_print @2263 + symsync_crcf_reset @2264 + symsync_crcf_set_lf_bw @2265 + symsync_crcf_set_output_rate @2266 + symsync_crcf_step @2267 + symsync_crcf_unlock @2268 + symsync_rrrf_advance_internal_loop @2269 + symsync_rrrf_create @2270 + symsync_rrrf_create_kaiser @2271 + symsync_rrrf_create_rnyquist @2272 + symsync_rrrf_destroy @2273 + symsync_rrrf_execute @2274 + symsync_rrrf_get_tau @2275 + symsync_rrrf_lock @2276 + symsync_rrrf_output_debug_file @2277 + symsync_rrrf_print @2278 + symsync_rrrf_reset @2279 + symsync_rrrf_set_lf_bw @2280 + symsync_rrrf_set_output_rate @2281 + symsync_rrrf_step @2282 + symsync_rrrf_unlock @2283 + symtrack_cccf_adjust_phase @2284 + symtrack_cccf_create @2285 + symtrack_cccf_create_default @2286 + symtrack_cccf_destroy @2287 + symtrack_cccf_execute @2288 + symtrack_cccf_execute_block @2289 + symtrack_cccf_print @2290 + symtrack_cccf_reset @2291 + symtrack_cccf_set_bandwidth @2292 + symtrack_cccf_set_modscheme @2293 + synth_crcf_adjust_frequency @2294 + synth_crcf_adjust_phase @2295 + synth_crcf_compute_synth @2296 + synth_crcf_constrain_frequency @2297 + synth_crcf_constrain_phase @2298 + synth_crcf_create @2299 + synth_crcf_despread @2300 + synth_crcf_despread_triple @2301 + synth_crcf_destroy @2302 + synth_crcf_get_current @2303 + synth_crcf_get_frequency @2304 + synth_crcf_get_half_next @2305 + synth_crcf_get_half_previous @2306 + synth_crcf_get_length @2307 + synth_crcf_get_phase @2308 + synth_crcf_mix_block_down @2309 + synth_crcf_mix_block_up @2310 + synth_crcf_mix_down @2311 + synth_crcf_mix_up @2312 + synth_crcf_pll_reset @2313 + synth_crcf_pll_set_bandwidth @2314 + synth_crcf_pll_step @2315 + synth_crcf_reset @2316 + synth_crcf_set_frequency @2317 + synth_crcf_set_phase @2318 + synth_crcf_spread @2319 + synth_crcf_step @2320 + triangular @2321 + tvmpch_cccf_create @2322 + tvmpch_cccf_destroy @2323 + tvmpch_cccf_execute @2324 + tvmpch_cccf_execute_block @2325 + tvmpch_cccf_print @2326 + tvmpch_cccf_push @2327 + tvmpch_cccf_reset @2328 + unscramble_data @2329 + unscramble_data_soft @2330 + wdelaycf_create @2331 + wdelaycf_destroy @2332 + wdelaycf_print @2333 + wdelaycf_push @2334 + wdelaycf_read @2335 + wdelaycf_recreate @2336 + wdelaycf_reset @2337 + wdelayf_create @2338 + wdelayf_destroy @2339 + wdelayf_print @2340 + wdelayf_push @2341 + wdelayf_read @2342 + wdelayf_recreate @2343 + wdelayf_reset @2344 + windowcf_create @2345 + windowcf_debug_print @2346 + windowcf_destroy @2347 + windowcf_index @2348 + windowcf_print @2349 + windowcf_push @2350 + windowcf_read @2351 + windowcf_recreate @2352 + windowcf_reset @2353 + windowcf_write @2354 + windowf_create @2355 + windowf_debug_print @2356 + windowf_destroy @2357 + windowf_index @2358 + windowf_print @2359 + windowf_push @2360 + windowf_read @2361 + windowf_recreate @2362 + windowf_reset @2363 + windowf_write @2364 diff --git a/external/liquid-dsp/msvc/32/libliquid.dll b/external/liquid-dsp/msvc/32/libliquid.dll index 1ea3226..bee5bbe 100644 Binary files a/external/liquid-dsp/msvc/32/libliquid.dll and b/external/liquid-dsp/msvc/32/libliquid.dll differ diff --git a/external/liquid-dsp/msvc/32/libliquid.lib b/external/liquid-dsp/msvc/32/libliquid.lib index 1c995fb..b0e2fc2 100644 Binary files a/external/liquid-dsp/msvc/32/libliquid.lib and b/external/liquid-dsp/msvc/32/libliquid.lib differ diff --git a/external/liquid-dsp/msvc/64/libliquid.a b/external/liquid-dsp/msvc/64/libliquid.a deleted file mode 100644 index d23ea94..0000000 Binary files a/external/liquid-dsp/msvc/64/libliquid.a and /dev/null differ diff --git a/external/liquid-dsp/msvc/64/libliquid.def b/external/liquid-dsp/msvc/64/libliquid.def index b270566..281365b 100644 --- a/external/liquid-dsp/msvc/64/libliquid.def +++ b/external/liquid-dsp/msvc/64/libliquid.def @@ -128,2031 +128,2238 @@ EXPORTS autocorr_cccf_print @127 autocorr_cccf_push @128 autocorr_cccf_reset @129 - autocorr_rrrf_create @130 - autocorr_rrrf_destroy @131 - autocorr_rrrf_execute @132 - autocorr_rrrf_execute_block @133 - autocorr_rrrf_get_energy @134 - autocorr_rrrf_print @135 - autocorr_rrrf_push @136 - autocorr_rrrf_reset @137 - awgn @138 - bessel_azpkf @139 - bilinear_zpkf @140 - blackmanharris @141 - blackmanharris7 @142 - bpacketgen_assemble_header @143 - bpacketgen_assemble_pnsequence @144 - bpacketgen_compute_packet_len @145 - bpacketgen_create @146 - bpacketgen_destroy @147 - bpacketgen_encode @148 - bpacketgen_get_packet_len @149 - bpacketgen_print @150 - bpacketgen_recreate @151 - bpacketsync_assemble_pnsequence @152 - bpacketsync_create @153 - bpacketsync_decode_header @154 - bpacketsync_decode_payload @155 - bpacketsync_destroy @156 - bpacketsync_execute @157 - bpacketsync_execute_bit @158 - bpacketsync_execute_byte @159 - bpacketsync_execute_rxheader @160 - bpacketsync_execute_rxpayload @161 - bpacketsync_execute_seekpn @162 - bpacketsync_execute_sym @163 - bpacketsync_print @164 - bpacketsync_reconfig @165 - bpacketsync_reset @166 - bpresync_cccf_correlate @167 - bpresync_cccf_correlatex @168 - bpresync_cccf_create @169 - bpresync_cccf_destroy @170 - bpresync_cccf_print @171 - bpresync_cccf_push @172 - bpresync_cccf_reset @173 - bsequence_accumulate @174 - bsequence_add @175 - bsequence_circshift @176 - bsequence_correlate @177 - bsequence_create @178 - bsequence_create_ccodes @179 - bsequence_destroy @180 - bsequence_get_length @181 - bsequence_index @182 - bsequence_init @183 - bsequence_init_msequence @184 - bsequence_mul @185 - bsequence_print @186 - bsequence_push @187 - bsequence_reset @188 - bsync_cccf_correlate @189 - bsync_cccf_create @190 - bsync_cccf_create_msequence @191 - bsync_cccf_destroy @192 - bsync_cccf_print @193 - bsync_crcf_correlate @194 - bsync_crcf_create @195 - bsync_crcf_create_msequence @196 - bsync_crcf_destroy @197 - bsync_crcf_print @198 - bsync_rrrf_correlate @199 - bsync_rrrf_create @200 - bsync_rrrf_create_msequence @201 - bsync_rrrf_destroy @202 - bsync_rrrf_print @203 - butter_azpkf @204 - cawgn @205 - cbuffercf_create @206 - cbuffercf_create_max @207 - cbuffercf_debug_print @208 - cbuffercf_destroy @209 - cbuffercf_is_full @210 - cbuffercf_linearize @211 - cbuffercf_max_read @212 - cbuffercf_max_size @213 - cbuffercf_pop @214 - cbuffercf_print @215 - cbuffercf_push @216 - cbuffercf_read @217 - cbuffercf_release @218 - cbuffercf_reset @219 - cbuffercf_size @220 - cbuffercf_space_available @221 - cbuffercf_write @222 - cbufferf_create @223 - cbufferf_create_max @224 - cbufferf_debug_print @225 - cbufferf_destroy @226 - cbufferf_is_full @227 - cbufferf_linearize @228 - cbufferf_max_read @229 - cbufferf_max_size @230 - cbufferf_pop @231 - cbufferf_print @232 - cbufferf_push @233 - cbufferf_read @234 - cbufferf_release @235 - cbufferf_reset @236 - cbufferf_size @237 - cbufferf_space_available @238 - cbufferf_write @239 - channel_cccf_add_awgn @240 - channel_cccf_add_carrier_offset @241 - channel_cccf_add_multipath @242 - channel_cccf_add_shadowing @243 - channel_cccf_create @244 - channel_cccf_destroy @245 - channel_cccf_execute @246 - channel_cccf_execute_block @247 - channel_cccf_print @248 - cheby1_azpkf @249 - cheby2_azpkf @250 - checksum_generate_key @251 - chromosome_copy @252 - chromosome_create @253 - chromosome_create_basic @254 - chromosome_create_clone @255 - chromosome_crossover @256 - chromosome_destroy @257 - chromosome_get_num_traits @258 - chromosome_init @259 - chromosome_init_random @260 - chromosome_initf @261 - chromosome_mutate @262 - chromosome_print @263 - chromosome_printf @264 - chromosome_reset @265 - chromosome_value @266 - chromosome_valuef @267 - compress_cf_mulaw @268 - compress_mulaw @269 - count_bit_errors @270 - count_bit_errors_array @271 - cpfskdem_create @272 - cpfskdem_demodulate @273 - cpfskdem_demodulate_coherent @274 - cpfskdem_demodulate_noncoherent @275 - cpfskdem_destroy @276 - cpfskdem_get_delay @277 - cpfskdem_init_coherent @278 - cpfskdem_init_noncoherent @279 - cpfskdem_print @280 - cpfskdem_reset @281 - cpfskmod_create @282 - cpfskmod_destroy @283 - cpfskmod_firdes @284 - cpfskmod_get_delay @285 - cpfskmod_modulate @286 - cpfskmod_print @287 - cpfskmod_reset @288 - crandnf @289 - crc16_generate_key @290 - crc24_generate_key @291 - crc32_generate_key @292 - crc8_generate_key @293 - crc_append_key @294 - crc_check_key @295 - crc_generate_key @296 - crc_get_length @297 - crc_scheme_str @298 DATA - crc_sizeof_key @299 - crc_validate_message @300 - cvsd_create @301 - cvsd_decode @302 - cvsd_decode8 @303 - cvsd_destroy @304 - cvsd_encode @305 - cvsd_encode8 @306 - cvsd_print @307 - detector_cccf_compute_dotprods @308 - detector_cccf_correlate @309 - detector_cccf_create @310 - detector_cccf_debug_print @311 - detector_cccf_destroy @312 - detector_cccf_estimate_offsets @313 - detector_cccf_print @314 - detector_cccf_reset @315 - detector_cccf_update_sumsq @316 - dotprod_cccf_create @317 - dotprod_cccf_destroy @318 - dotprod_cccf_execute @319 - dotprod_cccf_execute_mmx @320 - dotprod_cccf_execute_mmx4 @321 - dotprod_cccf_print @322 - dotprod_cccf_recreate @323 - dotprod_cccf_run @324 - dotprod_cccf_run4 @325 - dotprod_crcf_create @326 - dotprod_crcf_destroy @327 - dotprod_crcf_execute @328 - dotprod_crcf_execute_mmx @329 - dotprod_crcf_execute_mmx4 @330 - dotprod_crcf_print @331 - dotprod_crcf_recreate @332 - dotprod_crcf_run @333 - dotprod_crcf_run4 @334 - dotprod_rrrf_create @335 - dotprod_rrrf_destroy @336 - dotprod_rrrf_execute @337 - dotprod_rrrf_execute_mmx @338 - dotprod_rrrf_execute_mmx4 @339 - dotprod_rrrf_print @340 - dotprod_rrrf_recreate @341 - dotprod_rrrf_run @342 - dotprod_rrrf_run4 @343 - ellip_acdf @344 - ellip_asnf @345 - ellip_azpkf @346 - ellip_cdf @347 - ellip_snf @348 - ellipdegf @349 - ellipkf @350 - eqlms_cccf_create @351 - eqlms_cccf_create_lowpass @352 - eqlms_cccf_create_rnyquist @353 - eqlms_cccf_destroy @354 - eqlms_cccf_execute @355 - eqlms_cccf_execute_block @356 - eqlms_cccf_get_bw @357 - eqlms_cccf_get_weights @358 - eqlms_cccf_print @359 - eqlms_cccf_push @360 - eqlms_cccf_push_block @361 - eqlms_cccf_recreate @362 - eqlms_cccf_reset @363 - eqlms_cccf_set_bw @364 - eqlms_cccf_step @365 - eqlms_cccf_step_blind @366 - eqlms_cccf_train @367 - eqlms_cccf_update_sumsq @368 - eqlms_rrrf_create @369 - eqlms_rrrf_create_lowpass @370 - eqlms_rrrf_create_rnyquist @371 - eqlms_rrrf_destroy @372 - eqlms_rrrf_execute @373 - eqlms_rrrf_execute_block @374 - eqlms_rrrf_get_bw @375 - eqlms_rrrf_get_weights @376 - eqlms_rrrf_print @377 - eqlms_rrrf_push @378 - eqlms_rrrf_push_block @379 - eqlms_rrrf_recreate @380 - eqlms_rrrf_reset @381 - eqlms_rrrf_set_bw @382 - eqlms_rrrf_step @383 - eqlms_rrrf_step_blind @384 - eqlms_rrrf_train @385 - eqlms_rrrf_update_sumsq @386 - eqrls_cccf_create @387 - eqrls_cccf_destroy @388 - eqrls_cccf_execute @389 - eqrls_cccf_get_bw @390 - eqrls_cccf_get_weights @391 - eqrls_cccf_print @392 - eqrls_cccf_push @393 - eqrls_cccf_recreate @394 - eqrls_cccf_reset @395 - eqrls_cccf_set_bw @396 - eqrls_cccf_step @397 - eqrls_cccf_train @398 - eqrls_rrrf_create @399 - eqrls_rrrf_destroy @400 - eqrls_rrrf_execute @401 - eqrls_rrrf_get_bw @402 - eqrls_rrrf_get_weights @403 - eqrls_rrrf_print @404 - eqrls_rrrf_push @405 - eqrls_rrrf_recreate @406 - eqrls_rrrf_reset @407 - eqrls_rrrf_set_bw @408 - eqrls_rrrf_step @409 - eqrls_rrrf_train @410 - estimate_req_filter_As @411 - estimate_req_filter_df @412 - estimate_req_filter_len @413 - estimate_req_filter_len_Herrmann @414 - estimate_req_filter_len_Kaiser @415 - expand_cf_mulaw @416 - expand_mulaw @417 - fec_block_get_enc_msg_len @418 - fec_conv27_poly @419 DATA - fec_conv27p23_matrix @420 DATA - fec_conv27p34_matrix @421 DATA - fec_conv27p45_matrix @422 DATA - fec_conv27p56_matrix @423 DATA - fec_conv27p67_matrix @424 DATA - fec_conv27p78_matrix @425 DATA - fec_conv29_poly @426 DATA - fec_conv29p23_matrix @427 DATA - fec_conv29p34_matrix @428 DATA - fec_conv29p45_matrix @429 DATA - fec_conv29p56_matrix @430 DATA - fec_conv29p67_matrix @431 DATA - fec_conv29p78_matrix @432 DATA - fec_conv39_poly @433 DATA - fec_conv615_poly @434 DATA - fec_conv_create @435 - fec_conv_destroy @436 - fec_conv_get_enc_msg_len @437 - fec_conv_punctured_create @438 - fec_conv_punctured_decode @439 - fec_conv_punctured_destroy @440 - fec_conv_punctured_encode @441 - fec_create @442 - fec_decode @443 - fec_decode_soft @444 - fec_destroy @445 - fec_encode @446 - fec_get_enc_msg_length @447 - fec_get_rate @448 - fec_golay2412_create @449 - fec_golay2412_decode @450 - fec_golay2412_decode_symbol @451 - fec_golay2412_destroy @452 - fec_golay2412_encode @453 - fec_golay2412_encode_symbol @454 - fec_hamming128_create @455 - fec_hamming128_decode @456 - fec_hamming128_decode_soft @457 - fec_hamming128_decode_symbol @458 - fec_hamming128_destroy @459 - fec_hamming128_encode @460 - fec_hamming128_encode_symbol @461 - fec_hamming1511_decode_symbol @462 - fec_hamming1511_encode_symbol @463 - fec_hamming3126_decode_symbol @464 - fec_hamming3126_encode_symbol @465 - fec_hamming74_create @466 - fec_hamming74_decode @467 - fec_hamming74_decode_soft @468 - fec_hamming74_destroy @469 - fec_hamming74_encode @470 - fec_hamming84_create @471 - fec_hamming84_decode @472 - fec_hamming84_decode_soft @473 - fec_hamming84_destroy @474 - fec_hamming84_encode @475 - fec_pass_create @476 - fec_pass_decode @477 - fec_pass_destroy @478 - fec_pass_encode @479 - fec_pass_print @480 - fec_print @481 - fec_recreate @482 - fec_rep3_create @483 - fec_rep3_decode @484 - fec_rep3_decode_soft @485 - fec_rep3_destroy @486 - fec_rep3_encode @487 - fec_rep3_print @488 - fec_rep5_create @489 - fec_rep5_decode @490 - fec_rep5_decode_soft @491 - fec_rep5_destroy @492 - fec_rep5_encode @493 - fec_rep5_print @494 - fec_rs_create @495 - fec_rs_decode @496 - fec_rs_destroy @497 - fec_rs_encode @498 - fec_rs_get_enc_msg_len @499 - fec_scheme_is_convolutional @500 - fec_scheme_is_hamming @501 - fec_scheme_is_punctured @502 - fec_scheme_is_reedsolomon @503 - fec_scheme_is_repeat @504 - fec_scheme_str @505 DATA - fec_secded2216_compute_parity @506 - fec_secded2216_compute_syndrome @507 - fec_secded2216_create @508 - fec_secded2216_decode @509 - fec_secded2216_decode_symbol @510 - fec_secded2216_destroy @511 - fec_secded2216_encode @512 - fec_secded2216_encode_symbol @513 - fec_secded2216_estimate_ehat @514 - fec_secded3932_compute_parity @515 - fec_secded3932_compute_syndrome @516 - fec_secded3932_create @517 - fec_secded3932_decode @518 - fec_secded3932_decode_symbol @519 - fec_secded3932_destroy @520 - fec_secded3932_encode @521 - fec_secded3932_encode_symbol @522 - fec_secded3932_estimate_ehat @523 - fec_secded7264_compute_parity @524 - fec_secded7264_compute_syndrome @525 - fec_secded7264_create @526 - fec_secded7264_decode @527 - fec_secded7264_decode_symbol @528 - fec_secded7264_destroy @529 - fec_secded7264_encode @530 - fec_secded7264_encode_symbol @531 - fec_secded7264_estimate_ehat @532 - fec_sumproduct @533 - fec_sumproduct_step @534 - fecsoft_hamming128_decode @535 - fecsoft_hamming128_decode_n3 @536 - fecsoft_hamming128_n3 @537 DATA - fecsoft_hamming74_decode @538 - fecsoft_hamming84_decode @539 - fft_create_plan @540 - fft_create_plan_dft @541 - fft_create_plan_mixed_radix @542 - fft_create_plan_r2r_1d @543 - fft_create_plan_rader @544 - fft_create_plan_rader2 @545 - fft_create_plan_radix2 @546 - fft_destroy_plan @547 - fft_destroy_plan_dft @548 - fft_destroy_plan_mixed_radix @549 - fft_destroy_plan_r2r_1d @550 - fft_destroy_plan_rader @551 - fft_destroy_plan_rader2 @552 - fft_destroy_plan_radix2 @553 - fft_estimate_mixed_radix @554 - fft_execute @555 - fft_execute_REDFT00 @556 - fft_execute_REDFT01 @557 - fft_execute_REDFT10 @558 - fft_execute_REDFT11 @559 - fft_execute_RODFT00 @560 - fft_execute_RODFT01 @561 - fft_execute_RODFT10 @562 - fft_execute_RODFT11 @563 - fft_execute_dft @564 - fft_execute_dft_16 @565 - fft_execute_dft_2 @566 - fft_execute_dft_3 @567 - fft_execute_dft_4 @568 - fft_execute_dft_5 @569 - fft_execute_dft_6 @570 - fft_execute_dft_7 @571 - fft_execute_dft_8 @572 - fft_execute_mixed_radix @573 - fft_execute_rader @574 - fft_execute_rader2 @575 - fft_execute_radix2 @576 - fft_is_radix2 @577 - fft_print_plan @578 - fft_print_plan_r2r_1d @579 - fft_print_plan_recursive @580 - fft_r2r_1d_run @581 - fft_reverse_index @582 - fft_run @583 - fft_shift @584 - fftfilt_cccf_create @585 - fftfilt_cccf_destroy @586 - fftfilt_cccf_execute @587 - fftfilt_cccf_get_length @588 - fftfilt_cccf_print @589 - fftfilt_cccf_reset @590 - fftfilt_cccf_set_scale @591 - fftfilt_crcf_create @592 - fftfilt_crcf_destroy @593 - fftfilt_crcf_execute @594 - fftfilt_crcf_get_length @595 - fftfilt_crcf_print @596 - fftfilt_crcf_reset @597 - fftfilt_crcf_set_scale @598 - fftfilt_rrrf_create @599 - fftfilt_rrrf_destroy @600 - fftfilt_rrrf_execute @601 - fftfilt_rrrf_get_length @602 - fftfilt_rrrf_print @603 - fftfilt_rrrf_reset @604 - fftfilt_rrrf_set_scale @605 - fir_group_delay @606 - firdecim_cccf_create @607 - firdecim_cccf_create_kaiser @608 - firdecim_cccf_create_prototype @609 - firdecim_cccf_destroy @610 - firdecim_cccf_execute @611 - firdecim_cccf_execute_block @612 - firdecim_cccf_print @613 - firdecim_cccf_reset @614 - firdecim_crcf_create @615 - firdecim_crcf_create_kaiser @616 - firdecim_crcf_create_prototype @617 - firdecim_crcf_destroy @618 - firdecim_crcf_execute @619 - firdecim_crcf_execute_block @620 - firdecim_crcf_print @621 - firdecim_crcf_reset @622 - firdecim_rrrf_create @623 - firdecim_rrrf_create_kaiser @624 - firdecim_rrrf_create_prototype @625 - firdecim_rrrf_destroy @626 - firdecim_rrrf_execute @627 - firdecim_rrrf_execute_block @628 - firdecim_rrrf_print @629 - firdecim_rrrf_reset @630 - firdespm_compute_error @631 - firdespm_compute_interp @632 - firdespm_compute_taps @633 - firdespm_create @634 - firdespm_create_callback @635 - firdespm_destroy @636 - firdespm_execute @637 - firdespm_iext_search @638 - firdespm_init_grid @639 - firdespm_init_memory @640 - firdespm_is_search_complete @641 - firdespm_lowpass @642 - firdespm_print @643 - firdespm_run @644 - firfarrow_crcf_create @645 - firfarrow_crcf_destroy @646 - firfarrow_crcf_execute @647 - firfarrow_crcf_execute_block @648 - firfarrow_crcf_freqresponse @649 - firfarrow_crcf_genpoly @650 - firfarrow_crcf_get_coefficients @651 - firfarrow_crcf_get_length @652 - firfarrow_crcf_groupdelay @653 - firfarrow_crcf_print @654 - firfarrow_crcf_push @655 - firfarrow_crcf_reset @656 - firfarrow_crcf_set_delay @657 - firfarrow_rrrf_create @658 - firfarrow_rrrf_destroy @659 - firfarrow_rrrf_execute @660 - firfarrow_rrrf_execute_block @661 - firfarrow_rrrf_freqresponse @662 - firfarrow_rrrf_genpoly @663 - firfarrow_rrrf_get_coefficients @664 - firfarrow_rrrf_get_length @665 - firfarrow_rrrf_groupdelay @666 - firfarrow_rrrf_print @667 - firfarrow_rrrf_push @668 - firfarrow_rrrf_reset @669 - firfarrow_rrrf_set_delay @670 - firfilt_cccf_create @671 - firfilt_cccf_create_kaiser @672 - firfilt_cccf_create_rect @673 - firfilt_cccf_create_rnyquist @674 - firfilt_cccf_destroy @675 - firfilt_cccf_execute @676 - firfilt_cccf_execute_block @677 - firfilt_cccf_freqresponse @678 - firfilt_cccf_get_length @679 - firfilt_cccf_groupdelay @680 - firfilt_cccf_print @681 - firfilt_cccf_push @682 - firfilt_cccf_recreate @683 - firfilt_cccf_reset @684 - firfilt_cccf_set_scale @685 - firfilt_crcf_create @686 - firfilt_crcf_create_kaiser @687 - firfilt_crcf_create_rect @688 - firfilt_crcf_create_rnyquist @689 - firfilt_crcf_destroy @690 - firfilt_crcf_execute @691 - firfilt_crcf_execute_block @692 - firfilt_crcf_freqresponse @693 - firfilt_crcf_get_length @694 - firfilt_crcf_groupdelay @695 - firfilt_crcf_print @696 - firfilt_crcf_push @697 - firfilt_crcf_recreate @698 - firfilt_crcf_reset @699 - firfilt_crcf_set_scale @700 - firfilt_rrrf_create @701 - firfilt_rrrf_create_kaiser @702 - firfilt_rrrf_create_rect @703 - firfilt_rrrf_create_rnyquist @704 - firfilt_rrrf_destroy @705 - firfilt_rrrf_execute @706 - firfilt_rrrf_execute_block @707 - firfilt_rrrf_freqresponse @708 - firfilt_rrrf_get_length @709 - firfilt_rrrf_groupdelay @710 - firfilt_rrrf_print @711 - firfilt_rrrf_push @712 - firfilt_rrrf_recreate @713 - firfilt_rrrf_reset @714 - firfilt_rrrf_set_scale @715 - firhilbf_c2r_execute @716 - firhilbf_create @717 - firhilbf_decim_execute @718 - firhilbf_decim_execute_block @719 - firhilbf_destroy @720 - firhilbf_interp_execute @721 - firhilbf_interp_execute_block @722 - firhilbf_print @723 - firhilbf_r2c_execute @724 - firhilbf_reset @725 - firinterp_cccf_create @726 - firinterp_cccf_create_kaiser @727 - firinterp_cccf_create_prototype @728 - firinterp_cccf_destroy @729 - firinterp_cccf_execute @730 - firinterp_cccf_execute_block @731 - firinterp_cccf_print @732 - firinterp_cccf_reset @733 - firinterp_crcf_create @734 - firinterp_crcf_create_kaiser @735 - firinterp_crcf_create_prototype @736 - firinterp_crcf_destroy @737 - firinterp_crcf_execute @738 - firinterp_crcf_execute_block @739 - firinterp_crcf_print @740 - firinterp_crcf_reset @741 - firinterp_rrrf_create @742 - firinterp_rrrf_create_kaiser @743 - firinterp_rrrf_create_prototype @744 - firinterp_rrrf_destroy @745 - firinterp_rrrf_execute @746 - firinterp_rrrf_execute_block @747 - firinterp_rrrf_print @748 - firinterp_rrrf_reset @749 - firpfb_cccf_create @750 - firpfb_cccf_create_drnyquist @751 - firpfb_cccf_create_kaiser @752 - firpfb_cccf_create_rnyquist @753 - firpfb_cccf_destroy @754 - firpfb_cccf_execute @755 - firpfb_cccf_execute_block @756 - firpfb_cccf_print @757 - firpfb_cccf_push @758 - firpfb_cccf_recreate @759 - firpfb_cccf_reset @760 - firpfb_cccf_set_scale @761 - firpfb_crcf_create @762 - firpfb_crcf_create_drnyquist @763 - firpfb_crcf_create_kaiser @764 - firpfb_crcf_create_rnyquist @765 - firpfb_crcf_destroy @766 - firpfb_crcf_execute @767 - firpfb_crcf_execute_block @768 - firpfb_crcf_print @769 - firpfb_crcf_push @770 - firpfb_crcf_recreate @771 - firpfb_crcf_reset @772 - firpfb_crcf_set_scale @773 - firpfb_rrrf_create @774 - firpfb_rrrf_create_drnyquist @775 - firpfb_rrrf_create_kaiser @776 - firpfb_rrrf_create_rnyquist @777 - firpfb_rrrf_destroy @778 - firpfb_rrrf_execute @779 - firpfb_rrrf_execute_block @780 - firpfb_rrrf_print @781 - firpfb_rrrf_push @782 - firpfb_rrrf_recreate @783 - firpfb_rrrf_reset @784 - firpfb_rrrf_set_scale @785 - firpfbch2_crcf_create @786 - firpfbch2_crcf_create_kaiser @787 - firpfbch2_crcf_destroy @788 - firpfbch2_crcf_execute @789 - firpfbch2_crcf_execute_analyzer @790 - firpfbch2_crcf_execute_synthesizer @791 - firpfbch2_crcf_print @792 - firpfbch2_crcf_reset @793 - firpfbch_cccf_analyzer_execute @794 - firpfbch_cccf_analyzer_push @795 - firpfbch_cccf_analyzer_run @796 - firpfbch_cccf_create @797 - firpfbch_cccf_create_kaiser @798 - firpfbch_cccf_create_rnyquist @799 - firpfbch_cccf_destroy @800 - firpfbch_cccf_print @801 - firpfbch_cccf_reset @802 - firpfbch_cccf_synthesizer_execute @803 - firpfbch_crcf_analyzer_execute @804 - firpfbch_crcf_analyzer_push @805 - firpfbch_crcf_analyzer_run @806 - firpfbch_crcf_create @807 - firpfbch_crcf_create_kaiser @808 - firpfbch_crcf_create_rnyquist @809 - firpfbch_crcf_destroy @810 - firpfbch_crcf_print @811 - firpfbch_crcf_reset @812 - firpfbch_crcf_synthesizer_execute @813 - flattop @814 - flexframegen_assemble @815 - flexframegen_create @816 - flexframegen_destroy @817 - flexframegen_generate_header @818 - flexframegen_generate_payload @819 - flexframegen_generate_preamble @820 - flexframegen_generate_symbol @821 - flexframegen_generate_tail @822 - flexframegen_getframelen @823 - flexframegen_getprops @824 - flexframegen_is_assembled @825 - flexframegen_print @826 - flexframegen_reconfigure @827 - flexframegen_reset @828 - flexframegen_setprops @829 - flexframegen_write_samples @830 - flexframegenprops_init_default @831 - flexframesync_create @832 - flexframesync_debug_disable @833 - flexframesync_debug_enable @834 - flexframesync_debug_print @835 - flexframesync_decode_header @836 - flexframesync_destroy @837 - flexframesync_execute @838 - flexframesync_execute_rxheader @839 - flexframesync_execute_rxpayload @840 - flexframesync_execute_rxpreamble @841 - flexframesync_execute_seekpn @842 - flexframesync_get_framedatastats @843 - flexframesync_is_frame_open @844 - flexframesync_print @845 - flexframesync_reset @846 - flexframesync_reset_framedatastats @847 - flexframesync_step @848 - fpoly_bessel @849 - fpoly_bessel_roots @850 - fpoly_bessel_roots_orchard @851 - fpoly_bessel_roots_orchard_recursion @852 - framedatastats_print @853 - framedatastats_reset @854 - framegen64_create @855 - framegen64_destroy @856 - framegen64_execute @857 - framegen64_print @858 - framesync64_create @859 - framesync64_debug_disable @860 - framesync64_debug_enable @861 - framesync64_debug_print @862 - framesync64_destroy @863 - framesync64_execute @864 - framesync64_execute_rxpayload @865 - framesync64_execute_rxpreamble @866 - framesync64_execute_seekpn @867 - framesync64_print @868 - framesync64_reset @869 - framesync64_step @870 - framesyncstats_default @871 DATA - framesyncstats_init_default @872 - framesyncstats_print @873 - freqdem_create @874 - freqdem_demodulate @875 - freqdem_demodulate_block @876 - freqdem_destroy @877 - freqdem_print @878 - freqdem_reset @879 - freqmod_create @880 - freqmod_destroy @881 - freqmod_modulate @882 - freqmod_modulate_block @883 - freqmod_print @884 - freqmod_reset @885 - fskdem_create @886 - fskdem_demodulate @887 - fskdem_destroy @888 - fskdem_get_frequency_error @889 - fskdem_print @890 - fskdem_reset @891 - fskmod_create @892 - fskmod_destroy @893 - fskmod_modulate @894 - fskmod_print @895 - fskmod_reset @896 - gasearch_create @897 - gasearch_create_advanced @898 - gasearch_crossover @899 - gasearch_destroy @900 - gasearch_evaluate @901 - gasearch_evolve @902 - gasearch_getopt @903 - gasearch_mutate @904 - gasearch_print @905 - gasearch_rank @906 - gasearch_run @907 - gasearch_set_mutation_rate @908 - gasearch_set_population_size @909 - gmskdem_create @910 - gmskdem_debug_print @911 - gmskdem_demodulate @912 - gmskdem_destroy @913 - gmskdem_print @914 - gmskdem_reset @915 - gmskdem_set_eq_bw @916 - gmskframegen_assemble @917 - gmskframegen_create @918 - gmskframegen_destroy @919 - gmskframegen_encode_header @920 - gmskframegen_getframelen @921 - gmskframegen_is_assembled @922 - gmskframegen_print @923 - gmskframegen_reset @924 - gmskframegen_write_header @925 - gmskframegen_write_payload @926 - gmskframegen_write_preamble @927 - gmskframegen_write_samples @928 - gmskframegen_write_tail @929 - gmskframesync_create @930 - gmskframesync_debug_disable @931 - gmskframesync_debug_enable @932 - gmskframesync_debug_print @933 - gmskframesync_decode_header @934 - gmskframesync_destroy @935 - gmskframesync_execute @936 - gmskframesync_execute_detectframe @937 - gmskframesync_execute_rxheader @938 - gmskframesync_execute_rxpayload @939 - gmskframesync_execute_rxpreamble @940 - gmskframesync_execute_sample @941 - gmskframesync_is_frame_open @942 - gmskframesync_print @943 - gmskframesync_pushpn @944 - gmskframesync_reset @945 - gmskframesync_syncpn @946 - gmskframesync_update_fi @947 - gmskframesync_update_symsync @948 - gmskmod_create @949 - gmskmod_destroy @950 - gmskmod_modulate @951 - gmskmod_print @952 - gmskmod_reset @953 - golay2412_Gt @954 DATA - golay2412_H @955 DATA - golay2412_P @956 DATA - golay2412_matrix_mul @957 - golay2412_parity_search @958 - gradsearch_create @959 - gradsearch_destroy @960 - gradsearch_execute @961 - gradsearch_gradient @962 - gradsearch_linesearch @963 - gradsearch_norm @964 - gradsearch_print @965 - gradsearch_step @966 - gray_decode @967 - gray_encode @968 - hamming @969 - hamming128_enc_gentab @970 DATA - hamming74_dec_gentab @971 DATA - hamming74_enc_gentab @972 DATA - hamming84_dec_gentab @973 DATA - hamming84_enc_gentab @974 DATA - hann @975 - icrandnf @976 - iir_group_delay @977 - iirdecim_cccf_create @978 - iirdecim_cccf_create_default @979 - iirdecim_cccf_create_prototype @980 - iirdecim_cccf_destroy @981 - iirdecim_cccf_execute @982 - iirdecim_cccf_execute_block @983 - iirdecim_cccf_groupdelay @984 - iirdecim_cccf_print @985 - iirdecim_cccf_reset @986 - iirdecim_crcf_create @987 - iirdecim_crcf_create_default @988 - iirdecim_crcf_create_prototype @989 - iirdecim_crcf_destroy @990 - iirdecim_crcf_execute @991 - iirdecim_crcf_execute_block @992 - iirdecim_crcf_groupdelay @993 - iirdecim_crcf_print @994 - iirdecim_crcf_reset @995 - iirdecim_rrrf_create @996 - iirdecim_rrrf_create_default @997 - iirdecim_rrrf_create_prototype @998 - iirdecim_rrrf_destroy @999 - iirdecim_rrrf_execute @1000 - iirdecim_rrrf_execute_block @1001 - iirdecim_rrrf_groupdelay @1002 - iirdecim_rrrf_print @1003 - iirdecim_rrrf_reset @1004 - iirdes_dzpk2sosf @1005 - iirdes_dzpk2tff @1006 - iirdes_dzpk_lp2bp @1007 - iirdes_dzpk_lp2hp @1008 - iirdes_freqprewarp @1009 - iirdes_isstable @1010 - iirdes_pll_active_PI @1011 - iirdes_pll_active_lag @1012 - iirfilt_cccf_create @1013 - iirfilt_cccf_create_dc_blocker @1014 - iirfilt_cccf_create_differentiator @1015 - iirfilt_cccf_create_integrator @1016 - iirfilt_cccf_create_lowpass @1017 - iirfilt_cccf_create_pll @1018 - iirfilt_cccf_create_prototype @1019 - iirfilt_cccf_create_sos @1020 - iirfilt_cccf_destroy @1021 - iirfilt_cccf_execute @1022 - iirfilt_cccf_execute_block @1023 - iirfilt_cccf_execute_norm @1024 - iirfilt_cccf_execute_sos @1025 - iirfilt_cccf_freqresponse @1026 - iirfilt_cccf_get_length @1027 - iirfilt_cccf_groupdelay @1028 - iirfilt_cccf_init @1029 - iirfilt_cccf_print @1030 - iirfilt_cccf_reset @1031 - iirfilt_crcf_create @1032 - iirfilt_crcf_create_dc_blocker @1033 - iirfilt_crcf_create_differentiator @1034 - iirfilt_crcf_create_integrator @1035 - iirfilt_crcf_create_lowpass @1036 - iirfilt_crcf_create_pll @1037 - iirfilt_crcf_create_prototype @1038 - iirfilt_crcf_create_sos @1039 - iirfilt_crcf_destroy @1040 - iirfilt_crcf_execute @1041 - iirfilt_crcf_execute_block @1042 - iirfilt_crcf_execute_norm @1043 - iirfilt_crcf_execute_sos @1044 - iirfilt_crcf_freqresponse @1045 - iirfilt_crcf_get_length @1046 - iirfilt_crcf_groupdelay @1047 - iirfilt_crcf_init @1048 - iirfilt_crcf_print @1049 - iirfilt_crcf_reset @1050 - iirfilt_rrrf_create @1051 - iirfilt_rrrf_create_dc_blocker @1052 - iirfilt_rrrf_create_differentiator @1053 - iirfilt_rrrf_create_integrator @1054 - iirfilt_rrrf_create_lowpass @1055 - iirfilt_rrrf_create_pll @1056 - iirfilt_rrrf_create_prototype @1057 - iirfilt_rrrf_create_sos @1058 - iirfilt_rrrf_destroy @1059 - iirfilt_rrrf_execute @1060 - iirfilt_rrrf_execute_block @1061 - iirfilt_rrrf_execute_norm @1062 - iirfilt_rrrf_execute_sos @1063 - iirfilt_rrrf_freqresponse @1064 - iirfilt_rrrf_get_length @1065 - iirfilt_rrrf_groupdelay @1066 - iirfilt_rrrf_init @1067 - iirfilt_rrrf_print @1068 - iirfilt_rrrf_reset @1069 - iirfiltsos_cccf_create @1070 - iirfiltsos_cccf_destroy @1071 - iirfiltsos_cccf_execute @1072 - iirfiltsos_cccf_execute_df1 @1073 - iirfiltsos_cccf_execute_df2 @1074 - iirfiltsos_cccf_groupdelay @1075 - iirfiltsos_cccf_print @1076 - iirfiltsos_cccf_reset @1077 - iirfiltsos_cccf_set_coefficients @1078 - iirfiltsos_crcf_create @1079 - iirfiltsos_crcf_destroy @1080 - iirfiltsos_crcf_execute @1081 - iirfiltsos_crcf_execute_df1 @1082 - iirfiltsos_crcf_execute_df2 @1083 - iirfiltsos_crcf_groupdelay @1084 - iirfiltsos_crcf_print @1085 - iirfiltsos_crcf_reset @1086 - iirfiltsos_crcf_set_coefficients @1087 - iirfiltsos_rrrf_create @1088 - iirfiltsos_rrrf_destroy @1089 - iirfiltsos_rrrf_execute @1090 - iirfiltsos_rrrf_execute_df1 @1091 - iirfiltsos_rrrf_execute_df2 @1092 - iirfiltsos_rrrf_groupdelay @1093 - iirfiltsos_rrrf_print @1094 - iirfiltsos_rrrf_reset @1095 - iirfiltsos_rrrf_set_coefficients @1096 - iirinterp_cccf_create @1097 - iirinterp_cccf_create_default @1098 - iirinterp_cccf_create_prototype @1099 - iirinterp_cccf_destroy @1100 - iirinterp_cccf_execute @1101 - iirinterp_cccf_execute_block @1102 - iirinterp_cccf_groupdelay @1103 - iirinterp_cccf_print @1104 - iirinterp_cccf_reset @1105 - iirinterp_crcf_create @1106 - iirinterp_crcf_create_default @1107 - iirinterp_crcf_create_prototype @1108 - iirinterp_crcf_destroy @1109 - iirinterp_crcf_execute @1110 - iirinterp_crcf_execute_block @1111 - iirinterp_crcf_groupdelay @1112 - iirinterp_crcf_print @1113 - iirinterp_crcf_reset @1114 - iirinterp_rrrf_create @1115 - iirinterp_rrrf_create_default @1116 - iirinterp_rrrf_create_prototype @1117 - iirinterp_rrrf_destroy @1118 - iirinterp_rrrf_execute @1119 - iirinterp_rrrf_execute_block @1120 - iirinterp_rrrf_groupdelay @1121 - iirinterp_rrrf_print @1122 - iirinterp_rrrf_reset @1123 - interleaver_create @1124 - interleaver_decode @1125 - interleaver_decode_soft @1126 - interleaver_destroy @1127 - interleaver_encode @1128 - interleaver_encode_soft @1129 - interleaver_permute @1130 - interleaver_permute_mask @1131 - interleaver_permute_mask_soft @1132 - interleaver_permute_soft @1133 - interleaver_print @1134 - interleaver_set_depth @1135 - kaiser @1136 - kaiser_beta_As @1137 - landenf @1138 - liquid_MarcumQ1f @1139 - liquid_MarcumQf @1140 - liquid_Qf @1141 - liquid_apsk128 @1142 DATA - liquid_apsk16 @1143 DATA - liquid_apsk256 @1144 DATA - liquid_apsk32 @1145 DATA - liquid_apsk4 @1146 DATA - liquid_apsk64 @1147 DATA - liquid_apsk8 @1148 DATA - liquid_asechf @1149 - liquid_bdotprod @1150 - liquid_besseli0f @1151 - liquid_besselif @1152 - liquid_besselj0f @1153 - liquid_besseljf @1154 - liquid_c_leading_zeros @1155 DATA - liquid_c_ones @1156 DATA - liquid_c_ones_mod2 @1157 DATA - liquid_cacosf @1158 - liquid_cargf_approx @1159 - liquid_casinf @1160 - liquid_catanf @1161 - liquid_cexpf @1162 - liquid_clogf @1163 - liquid_cosf @1164 - liquid_count_leading_zeros @1165 - liquid_count_ones @1166 - liquid_count_ones_mod2 @1167 - liquid_cplxpair @1168 - liquid_cplxpair_cleanup @1169 - liquid_csqrtf @1170 - liquid_expf @1171 - liquid_factor @1172 - liquid_factorialf @1173 - liquid_fft_estimate_method @1174 - liquid_filter_autocorr @1175 - liquid_filter_crosscorr @1176 - liquid_filter_energy @1177 - liquid_filter_isi @1178 - liquid_firdes_arkaiser @1179 - liquid_firdes_doppler @1180 - liquid_firdes_farcsech @1181 - liquid_firdes_farcsech_freqresponse @1182 - liquid_firdes_fexp @1183 - liquid_firdes_fexp_freqresponse @1184 - liquid_firdes_fnyquist @1185 - liquid_firdes_fsech @1186 - liquid_firdes_fsech_freqresponse @1187 - liquid_firdes_gmskrx @1188 - liquid_firdes_gmsktx @1189 - liquid_firdes_hM3 @1190 - liquid_firdes_kaiser @1191 - liquid_firdes_prototype @1192 - liquid_firdes_rcos @1193 - liquid_firdes_rfarcsech @1194 - liquid_firdes_rfexp @1195 - liquid_firdes_rfsech @1196 - liquid_firdes_rkaiser @1197 - liquid_firdes_rkaiser_bisection @1198 - liquid_firdes_rkaiser_internal_isi @1199 - liquid_firdes_rkaiser_quadratic @1200 - liquid_firdes_rrcos @1201 - liquid_gammaf @1202 - liquid_getopt_str2crc @1203 - liquid_getopt_str2fec @1204 - liquid_getopt_str2firfilt @1205 - liquid_getopt_str2mod @1206 - liquid_getopt_str2window @1207 - liquid_iirdes @1208 - liquid_invgauss @1209 - liquid_is_prime @1210 - liquid_kbd @1211 - liquid_kbd_window @1212 - liquid_lbcircshift @1213 - liquid_lbshift @1214 - liquid_lcircshift @1215 - liquid_levinson @1216 - liquid_libversion @1217 - liquid_libversion_number @1218 - liquid_lnbesselif @1219 - liquid_lngammaf @1220 - liquid_lnlowergammaf @1221 - liquid_lnuppergammaf @1222 - liquid_logf @1223 - liquid_lowergammaf @1224 - liquid_lpc @1225 - liquid_lshift @1226 - liquid_modem_is_apsk @1227 - liquid_modem_is_ask @1228 - liquid_modem_is_dpsk @1229 - liquid_modem_is_psk @1230 - liquid_modem_is_qam @1231 - liquid_modpow @1232 - liquid_msb_index @1233 - liquid_multimodal @1234 - liquid_nchoosek @1235 - liquid_nextpow2 @1236 - liquid_pack_array @1237 - liquid_pack_bytes @1238 - liquid_pack_soft_bits @1239 - liquid_primitive_root @1240 - liquid_primitive_root_prime @1241 - liquid_print_bitstring @1242 - liquid_print_crc_schemes @1243 - liquid_print_fec_schemes @1244 - liquid_print_modulation_schemes @1245 - liquid_print_windows @1246 - liquid_rbcircshift @1247 - liquid_rbshift @1248 - liquid_rcircshift @1249 - liquid_rcostaper_windowf @1250 - liquid_repack_bytes @1251 - liquid_reverse_byte @1252 - liquid_reverse_byte_gentab @1253 DATA - liquid_reverse_uint16 @1254 - liquid_reverse_uint24 @1255 - liquid_reverse_uint32 @1256 - liquid_rosenbrock @1257 - liquid_rshift @1258 - liquid_sincosf @1259 - liquid_sinf @1260 - liquid_spiral @1261 - liquid_sumsqcf @1262 - liquid_sumsqf @1263 - liquid_tanf @1264 - liquid_totient @1265 - liquid_unique_factor @1266 - liquid_unpack_array @1267 - liquid_unpack_bytes @1268 - liquid_unpack_soft_bits @1269 - liquid_unwrap_phase @1270 - liquid_unwrap_phase2 @1271 - liquid_uppergammaf @1272 - liquid_vectorcf_abs @1273 - liquid_vectorcf_add @1274 - liquid_vectorcf_addscalar @1275 - liquid_vectorcf_carg @1276 - liquid_vectorcf_cexpj @1277 - liquid_vectorcf_mul @1278 - liquid_vectorcf_mulscalar @1279 - liquid_vectorcf_norm @1280 - liquid_vectorcf_normalize @1281 - liquid_vectorf_abs @1282 - liquid_vectorf_add @1283 - liquid_vectorf_addscalar @1284 - liquid_vectorf_carg @1285 - liquid_vectorf_cexpj @1286 - liquid_vectorf_mul @1287 - liquid_vectorf_mulscalar @1288 - liquid_vectorf_norm @1289 - liquid_vectorf_normalize @1290 - liquid_version @1291 DATA - liquid_window_str @1292 DATA - matrix_add @1293 - matrix_aug @1294 - matrix_cgsolve @1295 - matrix_chol @1296 - matrix_det @1297 - matrix_det2x2 @1298 - matrix_div @1299 - matrix_eye @1300 - matrix_gjelim @1301 - matrix_gramschmidt @1302 - matrix_hermitian @1303 - matrix_hermitian_mul @1304 - matrix_inv @1305 - matrix_linsolve @1306 - matrix_ludecomp_crout @1307 - matrix_ludecomp_doolittle @1308 - matrix_mul @1309 - matrix_mul_hermitian @1310 - matrix_mul_transpose @1311 - matrix_ones @1312 - matrix_pdiv @1313 - matrix_pivot @1314 - matrix_pmul @1315 - matrix_print @1316 - matrix_proj @1317 - matrix_qrdecomp_gramschmidt @1318 - matrix_sub @1319 - matrix_swaprows @1320 - matrix_trans @1321 - matrix_transpose_mul @1322 - matrix_zeros @1323 - matrixc_add @1324 - matrixc_aug @1325 - matrixc_cgsolve @1326 - matrixc_chol @1327 - matrixc_det @1328 - matrixc_det2x2 @1329 - matrixc_div @1330 - matrixc_eye @1331 - matrixc_gjelim @1332 - matrixc_gramschmidt @1333 - matrixc_hermitian @1334 - matrixc_hermitian_mul @1335 - matrixc_inv @1336 - matrixc_linsolve @1337 - matrixc_ludecomp_crout @1338 - matrixc_ludecomp_doolittle @1339 - matrixc_mul @1340 - matrixc_mul_hermitian @1341 - matrixc_mul_transpose @1342 - matrixc_ones @1343 - matrixc_pdiv @1344 - matrixc_pivot @1345 - matrixc_pmul @1346 - matrixc_print @1347 - matrixc_proj @1348 - matrixc_qrdecomp_gramschmidt @1349 - matrixc_sub @1350 - matrixc_swaprows @1351 - matrixc_trans @1352 - matrixc_transpose_mul @1353 - matrixc_zeros @1354 - matrixcf_add @1355 - matrixcf_aug @1356 - matrixcf_cgsolve @1357 - matrixcf_chol @1358 - matrixcf_det @1359 - matrixcf_det2x2 @1360 - matrixcf_div @1361 - matrixcf_eye @1362 - matrixcf_gjelim @1363 - matrixcf_gramschmidt @1364 - matrixcf_hermitian @1365 - matrixcf_hermitian_mul @1366 - matrixcf_inv @1367 - matrixcf_linsolve @1368 - matrixcf_ludecomp_crout @1369 - matrixcf_ludecomp_doolittle @1370 - matrixcf_mul @1371 - matrixcf_mul_hermitian @1372 - matrixcf_mul_transpose @1373 - matrixcf_ones @1374 - matrixcf_pdiv @1375 - matrixcf_pivot @1376 - matrixcf_pmul @1377 - matrixcf_print @1378 - matrixcf_proj @1379 - matrixcf_qrdecomp_gramschmidt @1380 - matrixcf_sub @1381 - matrixcf_swaprows @1382 - matrixcf_trans @1383 - matrixcf_transpose_mul @1384 - matrixcf_zeros @1385 - matrixf_add @1386 - matrixf_aug @1387 - matrixf_cgsolve @1388 - matrixf_chol @1389 - matrixf_det @1390 - matrixf_det2x2 @1391 - matrixf_div @1392 - matrixf_eye @1393 - matrixf_gjelim @1394 - matrixf_gramschmidt @1395 - matrixf_hermitian @1396 - matrixf_hermitian_mul @1397 - matrixf_inv @1398 - matrixf_linsolve @1399 - matrixf_ludecomp_crout @1400 - matrixf_ludecomp_doolittle @1401 - matrixf_mul @1402 - matrixf_mul_hermitian @1403 - matrixf_mul_transpose @1404 - matrixf_ones @1405 - matrixf_pdiv @1406 - matrixf_pivot @1407 - matrixf_pmul @1408 - matrixf_print @1409 - matrixf_proj @1410 - matrixf_qrdecomp_gramschmidt @1411 - matrixf_sub @1412 - matrixf_swaprows @1413 - matrixf_trans @1414 - matrixf_transpose_mul @1415 - matrixf_zeros @1416 - modem_arb128opt @1417 DATA - modem_arb16opt @1418 DATA - modem_arb256opt @1419 DATA - modem_arb32opt @1420 DATA - modem_arb64opt @1421 DATA - modem_arb_V29 @1422 DATA - modem_arb_balance_iq @1423 - modem_arb_init @1424 - modem_arb_init_file @1425 - modem_arb_scale @1426 - modem_arb_sqam128 @1427 DATA - modem_arb_sqam32 @1428 DATA - modem_arb_vt64 @1429 DATA - modem_create @1430 - modem_create_V29 @1431 - modem_create_apsk @1432 - modem_create_arb @1433 - modem_create_arb128opt @1434 - modem_create_arb16opt @1435 - modem_create_arb256opt @1436 - modem_create_arb32opt @1437 - modem_create_arb64opt @1438 - modem_create_arb64vt @1439 - modem_create_arbitrary @1440 - modem_create_ask @1441 - modem_create_bpsk @1442 - modem_create_dpsk @1443 - modem_create_ook @1444 - modem_create_psk @1445 - modem_create_qam @1446 - modem_create_qpsk @1447 - modem_create_sqam128 @1448 - modem_create_sqam32 @1449 - modem_demodsoft_gentab @1450 - modem_demodulate @1451 - modem_demodulate_apsk @1452 - modem_demodulate_arb @1453 - modem_demodulate_ask @1454 - modem_demodulate_bpsk @1455 - modem_demodulate_dpsk @1456 - modem_demodulate_linear_array @1457 - modem_demodulate_linear_array_ref @1458 - modem_demodulate_ook @1459 - modem_demodulate_psk @1460 - modem_demodulate_qam @1461 - modem_demodulate_qpsk @1462 - modem_demodulate_soft @1463 - modem_demodulate_soft_arb @1464 - modem_demodulate_soft_bpsk @1465 - modem_demodulate_soft_qpsk @1466 - modem_demodulate_soft_table @1467 - modem_demodulate_sqam128 @1468 - modem_demodulate_sqam32 @1469 - modem_destroy @1470 - modem_gen_rand_sym @1471 - modem_get_bps @1472 - modem_get_demodulator_evm @1473 - modem_get_demodulator_phase_error @1474 - modem_get_demodulator_sample @1475 - modem_get_scheme @1476 - modem_init @1477 - modem_init_map @1478 - modem_modulate @1479 - modem_modulate_apsk @1480 - modem_modulate_arb @1481 - modem_modulate_ask @1482 - modem_modulate_bpsk @1483 - modem_modulate_dpsk @1484 - modem_modulate_map @1485 - modem_modulate_ook @1486 - modem_modulate_psk @1487 - modem_modulate_qam @1488 - modem_modulate_qpsk @1489 - modem_modulate_sqam128 @1490 - modem_modulate_sqam32 @1491 - modem_print @1492 - modem_recreate @1493 - modem_reset @1494 - modulation_types @1495 DATA - msequence_advance @1496 - msequence_create @1497 - msequence_create_default @1498 - msequence_create_genpoly @1499 - msequence_default @1500 DATA - msequence_destroy @1501 - msequence_generate_symbol @1502 - msequence_get_length @1503 - msequence_get_state @1504 - msequence_print @1505 - msequence_reset @1506 - msequence_set_state @1507 - msourcecf_add_modem @1508 - msourcecf_add_noise @1509 - msourcecf_add_source @1510 - msourcecf_add_tone @1511 - msourcecf_create @1512 - msourcecf_destroy @1513 - msourcecf_disable @1514 - msourcecf_enable @1515 - msourcecf_get_source @1516 - msourcecf_print @1517 - msourcecf_remove @1518 - msourcecf_reset @1519 - msourcecf_set_frequency @1520 - msourcecf_set_gain @1521 - msourcecf_write_samples @1522 - msresamp2_cccf_create @1523 - msresamp2_cccf_decim_execute @1524 - msresamp2_cccf_destroy @1525 - msresamp2_cccf_execute @1526 - msresamp2_cccf_get_delay @1527 - msresamp2_cccf_interp_execute @1528 - msresamp2_cccf_print @1529 - msresamp2_cccf_reset @1530 - msresamp2_crcf_create @1531 - msresamp2_crcf_decim_execute @1532 - msresamp2_crcf_destroy @1533 - msresamp2_crcf_execute @1534 - msresamp2_crcf_get_delay @1535 - msresamp2_crcf_interp_execute @1536 - msresamp2_crcf_print @1537 - msresamp2_crcf_reset @1538 - msresamp2_rrrf_create @1539 - msresamp2_rrrf_decim_execute @1540 - msresamp2_rrrf_destroy @1541 - msresamp2_rrrf_execute @1542 - msresamp2_rrrf_get_delay @1543 - msresamp2_rrrf_interp_execute @1544 - msresamp2_rrrf_print @1545 - msresamp2_rrrf_reset @1546 - msresamp_cccf_create @1547 - msresamp_cccf_decim_execute @1548 - msresamp_cccf_destroy @1549 - msresamp_cccf_execute @1550 - msresamp_cccf_get_delay @1551 - msresamp_cccf_interp_execute @1552 - msresamp_cccf_print @1553 - msresamp_cccf_reset @1554 - msresamp_crcf_create @1555 - msresamp_crcf_decim_execute @1556 - msresamp_crcf_destroy @1557 - msresamp_crcf_execute @1558 - msresamp_crcf_get_delay @1559 - msresamp_crcf_interp_execute @1560 - msresamp_crcf_print @1561 - msresamp_crcf_reset @1562 - msresamp_rrrf_create @1563 - msresamp_rrrf_decim_execute @1564 - msresamp_rrrf_destroy @1565 - msresamp_rrrf_execute @1566 - msresamp_rrrf_get_delay @1567 - msresamp_rrrf_interp_execute @1568 - msresamp_rrrf_print @1569 - msresamp_rrrf_reset @1570 - nco_crcf_adjust_frequency @1571 - nco_crcf_adjust_phase @1572 - nco_crcf_cexpf @1573 - nco_crcf_compute_sincos_nco @1574 - nco_crcf_compute_sincos_vco @1575 - nco_crcf_constrain_frequency @1576 - nco_crcf_constrain_phase @1577 - nco_crcf_cos @1578 - nco_crcf_create @1579 - nco_crcf_destroy @1580 - nco_crcf_get_frequency @1581 - nco_crcf_get_phase @1582 - nco_crcf_mix_block_down @1583 - nco_crcf_mix_block_up @1584 - nco_crcf_mix_down @1585 - nco_crcf_mix_up @1586 - nco_crcf_pll_reset @1587 - nco_crcf_pll_set_bandwidth @1588 - nco_crcf_pll_step @1589 - nco_crcf_reset @1590 - nco_crcf_set_frequency @1591 - nco_crcf_set_phase @1592 - nco_crcf_sin @1593 - nco_crcf_sincos @1594 - nco_crcf_step @1595 - ofdmflexframegen_assemble @1596 - ofdmflexframegen_create @1597 - ofdmflexframegen_destroy @1598 - ofdmflexframegen_encode_header @1599 - ofdmflexframegen_gen_S0a @1600 - ofdmflexframegen_gen_S0b @1601 - ofdmflexframegen_gen_S1 @1602 - ofdmflexframegen_gen_header @1603 - ofdmflexframegen_gen_payload @1604 - ofdmflexframegen_gen_symbol @1605 - ofdmflexframegen_gen_tail @1606 - ofdmflexframegen_gen_zeros @1607 - ofdmflexframegen_getframelen @1608 - ofdmflexframegen_getprops @1609 - ofdmflexframegen_is_assembled @1610 - ofdmflexframegen_modulate_header @1611 - ofdmflexframegen_print @1612 - ofdmflexframegen_reconfigure @1613 - ofdmflexframegen_reset @1614 - ofdmflexframegen_setprops @1615 - ofdmflexframegen_write @1616 - ofdmflexframegenprops_init_default @1617 - ofdmflexframesync_create @1618 - ofdmflexframesync_debug_disable @1619 - ofdmflexframesync_debug_enable @1620 - ofdmflexframesync_debug_print @1621 - ofdmflexframesync_decode_header @1622 - ofdmflexframesync_destroy @1623 - ofdmflexframesync_execute @1624 - ofdmflexframesync_get_cfo @1625 - ofdmflexframesync_get_rssi @1626 - ofdmflexframesync_internal_callback @1627 - ofdmflexframesync_is_frame_open @1628 - ofdmflexframesync_print @1629 - ofdmflexframesync_reset @1630 - ofdmflexframesync_rxheader @1631 - ofdmflexframesync_rxpayload @1632 - ofdmframe_init_S0 @1633 - ofdmframe_init_S1 @1634 - ofdmframe_init_default_sctype @1635 - ofdmframe_init_sctype_range @1636 - ofdmframe_print_sctype @1637 - ofdmframe_validate_sctype @1638 - ofdmframegen_create @1639 - ofdmframegen_destroy @1640 - ofdmframegen_gensymbol @1641 - ofdmframegen_print @1642 - ofdmframegen_reset @1643 - ofdmframegen_write_S0a @1644 - ofdmframegen_write_S0b @1645 - ofdmframegen_write_S1 @1646 - ofdmframegen_writesymbol @1647 - ofdmframegen_writetail @1648 - ofdmframesync_S0_metrics @1649 - ofdmframesync_create @1650 - ofdmframesync_debug_disable @1651 - ofdmframesync_debug_enable @1652 - ofdmframesync_debug_print @1653 - ofdmframesync_destroy @1654 - ofdmframesync_estimate_eqgain @1655 - ofdmframesync_estimate_eqgain_poly @1656 - ofdmframesync_estimate_gain_S0 @1657 - ofdmframesync_estimate_gain_S1 @1658 - ofdmframesync_execute @1659 - ofdmframesync_execute_S0a @1660 - ofdmframesync_execute_S0b @1661 - ofdmframesync_execute_S1 @1662 - ofdmframesync_execute_rxsymbols @1663 - ofdmframesync_execute_seekplcp @1664 - ofdmframesync_get_cfo @1665 - ofdmframesync_get_rssi @1666 - ofdmframesync_is_frame_open @1667 - ofdmframesync_print @1668 - ofdmframesync_reset @1669 - ofdmframesync_rxsymbol @1670 - optim_sort @1671 - optim_threshold_switch @1672 - packetizer_compute_dec_msg_len @1673 - packetizer_compute_enc_msg_len @1674 - packetizer_create @1675 - packetizer_decode @1676 - packetizer_decode_soft @1677 - packetizer_destroy @1678 - packetizer_encode @1679 - packetizer_get_crc @1680 - packetizer_get_dec_msg_len @1681 - packetizer_get_enc_msg_len @1682 - packetizer_get_fec0 @1683 - packetizer_get_fec1 @1684 - packetizer_print @1685 - packetizer_realloc_buffers @1686 - packetizer_recreate @1687 - packetizer_set_scheme @1688 - poly_expandbinomial @1689 - poly_expandbinomial_pm @1690 - poly_expandroots @1691 - poly_expandroots2 @1692 - poly_findroots @1693 - poly_findroots_bairstow @1694 - poly_findroots_bairstow_recursion @1695 - poly_findroots_durandkerner @1696 - poly_fit @1697 - poly_fit_lagrange @1698 - poly_fit_lagrange_barycentric @1699 - poly_interp_lagrange @1700 - poly_mul @1701 - poly_val @1702 - poly_val_lagrange_barycentric @1703 - polyc_expandbinomial @1704 - polyc_expandbinomial_pm @1705 - polyc_expandroots @1706 - polyc_expandroots2 @1707 - polyc_findroots @1708 - polyc_findroots_bairstow @1709 - polyc_findroots_bairstow_recursion @1710 - polyc_findroots_durandkerner @1711 - polyc_fit @1712 - polyc_fit_lagrange @1713 - polyc_fit_lagrange_barycentric @1714 - polyc_interp_lagrange @1715 - polyc_mul @1716 - polyc_val @1717 - polyc_val_lagrange_barycentric @1718 - polycf_expandbinomial @1719 - polycf_expandbinomial_pm @1720 - polycf_expandroots @1721 - polycf_expandroots2 @1722 - polycf_findroots @1723 - polycf_findroots_bairstow @1724 - polycf_findroots_bairstow_recursion @1725 - polycf_findroots_durandkerner @1726 - polycf_fit @1727 - polycf_fit_lagrange @1728 - polycf_fit_lagrange_barycentric @1729 - polycf_interp_lagrange @1730 - polycf_mul @1731 - polycf_val @1732 - polycf_val_lagrange_barycentric @1733 - polyf_expandbinomial @1734 - polyf_expandbinomial_pm @1735 - polyf_expandroots @1736 - polyf_expandroots2 @1737 - polyf_findroots @1738 - polyf_findroots_bairstow @1739 - polyf_findroots_bairstow_recursion @1740 - polyf_findroots_durandkerner @1741 - polyf_fit @1742 - polyf_fit_lagrange @1743 - polyf_fit_lagrange_barycentric @1744 - polyf_interp_lagrange @1745 - polyf_mul @1746 - polyf_val @1747 - polyf_val_lagrange_barycentric @1748 - presync_cccf_correlate @1749 - presync_cccf_correlatex @1750 - presync_cccf_create @1751 - presync_cccf_destroy @1752 - presync_cccf_print @1753 - presync_cccf_push @1754 - presync_cccf_reset @1755 - qdetector_cccf_create @1756 - qdetector_cccf_create_gmsk @1757 - qdetector_cccf_create_linear @1758 - qdetector_cccf_destroy @1759 - qdetector_cccf_execute @1760 - qdetector_cccf_execute_align @1761 - qdetector_cccf_execute_seek @1762 - qdetector_cccf_get_buf_len @1763 - qdetector_cccf_get_dphi @1764 - qdetector_cccf_get_gamma @1765 - qdetector_cccf_get_phi @1766 - qdetector_cccf_get_seq_len @1767 - qdetector_cccf_get_sequence @1768 - qdetector_cccf_get_tau @1769 - qdetector_cccf_print @1770 - qdetector_cccf_reset @1771 - qdetector_cccf_set_range @1772 - qdetector_cccf_set_threshold @1773 - qnsearch_compute_Hessian @1774 - qnsearch_compute_gradient @1775 - qnsearch_create @1776 - qnsearch_destroy @1777 - qnsearch_normalize_gradient @1778 - qnsearch_print @1779 - qnsearch_reset @1780 - qnsearch_run @1781 - qnsearch_step @1782 - qpacketmodem_configure @1783 - qpacketmodem_create @1784 - qpacketmodem_decode @1785 - qpacketmodem_decode_bits @1786 - qpacketmodem_decode_soft @1787 - qpacketmodem_decode_syms @1788 - qpacketmodem_destroy @1789 - qpacketmodem_encode @1790 - qpacketmodem_encode_syms @1791 - qpacketmodem_get_crc @1792 - qpacketmodem_get_fec0 @1793 - qpacketmodem_get_fec1 @1794 - qpacketmodem_get_frame_len @1795 - qpacketmodem_get_modscheme @1796 - qpacketmodem_get_payload_len @1797 - qpacketmodem_print @1798 - qpacketmodem_reset @1799 - qpilotgen_create @1800 - qpilotgen_destroy @1801 - qpilotgen_execute @1802 - qpilotgen_get_frame_len @1803 - qpilotgen_print @1804 - qpilotgen_recreate @1805 - qpilotgen_reset @1806 - qpilotsync_create @1807 - qpilotsync_destroy @1808 - qpilotsync_execute @1809 - qpilotsync_get_dphi @1810 - qpilotsync_get_frame_len @1811 - qpilotsync_get_gain @1812 - qpilotsync_get_phi @1813 - qpilotsync_print @1814 - qpilotsync_recreate @1815 - qpilotsync_reset @1816 - qsourcecf_create_modem @1817 - qsourcecf_create_noise @1818 - qsourcecf_create_tone @1819 - qsourcecf_destroy @1820 - qsourcecf_disable @1821 - qsourcecf_enable @1822 - qsourcecf_gen_sample @1823 - qsourcecf_print @1824 - qsourcecf_reset @1825 - qsourcecf_set_frequency @1826 - qsourcecf_set_gain @1827 - quantize_adc @1828 - quantize_dac @1829 - quantizercf_create @1830 - quantizercf_destroy @1831 - quantizercf_execute_adc @1832 - quantizercf_execute_dac @1833 - quantizercf_print @1834 - quantizerf_create @1835 - quantizerf_destroy @1836 - quantizerf_execute_adc @1837 - quantizerf_execute_dac @1838 - quantizerf_print @1839 - randexpf @1840 - randexpf_cdf @1841 - randexpf_pdf @1842 - randf @1843 - randf_cdf @1844 - randf_pdf @1845 - randgammaf @1846 - randgammaf_cdf @1847 - randgammaf_delta @1848 - randgammaf_pdf @1849 - randnakmf @1850 - randnakmf_cdf @1851 - randnakmf_pdf @1852 - randnf @1853 - randnf_cdf @1854 - randnf_pdf @1855 - randricekf @1856 - randricekf_cdf @1857 - randricekf_pdf @1858 - randweibf @1859 - randweibf_cdf @1860 - randweibf_pdf @1861 - resamp2_cccf_analyzer_execute @1862 - resamp2_cccf_create @1863 - resamp2_cccf_decim_execute @1864 - resamp2_cccf_destroy @1865 - resamp2_cccf_filter_execute @1866 - resamp2_cccf_get_delay @1867 - resamp2_cccf_interp_execute @1868 - resamp2_cccf_print @1869 - resamp2_cccf_recreate @1870 - resamp2_cccf_reset @1871 - resamp2_cccf_synthesizer_execute @1872 - resamp2_crcf_analyzer_execute @1873 - resamp2_crcf_create @1874 - resamp2_crcf_decim_execute @1875 - resamp2_crcf_destroy @1876 - resamp2_crcf_filter_execute @1877 - resamp2_crcf_get_delay @1878 - resamp2_crcf_interp_execute @1879 - resamp2_crcf_print @1880 - resamp2_crcf_recreate @1881 - resamp2_crcf_reset @1882 - resamp2_crcf_synthesizer_execute @1883 - resamp2_rrrf_analyzer_execute @1884 - resamp2_rrrf_create @1885 - resamp2_rrrf_decim_execute @1886 - resamp2_rrrf_destroy @1887 - resamp2_rrrf_filter_execute @1888 - resamp2_rrrf_get_delay @1889 - resamp2_rrrf_interp_execute @1890 - resamp2_rrrf_print @1891 - resamp2_rrrf_recreate @1892 - resamp2_rrrf_reset @1893 - resamp2_rrrf_synthesizer_execute @1894 - resamp_cccf_adjust_rate @1895 - resamp_cccf_adjust_timing_phase @1896 - resamp_cccf_create @1897 - resamp_cccf_create_default @1898 - resamp_cccf_destroy @1899 - resamp_cccf_execute @1900 - resamp_cccf_execute_block @1901 - resamp_cccf_get_delay @1902 - resamp_cccf_print @1903 - resamp_cccf_reset @1904 - resamp_cccf_set_rate @1905 - resamp_cccf_set_timing_phase @1906 - resamp_cccf_update_timing_state @1907 - resamp_crcf_adjust_rate @1908 - resamp_crcf_adjust_timing_phase @1909 - resamp_crcf_create @1910 - resamp_crcf_create_default @1911 - resamp_crcf_destroy @1912 - resamp_crcf_execute @1913 - resamp_crcf_execute_block @1914 - resamp_crcf_get_delay @1915 - resamp_crcf_print @1916 - resamp_crcf_reset @1917 - resamp_crcf_set_rate @1918 - resamp_crcf_set_timing_phase @1919 - resamp_crcf_update_timing_state @1920 - resamp_rrrf_adjust_rate @1921 - resamp_rrrf_adjust_timing_phase @1922 - resamp_rrrf_create @1923 - resamp_rrrf_create_default @1924 - resamp_rrrf_destroy @1925 - resamp_rrrf_execute @1926 - resamp_rrrf_execute_block @1927 - resamp_rrrf_get_delay @1928 - resamp_rrrf_print @1929 - resamp_rrrf_reset @1930 - resamp_rrrf_set_rate @1931 - resamp_rrrf_set_timing_phase @1932 - resamp_rrrf_update_timing_state @1933 - rkaiser_approximate_rho @1934 - scramble_data @1935 - secded2216_P @1936 DATA - secded2216_syndrome_w1 @1937 DATA - secded3932_P @1938 DATA - secded3932_syndrome_w1 @1939 DATA - secded7264_P @1940 DATA - secded7264_syndrome_w1 @1941 DATA - sincf @1942 - smatrix_indexsearch @1943 - smatrixb_clear @1944 - smatrixb_create @1945 - smatrixb_create_array @1946 - smatrixb_delete @1947 - smatrixb_destroy @1948 - smatrixb_eye @1949 - smatrixb_get @1950 - smatrixb_insert @1951 - smatrixb_isset @1952 - smatrixb_mul @1953 - smatrixb_mulf @1954 - smatrixb_print @1955 - smatrixb_print_expanded @1956 - smatrixb_reset @1957 - smatrixb_reset_max_mlist @1958 - smatrixb_reset_max_nlist @1959 - smatrixb_set @1960 - smatrixb_size @1961 - smatrixb_vmul @1962 - smatrixb_vmulf @1963 - smatrixf_clear @1964 - smatrixf_create @1965 - smatrixf_create_array @1966 - smatrixf_delete @1967 - smatrixf_destroy @1968 - smatrixf_eye @1969 - smatrixf_get @1970 - smatrixf_insert @1971 - smatrixf_isset @1972 - smatrixf_mul @1973 - smatrixf_print @1974 - smatrixf_print_expanded @1975 - smatrixf_reset @1976 - smatrixf_reset_max_mlist @1977 - smatrixf_reset_max_nlist @1978 - smatrixf_set @1979 - smatrixf_size @1980 - smatrixf_vmul @1981 - smatrixi_clear @1982 - smatrixi_create @1983 - smatrixi_create_array @1984 - smatrixi_delete @1985 - smatrixi_destroy @1986 - smatrixi_eye @1987 - smatrixi_get @1988 - smatrixi_insert @1989 - smatrixi_isset @1990 - smatrixi_mul @1991 - smatrixi_print @1992 - smatrixi_print_expanded @1993 - smatrixi_reset @1994 - smatrixi_reset_max_mlist @1995 - smatrixi_reset_max_nlist @1996 - smatrixi_set @1997 - smatrixi_size @1998 - smatrixi_vmul @1999 - spgramcf_clear @2000 - spgramcf_create @2001 - spgramcf_create_default @2002 - spgramcf_destroy @2003 - spgramcf_estimate_psd @2004 - spgramcf_export_gnuplot @2005 - spgramcf_get_delay @2006 - spgramcf_get_nfft @2007 - spgramcf_get_num_samples @2008 - spgramcf_get_num_samples_total @2009 - spgramcf_get_num_transforms @2010 - spgramcf_get_num_transforms_total @2011 - spgramcf_get_psd @2012 - spgramcf_get_window_len @2013 - spgramcf_print @2014 - spgramcf_push @2015 - spgramcf_reset @2016 - spgramcf_set_alpha @2017 - spgramcf_step @2018 - spgramcf_write @2019 - spgramf_clear @2020 - spgramf_create @2021 - spgramf_create_default @2022 - spgramf_destroy @2023 - spgramf_estimate_psd @2024 - spgramf_export_gnuplot @2025 - spgramf_get_delay @2026 - spgramf_get_nfft @2027 - spgramf_get_num_samples @2028 - spgramf_get_num_samples_total @2029 - spgramf_get_num_transforms @2030 - spgramf_get_num_transforms_total @2031 - spgramf_get_psd @2032 - spgramf_get_window_len @2033 - spgramf_print @2034 - spgramf_push @2035 - spgramf_reset @2036 - spgramf_set_alpha @2037 - spgramf_step @2038 - spgramf_write @2039 - spwaterfallcf_clear @2040 - spwaterfallcf_consolidate_buffer @2041 - spwaterfallcf_create @2042 - spwaterfallcf_create_default @2043 - spwaterfallcf_destroy @2044 - spwaterfallcf_export @2045 - spwaterfallcf_export_bin @2046 - spwaterfallcf_export_gnu @2047 - spwaterfallcf_print @2048 - spwaterfallcf_push @2049 - spwaterfallcf_reset @2050 - spwaterfallcf_step @2051 - spwaterfallcf_write @2052 - spwaterfallf_clear @2053 - spwaterfallf_consolidate_buffer @2054 - spwaterfallf_create @2055 - spwaterfallf_create_default @2056 - spwaterfallf_destroy @2057 - spwaterfallf_export @2058 - spwaterfallf_export_bin @2059 - spwaterfallf_export_gnu @2060 - spwaterfallf_print @2061 - spwaterfallf_push @2062 - spwaterfallf_reset @2063 - spwaterfallf_step @2064 - spwaterfallf_write @2065 - sumproduct_phi @2066 - symstreamcf_create @2067 - symstreamcf_create_linear @2068 - symstreamcf_destroy @2069 - symstreamcf_fill_buffer @2070 - symstreamcf_print @2071 - symstreamcf_reset @2072 - symstreamcf_write_samples @2073 - symsync_crcf_advance_internal_loop @2074 - symsync_crcf_create @2075 - symsync_crcf_create_kaiser @2076 - symsync_crcf_create_rnyquist @2077 - symsync_crcf_destroy @2078 - symsync_crcf_execute @2079 - symsync_crcf_get_tau @2080 - symsync_crcf_lock @2081 - symsync_crcf_output_debug_file @2082 - symsync_crcf_print @2083 - symsync_crcf_reset @2084 - symsync_crcf_set_lf_bw @2085 - symsync_crcf_set_output_rate @2086 - symsync_crcf_step @2087 - symsync_crcf_unlock @2088 - symsync_rrrf_advance_internal_loop @2089 - symsync_rrrf_create @2090 - symsync_rrrf_create_kaiser @2091 - symsync_rrrf_create_rnyquist @2092 - symsync_rrrf_destroy @2093 - symsync_rrrf_execute @2094 - symsync_rrrf_get_tau @2095 - symsync_rrrf_lock @2096 - symsync_rrrf_output_debug_file @2097 - symsync_rrrf_print @2098 - symsync_rrrf_reset @2099 - symsync_rrrf_set_lf_bw @2100 - symsync_rrrf_set_output_rate @2101 - symsync_rrrf_step @2102 - symsync_rrrf_unlock @2103 - symtrack_cccf_adjust_phase @2104 - symtrack_cccf_create @2105 - symtrack_cccf_create_default @2106 - symtrack_cccf_destroy @2107 - symtrack_cccf_execute @2108 - symtrack_cccf_execute_block @2109 - symtrack_cccf_print @2110 - symtrack_cccf_reset @2111 - symtrack_cccf_set_bandwidth @2112 - symtrack_cccf_set_modscheme @2113 - triangular @2114 - tvmpch_cccf_create @2115 - tvmpch_cccf_destroy @2116 - tvmpch_cccf_execute @2117 - tvmpch_cccf_execute_block @2118 - tvmpch_cccf_print @2119 - tvmpch_cccf_push @2120 - tvmpch_cccf_reset @2121 - unscramble_data @2122 - unscramble_data_soft @2123 - wdelaycf_create @2124 - wdelaycf_destroy @2125 - wdelaycf_print @2126 - wdelaycf_push @2127 - wdelaycf_read @2128 - wdelaycf_recreate @2129 - wdelaycf_reset @2130 - wdelayf_create @2131 - wdelayf_destroy @2132 - wdelayf_print @2133 - wdelayf_push @2134 - wdelayf_read @2135 - wdelayf_recreate @2136 - wdelayf_reset @2137 - windowcf_create @2138 - windowcf_debug_print @2139 - windowcf_destroy @2140 - windowcf_index @2141 - windowcf_print @2142 - windowcf_push @2143 - windowcf_read @2144 - windowcf_recreate @2145 - windowcf_reset @2146 - windowcf_write @2147 - windowf_create @2148 - windowf_debug_print @2149 - windowf_destroy @2150 - windowf_index @2151 - windowf_print @2152 - windowf_push @2153 - windowf_read @2154 - windowf_recreate @2155 - windowf_reset @2156 - windowf_write @2157 + autocorr_cccf_write @130 + autocorr_rrrf_create @131 + autocorr_rrrf_destroy @132 + autocorr_rrrf_execute @133 + autocorr_rrrf_execute_block @134 + autocorr_rrrf_get_energy @135 + autocorr_rrrf_print @136 + autocorr_rrrf_push @137 + autocorr_rrrf_reset @138 + autocorr_rrrf_write @139 + awgn @140 + bessel_azpkf @141 + bilinear_zpkf @142 + blackmanharris @143 + blackmanharris7 @144 + bpacketgen_assemble_header @145 + bpacketgen_assemble_pnsequence @146 + bpacketgen_compute_packet_len @147 + bpacketgen_create @148 + bpacketgen_destroy @149 + bpacketgen_encode @150 + bpacketgen_get_packet_len @151 + bpacketgen_print @152 + bpacketgen_recreate @153 + bpacketsync_assemble_pnsequence @154 + bpacketsync_create @155 + bpacketsync_decode_header @156 + bpacketsync_decode_payload @157 + bpacketsync_destroy @158 + bpacketsync_execute @159 + bpacketsync_execute_bit @160 + bpacketsync_execute_byte @161 + bpacketsync_execute_rxheader @162 + bpacketsync_execute_rxpayload @163 + bpacketsync_execute_seekpn @164 + bpacketsync_execute_sym @165 + bpacketsync_print @166 + bpacketsync_reconfig @167 + bpacketsync_reset @168 + bpresync_cccf_correlatex @169 + bpresync_cccf_create @170 + bpresync_cccf_destroy @171 + bpresync_cccf_execute @172 + bpresync_cccf_print @173 + bpresync_cccf_push @174 + bpresync_cccf_reset @175 + bsequence_accumulate @176 + bsequence_add @177 + bsequence_circshift @178 + bsequence_correlate @179 + bsequence_create @180 + bsequence_create_ccodes @181 + bsequence_destroy @182 + bsequence_get_length @183 + bsequence_index @184 + bsequence_init @185 + bsequence_init_msequence @186 + bsequence_mul @187 + bsequence_print @188 + bsequence_push @189 + bsequence_reset @190 + bsync_cccf_correlate @191 + bsync_cccf_create @192 + bsync_cccf_create_msequence @193 + bsync_cccf_destroy @194 + bsync_cccf_print @195 + bsync_crcf_correlate @196 + bsync_crcf_create @197 + bsync_crcf_create_msequence @198 + bsync_crcf_destroy @199 + bsync_crcf_print @200 + bsync_rrrf_correlate @201 + bsync_rrrf_create @202 + bsync_rrrf_create_msequence @203 + bsync_rrrf_destroy @204 + bsync_rrrf_print @205 + butter_azpkf @206 + cawgn @207 + cbuffercf_create @208 + cbuffercf_create_max @209 + cbuffercf_debug_print @210 + cbuffercf_destroy @211 + cbuffercf_is_full @212 + cbuffercf_linearize @213 + cbuffercf_max_read @214 + cbuffercf_max_size @215 + cbuffercf_pop @216 + cbuffercf_print @217 + cbuffercf_push @218 + cbuffercf_read @219 + cbuffercf_release @220 + cbuffercf_reset @221 + cbuffercf_size @222 + cbuffercf_space_available @223 + cbuffercf_write @224 + cbufferf_create @225 + cbufferf_create_max @226 + cbufferf_debug_print @227 + cbufferf_destroy @228 + cbufferf_is_full @229 + cbufferf_linearize @230 + cbufferf_max_read @231 + cbufferf_max_size @232 + cbufferf_pop @233 + cbufferf_print @234 + cbufferf_push @235 + cbufferf_read @236 + cbufferf_release @237 + cbufferf_reset @238 + cbufferf_size @239 + cbufferf_space_available @240 + cbufferf_write @241 + channel_cccf_add_awgn @242 + channel_cccf_add_carrier_offset @243 + channel_cccf_add_multipath @244 + channel_cccf_add_shadowing @245 + channel_cccf_create @246 + channel_cccf_destroy @247 + channel_cccf_execute @248 + channel_cccf_execute_block @249 + channel_cccf_print @250 + cheby1_azpkf @251 + cheby2_azpkf @252 + checksum_generate_key @253 + chromosome_copy @254 + chromosome_create @255 + chromosome_create_basic @256 + chromosome_create_clone @257 + chromosome_crossover @258 + chromosome_destroy @259 + chromosome_get_num_traits @260 + chromosome_init @261 + chromosome_init_random @262 + chromosome_initf @263 + chromosome_mutate @264 + chromosome_print @265 + chromosome_printf @266 + chromosome_reset @267 + chromosome_value @268 + chromosome_valuef @269 + compress_cf_mulaw @270 + compress_mulaw @271 + count_bit_errors @272 + count_bit_errors_array @273 + cpfskdem_create @274 + cpfskdem_demodulate @275 + cpfskdem_demodulate_coherent @276 + cpfskdem_demodulate_noncoherent @277 + cpfskdem_destroy @278 + cpfskdem_get_delay @279 + cpfskdem_init_coherent @280 + cpfskdem_init_noncoherent @281 + cpfskdem_print @282 + cpfskdem_reset @283 + cpfskmod_create @284 + cpfskmod_destroy @285 + cpfskmod_firdes @286 + cpfskmod_get_delay @287 + cpfskmod_modulate @288 + cpfskmod_print @289 + cpfskmod_reset @290 + crandnf @291 + crc16_generate_key @292 + crc24_generate_key @293 + crc32_generate_key @294 + crc8_generate_key @295 + crc_append_key @296 + crc_check_key @297 + crc_generate_key @298 + crc_get_length @299 + crc_scheme_str @300 DATA + crc_sizeof_key @301 + crc_validate_message @302 + cvsd_create @303 + cvsd_decode @304 + cvsd_decode8 @305 + cvsd_destroy @306 + cvsd_encode @307 + cvsd_encode8 @308 + cvsd_print @309 + detector_cccf_compute_dotprods @310 + detector_cccf_correlate @311 + detector_cccf_create @312 + detector_cccf_debug_print @313 + detector_cccf_destroy @314 + detector_cccf_estimate_offsets @315 + detector_cccf_print @316 + detector_cccf_reset @317 + detector_cccf_update_sumsq @318 + dotprod_cccf_create @319 + dotprod_cccf_destroy @320 + dotprod_cccf_execute @321 + dotprod_cccf_execute_mmx @322 + dotprod_cccf_execute_mmx4 @323 + dotprod_cccf_print @324 + dotprod_cccf_recreate @325 + dotprod_cccf_run @326 + dotprod_cccf_run4 @327 + dotprod_crcf_create @328 + dotprod_crcf_destroy @329 + dotprod_crcf_execute @330 + dotprod_crcf_execute_mmx @331 + dotprod_crcf_execute_mmx4 @332 + dotprod_crcf_print @333 + dotprod_crcf_recreate @334 + dotprod_crcf_run @335 + dotprod_crcf_run4 @336 + dotprod_rrrf_create @337 + dotprod_rrrf_destroy @338 + dotprod_rrrf_execute @339 + dotprod_rrrf_execute_mmx @340 + dotprod_rrrf_execute_mmx4 @341 + dotprod_rrrf_print @342 + dotprod_rrrf_recreate @343 + dotprod_rrrf_run @344 + dotprod_rrrf_run4 @345 + dsssframegen_assemble @346 + dsssframegen_create @347 + dsssframegen_destroy @348 + dsssframegen_generate_header @349 + dsssframegen_generate_payload @350 + dsssframegen_generate_preamble @351 + dsssframegen_generate_symbol @352 + dsssframegen_generate_tail @353 + dsssframegen_getframelen @354 + dsssframegen_getprops @355 + dsssframegen_is_assembled @356 + dsssframegen_reconfigure @357 + dsssframegen_reconfigure_header @358 + dsssframegen_reset @359 + dsssframegen_set_header_len @360 + dsssframegen_set_header_props @361 + dsssframegen_setprops @362 + dsssframegen_write_samples @363 + dsssframesync_configure_payload @364 + dsssframesync_create @365 + dsssframesync_debug_disable @366 + dsssframesync_debug_enable @367 + dsssframesync_debug_print @368 + dsssframesync_decode_header @369 + dsssframesync_decode_header_soft @370 + dsssframesync_decode_payload @371 + dsssframesync_decode_payload_soft @372 + dsssframesync_destroy @373 + dsssframesync_execute @374 + dsssframesync_execute_rxheader @375 + dsssframesync_execute_rxpayload @376 + dsssframesync_execute_rxpreamble @377 + dsssframesync_execute_seekpn @378 + dsssframesync_get_framedatastats @379 + dsssframesync_is_frame_open @380 + dsssframesync_print @381 + dsssframesync_reset @382 + dsssframesync_reset_framedatastats @383 + dsssframesync_set_header_len @384 + dsssframesync_set_header_props @385 + dsssframesync_step @386 + ellip_acdf @387 + ellip_asnf @388 + ellip_azpkf @389 + ellip_cdf @390 + ellip_snf @391 + ellipdegf @392 + ellipkf @393 + eqlms_cccf_create @394 + eqlms_cccf_create_lowpass @395 + eqlms_cccf_create_rnyquist @396 + eqlms_cccf_destroy @397 + eqlms_cccf_execute @398 + eqlms_cccf_execute_block @399 + eqlms_cccf_get_bw @400 + eqlms_cccf_get_weights @401 + eqlms_cccf_print @402 + eqlms_cccf_push @403 + eqlms_cccf_push_block @404 + eqlms_cccf_recreate @405 + eqlms_cccf_reset @406 + eqlms_cccf_set_bw @407 + eqlms_cccf_step @408 + eqlms_cccf_step_blind @409 + eqlms_cccf_train @410 + eqlms_cccf_update_sumsq @411 + eqlms_rrrf_create @412 + eqlms_rrrf_create_lowpass @413 + eqlms_rrrf_create_rnyquist @414 + eqlms_rrrf_destroy @415 + eqlms_rrrf_execute @416 + eqlms_rrrf_execute_block @417 + eqlms_rrrf_get_bw @418 + eqlms_rrrf_get_weights @419 + eqlms_rrrf_print @420 + eqlms_rrrf_push @421 + eqlms_rrrf_push_block @422 + eqlms_rrrf_recreate @423 + eqlms_rrrf_reset @424 + eqlms_rrrf_set_bw @425 + eqlms_rrrf_step @426 + eqlms_rrrf_step_blind @427 + eqlms_rrrf_train @428 + eqlms_rrrf_update_sumsq @429 + eqrls_cccf_create @430 + eqrls_cccf_destroy @431 + eqrls_cccf_execute @432 + eqrls_cccf_get_bw @433 + eqrls_cccf_get_weights @434 + eqrls_cccf_print @435 + eqrls_cccf_push @436 + eqrls_cccf_recreate @437 + eqrls_cccf_reset @438 + eqrls_cccf_set_bw @439 + eqrls_cccf_step @440 + eqrls_cccf_train @441 + eqrls_rrrf_create @442 + eqrls_rrrf_destroy @443 + eqrls_rrrf_execute @444 + eqrls_rrrf_get_bw @445 + eqrls_rrrf_get_weights @446 + eqrls_rrrf_print @447 + eqrls_rrrf_push @448 + eqrls_rrrf_recreate @449 + eqrls_rrrf_reset @450 + eqrls_rrrf_set_bw @451 + eqrls_rrrf_step @452 + eqrls_rrrf_train @453 + estimate_req_filter_As @454 + estimate_req_filter_df @455 + estimate_req_filter_len @456 + estimate_req_filter_len_Herrmann @457 + estimate_req_filter_len_Kaiser @458 + expand_cf_mulaw @459 + expand_mulaw @460 + fec_block_get_enc_msg_len @461 + fec_conv27_poly @462 DATA + fec_conv27p23_matrix @463 DATA + fec_conv27p34_matrix @464 DATA + fec_conv27p45_matrix @465 DATA + fec_conv27p56_matrix @466 DATA + fec_conv27p67_matrix @467 DATA + fec_conv27p78_matrix @468 DATA + fec_conv29_poly @469 DATA + fec_conv29p23_matrix @470 DATA + fec_conv29p34_matrix @471 DATA + fec_conv29p45_matrix @472 DATA + fec_conv29p56_matrix @473 DATA + fec_conv29p67_matrix @474 DATA + fec_conv29p78_matrix @475 DATA + fec_conv39_poly @476 DATA + fec_conv615_poly @477 DATA + fec_conv_create @478 + fec_conv_destroy @479 + fec_conv_get_enc_msg_len @480 + fec_conv_punctured_create @481 + fec_conv_punctured_decode @482 + fec_conv_punctured_destroy @483 + fec_conv_punctured_encode @484 + fec_create @485 + fec_decode @486 + fec_decode_soft @487 + fec_destroy @488 + fec_encode @489 + fec_get_enc_msg_length @490 + fec_get_rate @491 + fec_golay2412_create @492 + fec_golay2412_decode @493 + fec_golay2412_decode_symbol @494 + fec_golay2412_destroy @495 + fec_golay2412_encode @496 + fec_golay2412_encode_symbol @497 + fec_hamming128_create @498 + fec_hamming128_decode @499 + fec_hamming128_decode_soft @500 + fec_hamming128_decode_symbol @501 + fec_hamming128_destroy @502 + fec_hamming128_encode @503 + fec_hamming128_encode_symbol @504 + fec_hamming1511_decode_symbol @505 + fec_hamming1511_encode_symbol @506 + fec_hamming3126_decode_symbol @507 + fec_hamming3126_encode_symbol @508 + fec_hamming74_create @509 + fec_hamming74_decode @510 + fec_hamming74_decode_soft @511 + fec_hamming74_destroy @512 + fec_hamming74_encode @513 + fec_hamming84_create @514 + fec_hamming84_decode @515 + fec_hamming84_decode_soft @516 + fec_hamming84_destroy @517 + fec_hamming84_encode @518 + fec_pass_create @519 + fec_pass_decode @520 + fec_pass_destroy @521 + fec_pass_encode @522 + fec_pass_print @523 + fec_print @524 + fec_recreate @525 + fec_rep3_create @526 + fec_rep3_decode @527 + fec_rep3_decode_soft @528 + fec_rep3_destroy @529 + fec_rep3_encode @530 + fec_rep3_print @531 + fec_rep5_create @532 + fec_rep5_decode @533 + fec_rep5_decode_soft @534 + fec_rep5_destroy @535 + fec_rep5_encode @536 + fec_rep5_print @537 + fec_rs_create @538 + fec_rs_decode @539 + fec_rs_destroy @540 + fec_rs_encode @541 + fec_rs_get_enc_msg_len @542 + fec_scheme_is_convolutional @543 + fec_scheme_is_hamming @544 + fec_scheme_is_punctured @545 + fec_scheme_is_reedsolomon @546 + fec_scheme_is_repeat @547 + fec_scheme_str @548 DATA + fec_secded2216_compute_parity @549 + fec_secded2216_compute_syndrome @550 + fec_secded2216_create @551 + fec_secded2216_decode @552 + fec_secded2216_decode_symbol @553 + fec_secded2216_destroy @554 + fec_secded2216_encode @555 + fec_secded2216_encode_symbol @556 + fec_secded2216_estimate_ehat @557 + fec_secded3932_compute_parity @558 + fec_secded3932_compute_syndrome @559 + fec_secded3932_create @560 + fec_secded3932_decode @561 + fec_secded3932_decode_symbol @562 + fec_secded3932_destroy @563 + fec_secded3932_encode @564 + fec_secded3932_encode_symbol @565 + fec_secded3932_estimate_ehat @566 + fec_secded7264_compute_parity @567 + fec_secded7264_compute_syndrome @568 + fec_secded7264_create @569 + fec_secded7264_decode @570 + fec_secded7264_decode_symbol @571 + fec_secded7264_destroy @572 + fec_secded7264_encode @573 + fec_secded7264_encode_symbol @574 + fec_secded7264_estimate_ehat @575 + fec_sumproduct @576 + fec_sumproduct_step @577 + fecsoft_hamming128_decode @578 + fecsoft_hamming128_decode_n3 @579 + fecsoft_hamming128_n3 @580 DATA + fecsoft_hamming74_decode @581 + fecsoft_hamming84_decode @582 + fft_create_plan @583 + fft_create_plan_dft @584 + fft_create_plan_mixed_radix @585 + fft_create_plan_r2r_1d @586 + fft_create_plan_rader @587 + fft_create_plan_rader2 @588 + fft_create_plan_radix2 @589 + fft_destroy_plan @590 + fft_destroy_plan_dft @591 + fft_destroy_plan_mixed_radix @592 + fft_destroy_plan_r2r_1d @593 + fft_destroy_plan_rader @594 + fft_destroy_plan_rader2 @595 + fft_destroy_plan_radix2 @596 + fft_estimate_mixed_radix @597 + fft_execute @598 + fft_execute_REDFT00 @599 + fft_execute_REDFT01 @600 + fft_execute_REDFT10 @601 + fft_execute_REDFT11 @602 + fft_execute_RODFT00 @603 + fft_execute_RODFT01 @604 + fft_execute_RODFT10 @605 + fft_execute_RODFT11 @606 + fft_execute_dft @607 + fft_execute_dft_16 @608 + fft_execute_dft_2 @609 + fft_execute_dft_3 @610 + fft_execute_dft_4 @611 + fft_execute_dft_5 @612 + fft_execute_dft_6 @613 + fft_execute_dft_7 @614 + fft_execute_dft_8 @615 + fft_execute_mixed_radix @616 + fft_execute_rader @617 + fft_execute_rader2 @618 + fft_execute_radix2 @619 + fft_is_radix2 @620 + fft_print_plan @621 + fft_print_plan_r2r_1d @622 + fft_print_plan_recursive @623 + fft_r2r_1d_run @624 + fft_reverse_index @625 + fft_run @626 + fft_shift @627 + fftfilt_cccf_create @628 + fftfilt_cccf_destroy @629 + fftfilt_cccf_execute @630 + fftfilt_cccf_get_length @631 + fftfilt_cccf_get_scale @632 + fftfilt_cccf_print @633 + fftfilt_cccf_reset @634 + fftfilt_cccf_set_scale @635 + fftfilt_crcf_create @636 + fftfilt_crcf_destroy @637 + fftfilt_crcf_execute @638 + fftfilt_crcf_get_length @639 + fftfilt_crcf_get_scale @640 + fftfilt_crcf_print @641 + fftfilt_crcf_reset @642 + fftfilt_crcf_set_scale @643 + fftfilt_rrrf_create @644 + fftfilt_rrrf_destroy @645 + fftfilt_rrrf_execute @646 + fftfilt_rrrf_get_length @647 + fftfilt_rrrf_get_scale @648 + fftfilt_rrrf_print @649 + fftfilt_rrrf_reset @650 + fftfilt_rrrf_set_scale @651 + fir_group_delay @652 + firdecim_cccf_create @653 + firdecim_cccf_create_kaiser @654 + firdecim_cccf_create_prototype @655 + firdecim_cccf_destroy @656 + firdecim_cccf_execute @657 + firdecim_cccf_execute_block @658 + firdecim_cccf_get_scale @659 + firdecim_cccf_print @660 + firdecim_cccf_reset @661 + firdecim_cccf_set_scale @662 + firdecim_crcf_create @663 + firdecim_crcf_create_kaiser @664 + firdecim_crcf_create_prototype @665 + firdecim_crcf_destroy @666 + firdecim_crcf_execute @667 + firdecim_crcf_execute_block @668 + firdecim_crcf_get_scale @669 + firdecim_crcf_print @670 + firdecim_crcf_reset @671 + firdecim_crcf_set_scale @672 + firdecim_rrrf_create @673 + firdecim_rrrf_create_kaiser @674 + firdecim_rrrf_create_prototype @675 + firdecim_rrrf_destroy @676 + firdecim_rrrf_execute @677 + firdecim_rrrf_execute_block @678 + firdecim_rrrf_get_scale @679 + firdecim_rrrf_print @680 + firdecim_rrrf_reset @681 + firdecim_rrrf_set_scale @682 + firdespm_compute_error @683 + firdespm_compute_interp @684 + firdespm_compute_taps @685 + firdespm_create @686 + firdespm_create_callback @687 + firdespm_destroy @688 + firdespm_execute @689 + firdespm_iext_search @690 + firdespm_init_grid @691 + firdespm_init_memory @692 + firdespm_is_search_complete @693 + firdespm_lowpass @694 + firdespm_print @695 + firdespm_run @696 + firfarrow_crcf_create @697 + firfarrow_crcf_destroy @698 + firfarrow_crcf_execute @699 + firfarrow_crcf_execute_block @700 + firfarrow_crcf_freqresponse @701 + firfarrow_crcf_genpoly @702 + firfarrow_crcf_get_coefficients @703 + firfarrow_crcf_get_length @704 + firfarrow_crcf_groupdelay @705 + firfarrow_crcf_print @706 + firfarrow_crcf_push @707 + firfarrow_crcf_reset @708 + firfarrow_crcf_set_delay @709 + firfarrow_rrrf_create @710 + firfarrow_rrrf_destroy @711 + firfarrow_rrrf_execute @712 + firfarrow_rrrf_execute_block @713 + firfarrow_rrrf_freqresponse @714 + firfarrow_rrrf_genpoly @715 + firfarrow_rrrf_get_coefficients @716 + firfarrow_rrrf_get_length @717 + firfarrow_rrrf_groupdelay @718 + firfarrow_rrrf_print @719 + firfarrow_rrrf_push @720 + firfarrow_rrrf_reset @721 + firfarrow_rrrf_set_delay @722 + firfilt_cccf_create @723 + firfilt_cccf_create_kaiser @724 + firfilt_cccf_create_rect @725 + firfilt_cccf_create_rnyquist @726 + firfilt_cccf_destroy @727 + firfilt_cccf_execute @728 + firfilt_cccf_execute_block @729 + firfilt_cccf_freqresponse @730 + firfilt_cccf_get_length @731 + firfilt_cccf_get_scale @732 + firfilt_cccf_groupdelay @733 + firfilt_cccf_print @734 + firfilt_cccf_push @735 + firfilt_cccf_recreate @736 + firfilt_cccf_reset @737 + firfilt_cccf_set_scale @738 + firfilt_cccf_write @739 + firfilt_crcf_create @740 + firfilt_crcf_create_kaiser @741 + firfilt_crcf_create_rect @742 + firfilt_crcf_create_rnyquist @743 + firfilt_crcf_destroy @744 + firfilt_crcf_execute @745 + firfilt_crcf_execute_block @746 + firfilt_crcf_freqresponse @747 + firfilt_crcf_get_length @748 + firfilt_crcf_get_scale @749 + firfilt_crcf_groupdelay @750 + firfilt_crcf_print @751 + firfilt_crcf_push @752 + firfilt_crcf_recreate @753 + firfilt_crcf_reset @754 + firfilt_crcf_set_scale @755 + firfilt_crcf_write @756 + firfilt_rrrf_create @757 + firfilt_rrrf_create_kaiser @758 + firfilt_rrrf_create_rect @759 + firfilt_rrrf_create_rnyquist @760 + firfilt_rrrf_destroy @761 + firfilt_rrrf_execute @762 + firfilt_rrrf_execute_block @763 + firfilt_rrrf_freqresponse @764 + firfilt_rrrf_get_length @765 + firfilt_rrrf_get_scale @766 + firfilt_rrrf_groupdelay @767 + firfilt_rrrf_print @768 + firfilt_rrrf_push @769 + firfilt_rrrf_recreate @770 + firfilt_rrrf_reset @771 + firfilt_rrrf_set_scale @772 + firfilt_rrrf_write @773 + firhilbf_c2r_execute @774 + firhilbf_create @775 + firhilbf_decim_execute @776 + firhilbf_decim_execute_block @777 + firhilbf_destroy @778 + firhilbf_interp_execute @779 + firhilbf_interp_execute_block @780 + firhilbf_print @781 + firhilbf_r2c_execute @782 + firhilbf_reset @783 + firinterp_cccf_create @784 + firinterp_cccf_create_kaiser @785 + firinterp_cccf_create_prototype @786 + firinterp_cccf_destroy @787 + firinterp_cccf_execute @788 + firinterp_cccf_execute_block @789 + firinterp_cccf_get_scale @790 + firinterp_cccf_print @791 + firinterp_cccf_reset @792 + firinterp_cccf_set_scale @793 + firinterp_crcf_create @794 + firinterp_crcf_create_kaiser @795 + firinterp_crcf_create_prototype @796 + firinterp_crcf_destroy @797 + firinterp_crcf_execute @798 + firinterp_crcf_execute_block @799 + firinterp_crcf_get_scale @800 + firinterp_crcf_print @801 + firinterp_crcf_reset @802 + firinterp_crcf_set_scale @803 + firinterp_rrrf_create @804 + firinterp_rrrf_create_kaiser @805 + firinterp_rrrf_create_prototype @806 + firinterp_rrrf_destroy @807 + firinterp_rrrf_execute @808 + firinterp_rrrf_execute_block @809 + firinterp_rrrf_get_scale @810 + firinterp_rrrf_print @811 + firinterp_rrrf_reset @812 + firinterp_rrrf_set_scale @813 + firpfb_cccf_create @814 + firpfb_cccf_create_drnyquist @815 + firpfb_cccf_create_kaiser @816 + firpfb_cccf_create_rnyquist @817 + firpfb_cccf_destroy @818 + firpfb_cccf_execute @819 + firpfb_cccf_execute_block @820 + firpfb_cccf_get_scale @821 + firpfb_cccf_print @822 + firpfb_cccf_push @823 + firpfb_cccf_recreate @824 + firpfb_cccf_reset @825 + firpfb_cccf_set_scale @826 + firpfb_crcf_create @827 + firpfb_crcf_create_drnyquist @828 + firpfb_crcf_create_kaiser @829 + firpfb_crcf_create_rnyquist @830 + firpfb_crcf_destroy @831 + firpfb_crcf_execute @832 + firpfb_crcf_execute_block @833 + firpfb_crcf_get_scale @834 + firpfb_crcf_print @835 + firpfb_crcf_push @836 + firpfb_crcf_recreate @837 + firpfb_crcf_reset @838 + firpfb_crcf_set_scale @839 + firpfb_rrrf_create @840 + firpfb_rrrf_create_drnyquist @841 + firpfb_rrrf_create_kaiser @842 + firpfb_rrrf_create_rnyquist @843 + firpfb_rrrf_destroy @844 + firpfb_rrrf_execute @845 + firpfb_rrrf_execute_block @846 + firpfb_rrrf_get_scale @847 + firpfb_rrrf_print @848 + firpfb_rrrf_push @849 + firpfb_rrrf_recreate @850 + firpfb_rrrf_reset @851 + firpfb_rrrf_set_scale @852 + firpfbch2_crcf_create @853 + firpfbch2_crcf_create_kaiser @854 + firpfbch2_crcf_destroy @855 + firpfbch2_crcf_execute @856 + firpfbch2_crcf_execute_analyzer @857 + firpfbch2_crcf_execute_synthesizer @858 + firpfbch2_crcf_print @859 + firpfbch2_crcf_reset @860 + firpfbch_cccf_analyzer_execute @861 + firpfbch_cccf_analyzer_push @862 + firpfbch_cccf_analyzer_run @863 + firpfbch_cccf_create @864 + firpfbch_cccf_create_kaiser @865 + firpfbch_cccf_create_rnyquist @866 + firpfbch_cccf_destroy @867 + firpfbch_cccf_print @868 + firpfbch_cccf_reset @869 + firpfbch_cccf_synthesizer_execute @870 + firpfbch_crcf_analyzer_execute @871 + firpfbch_crcf_analyzer_push @872 + firpfbch_crcf_analyzer_run @873 + firpfbch_crcf_create @874 + firpfbch_crcf_create_kaiser @875 + firpfbch_crcf_create_rnyquist @876 + firpfbch_crcf_destroy @877 + firpfbch_crcf_print @878 + firpfbch_crcf_reset @879 + firpfbch_crcf_synthesizer_execute @880 + flattop @881 + flexframegen_assemble @882 + flexframegen_create @883 + flexframegen_destroy @884 + flexframegen_generate_header @885 + flexframegen_generate_payload @886 + flexframegen_generate_preamble @887 + flexframegen_generate_symbol @888 + flexframegen_generate_tail @889 + flexframegen_getframelen @890 + flexframegen_getprops @891 + flexframegen_is_assembled @892 + flexframegen_print @893 + flexframegen_reconfigure @894 + flexframegen_reset @895 + flexframegen_set_header_len @896 + flexframegen_set_header_props @897 + flexframegen_setprops @898 + flexframegen_write_samples @899 + flexframegenprops_init_default @900 + flexframesync_create @901 + flexframesync_debug_disable @902 + flexframesync_debug_enable @903 + flexframesync_debug_print @904 + flexframesync_decode_header @905 + flexframesync_decode_header_soft @906 + flexframesync_decode_payload_soft @907 + flexframesync_destroy @908 + flexframesync_execute @909 + flexframesync_execute_rxheader @910 + flexframesync_execute_rxpayload @911 + flexframesync_execute_rxpreamble @912 + flexframesync_execute_seekpn @913 + flexframesync_get_framedatastats @914 + flexframesync_is_frame_open @915 + flexframesync_print @916 + flexframesync_reset @917 + flexframesync_reset_framedatastats @918 + flexframesync_set_header_len @919 + flexframesync_set_header_props @920 + flexframesync_step @921 + fpoly_bessel @922 + fpoly_bessel_roots @923 + fpoly_bessel_roots_orchard @924 + fpoly_bessel_roots_orchard_recursion @925 + framedatastats_print @926 + framedatastats_reset @927 + framegen64_create @928 + framegen64_destroy @929 + framegen64_execute @930 + framegen64_print @931 + framesync64_create @932 + framesync64_debug_disable @933 + framesync64_debug_enable @934 + framesync64_debug_print @935 + framesync64_destroy @936 + framesync64_execute @937 + framesync64_execute_rxpayload @938 + framesync64_execute_rxpreamble @939 + framesync64_execute_seekpn @940 + framesync64_print @941 + framesync64_reset @942 + framesync64_step @943 + framesyncstats_default @944 DATA + framesyncstats_init_default @945 + framesyncstats_print @946 + freqdem_create @947 + freqdem_demodulate @948 + freqdem_demodulate_block @949 + freqdem_destroy @950 + freqdem_print @951 + freqdem_reset @952 + freqmod_create @953 + freqmod_destroy @954 + freqmod_modulate @955 + freqmod_modulate_block @956 + freqmod_print @957 + freqmod_reset @958 + fskdem_create @959 + fskdem_demodulate @960 + fskdem_destroy @961 + fskdem_get_frequency_error @962 + fskdem_print @963 + fskdem_reset @964 + fskmod_create @965 + fskmod_destroy @966 + fskmod_modulate @967 + fskmod_print @968 + fskmod_reset @969 + gasearch_create @970 + gasearch_create_advanced @971 + gasearch_crossover @972 + gasearch_destroy @973 + gasearch_evaluate @974 + gasearch_evolve @975 + gasearch_getopt @976 + gasearch_mutate @977 + gasearch_print @978 + gasearch_rank @979 + gasearch_run @980 + gasearch_set_mutation_rate @981 + gasearch_set_population_size @982 + gmskdem_create @983 + gmskdem_debug_print @984 + gmskdem_demodulate @985 + gmskdem_destroy @986 + gmskdem_print @987 + gmskdem_reset @988 + gmskdem_set_eq_bw @989 + gmskframegen_assemble @990 + gmskframegen_create @991 + gmskframegen_destroy @992 + gmskframegen_encode_header @993 + gmskframegen_getframelen @994 + gmskframegen_is_assembled @995 + gmskframegen_print @996 + gmskframegen_reset @997 + gmskframegen_set_header_len @998 + gmskframegen_write_header @999 + gmskframegen_write_payload @1000 + gmskframegen_write_preamble @1001 + gmskframegen_write_samples @1002 + gmskframegen_write_tail @1003 + gmskframesync_create @1004 + gmskframesync_debug_disable @1005 + gmskframesync_debug_enable @1006 + gmskframesync_debug_print @1007 + gmskframesync_decode_header @1008 + gmskframesync_destroy @1009 + gmskframesync_execute @1010 + gmskframesync_execute_detectframe @1011 + gmskframesync_execute_rxheader @1012 + gmskframesync_execute_rxpayload @1013 + gmskframesync_execute_rxpreamble @1014 + gmskframesync_execute_sample @1015 + gmskframesync_is_frame_open @1016 + gmskframesync_print @1017 + gmskframesync_pushpn @1018 + gmskframesync_reset @1019 + gmskframesync_set_header_len @1020 + gmskframesync_syncpn @1021 + gmskframesync_update_fi @1022 + gmskframesync_update_symsync @1023 + gmskmod_create @1024 + gmskmod_destroy @1025 + gmskmod_modulate @1026 + gmskmod_print @1027 + gmskmod_reset @1028 + golay2412_Gt @1029 DATA + golay2412_H @1030 DATA + golay2412_P @1031 DATA + golay2412_matrix_mul @1032 + golay2412_parity_search @1033 + gradsearch_create @1034 + gradsearch_destroy @1035 + gradsearch_execute @1036 + gradsearch_gradient @1037 + gradsearch_linesearch @1038 + gradsearch_norm @1039 + gradsearch_print @1040 + gradsearch_step @1041 + gray_decode @1042 + gray_encode @1043 + hamming @1044 + hamming128_enc_gentab @1045 DATA + hamming74_dec_gentab @1046 DATA + hamming74_enc_gentab @1047 DATA + hamming84_dec_gentab @1048 DATA + hamming84_enc_gentab @1049 DATA + hann @1050 + icrandnf @1051 + iir_group_delay @1052 + iirdecim_cccf_create @1053 + iirdecim_cccf_create_default @1054 + iirdecim_cccf_create_prototype @1055 + iirdecim_cccf_destroy @1056 + iirdecim_cccf_execute @1057 + iirdecim_cccf_execute_block @1058 + iirdecim_cccf_groupdelay @1059 + iirdecim_cccf_print @1060 + iirdecim_cccf_reset @1061 + iirdecim_crcf_create @1062 + iirdecim_crcf_create_default @1063 + iirdecim_crcf_create_prototype @1064 + iirdecim_crcf_destroy @1065 + iirdecim_crcf_execute @1066 + iirdecim_crcf_execute_block @1067 + iirdecim_crcf_groupdelay @1068 + iirdecim_crcf_print @1069 + iirdecim_crcf_reset @1070 + iirdecim_rrrf_create @1071 + iirdecim_rrrf_create_default @1072 + iirdecim_rrrf_create_prototype @1073 + iirdecim_rrrf_destroy @1074 + iirdecim_rrrf_execute @1075 + iirdecim_rrrf_execute_block @1076 + iirdecim_rrrf_groupdelay @1077 + iirdecim_rrrf_print @1078 + iirdecim_rrrf_reset @1079 + iirdes_dzpk2sosf @1080 + iirdes_dzpk2tff @1081 + iirdes_dzpk_lp2bp @1082 + iirdes_dzpk_lp2hp @1083 + iirdes_freqprewarp @1084 + iirdes_isstable @1085 + iirdes_pll_active_PI @1086 + iirdes_pll_active_lag @1087 + iirfilt_cccf_create @1088 + iirfilt_cccf_create_dc_blocker @1089 + iirfilt_cccf_create_differentiator @1090 + iirfilt_cccf_create_integrator @1091 + iirfilt_cccf_create_lowpass @1092 + iirfilt_cccf_create_pll @1093 + iirfilt_cccf_create_prototype @1094 + iirfilt_cccf_create_sos @1095 + iirfilt_cccf_destroy @1096 + iirfilt_cccf_execute @1097 + iirfilt_cccf_execute_block @1098 + iirfilt_cccf_execute_norm @1099 + iirfilt_cccf_execute_sos @1100 + iirfilt_cccf_freqresponse @1101 + iirfilt_cccf_get_length @1102 + iirfilt_cccf_groupdelay @1103 + iirfilt_cccf_init @1104 + iirfilt_cccf_print @1105 + iirfilt_cccf_reset @1106 + iirfilt_crcf_create @1107 + iirfilt_crcf_create_dc_blocker @1108 + iirfilt_crcf_create_differentiator @1109 + iirfilt_crcf_create_integrator @1110 + iirfilt_crcf_create_lowpass @1111 + iirfilt_crcf_create_pll @1112 + iirfilt_crcf_create_prototype @1113 + iirfilt_crcf_create_sos @1114 + iirfilt_crcf_destroy @1115 + iirfilt_crcf_execute @1116 + iirfilt_crcf_execute_block @1117 + iirfilt_crcf_execute_norm @1118 + iirfilt_crcf_execute_sos @1119 + iirfilt_crcf_freqresponse @1120 + iirfilt_crcf_get_length @1121 + iirfilt_crcf_groupdelay @1122 + iirfilt_crcf_init @1123 + iirfilt_crcf_print @1124 + iirfilt_crcf_reset @1125 + iirfilt_rrrf_create @1126 + iirfilt_rrrf_create_dc_blocker @1127 + iirfilt_rrrf_create_differentiator @1128 + iirfilt_rrrf_create_integrator @1129 + iirfilt_rrrf_create_lowpass @1130 + iirfilt_rrrf_create_pll @1131 + iirfilt_rrrf_create_prototype @1132 + iirfilt_rrrf_create_sos @1133 + iirfilt_rrrf_destroy @1134 + iirfilt_rrrf_execute @1135 + iirfilt_rrrf_execute_block @1136 + iirfilt_rrrf_execute_norm @1137 + iirfilt_rrrf_execute_sos @1138 + iirfilt_rrrf_freqresponse @1139 + iirfilt_rrrf_get_length @1140 + iirfilt_rrrf_groupdelay @1141 + iirfilt_rrrf_init @1142 + iirfilt_rrrf_print @1143 + iirfilt_rrrf_reset @1144 + iirfiltsos_cccf_create @1145 + iirfiltsos_cccf_destroy @1146 + iirfiltsos_cccf_execute @1147 + iirfiltsos_cccf_execute_df1 @1148 + iirfiltsos_cccf_execute_df2 @1149 + iirfiltsos_cccf_groupdelay @1150 + iirfiltsos_cccf_print @1151 + iirfiltsos_cccf_reset @1152 + iirfiltsos_cccf_set_coefficients @1153 + iirfiltsos_crcf_create @1154 + iirfiltsos_crcf_destroy @1155 + iirfiltsos_crcf_execute @1156 + iirfiltsos_crcf_execute_df1 @1157 + iirfiltsos_crcf_execute_df2 @1158 + iirfiltsos_crcf_groupdelay @1159 + iirfiltsos_crcf_print @1160 + iirfiltsos_crcf_reset @1161 + iirfiltsos_crcf_set_coefficients @1162 + iirfiltsos_rrrf_create @1163 + iirfiltsos_rrrf_destroy @1164 + iirfiltsos_rrrf_execute @1165 + iirfiltsos_rrrf_execute_df1 @1166 + iirfiltsos_rrrf_execute_df2 @1167 + iirfiltsos_rrrf_groupdelay @1168 + iirfiltsos_rrrf_print @1169 + iirfiltsos_rrrf_reset @1170 + iirfiltsos_rrrf_set_coefficients @1171 + iirhilbf_c2r_execute @1172 + iirhilbf_create @1173 + iirhilbf_create_default @1174 + iirhilbf_decim_execute @1175 + iirhilbf_decim_execute_block @1176 + iirhilbf_destroy @1177 + iirhilbf_interp_execute @1178 + iirhilbf_interp_execute_block @1179 + iirhilbf_print @1180 + iirhilbf_r2c_execute @1181 + iirhilbf_reset @1182 + iirinterp_cccf_create @1183 + iirinterp_cccf_create_default @1184 + iirinterp_cccf_create_prototype @1185 + iirinterp_cccf_destroy @1186 + iirinterp_cccf_execute @1187 + iirinterp_cccf_execute_block @1188 + iirinterp_cccf_groupdelay @1189 + iirinterp_cccf_print @1190 + iirinterp_cccf_reset @1191 + iirinterp_crcf_create @1192 + iirinterp_crcf_create_default @1193 + iirinterp_crcf_create_prototype @1194 + iirinterp_crcf_destroy @1195 + iirinterp_crcf_execute @1196 + iirinterp_crcf_execute_block @1197 + iirinterp_crcf_groupdelay @1198 + iirinterp_crcf_print @1199 + iirinterp_crcf_reset @1200 + iirinterp_rrrf_create @1201 + iirinterp_rrrf_create_default @1202 + iirinterp_rrrf_create_prototype @1203 + iirinterp_rrrf_destroy @1204 + iirinterp_rrrf_execute @1205 + iirinterp_rrrf_execute_block @1206 + iirinterp_rrrf_groupdelay @1207 + iirinterp_rrrf_print @1208 + iirinterp_rrrf_reset @1209 + interleaver_create @1210 + interleaver_decode @1211 + interleaver_decode_soft @1212 + interleaver_destroy @1213 + interleaver_encode @1214 + interleaver_encode_soft @1215 + interleaver_permute @1216 + interleaver_permute_mask @1217 + interleaver_permute_mask_soft @1218 + interleaver_permute_soft @1219 + interleaver_print @1220 + interleaver_set_depth @1221 + kaiser @1222 + kaiser_beta_As @1223 + landenf @1224 + liquid_MarcumQ1f @1225 + liquid_MarcumQf @1226 + liquid_Qf @1227 + liquid_apsk128 @1228 DATA + liquid_apsk16 @1229 DATA + liquid_apsk256 @1230 DATA + liquid_apsk32 @1231 DATA + liquid_apsk4 @1232 DATA + liquid_apsk64 @1233 DATA + liquid_apsk8 @1234 DATA + liquid_asechf @1235 + liquid_bdotprod @1236 + liquid_besseli0f @1237 + liquid_besselif @1238 + liquid_besselj0f @1239 + liquid_besseljf @1240 + liquid_c_leading_zeros @1241 DATA + liquid_c_ones @1242 DATA + liquid_c_ones_mod2 @1243 DATA + liquid_cacosf @1244 + liquid_cargf_approx @1245 + liquid_casinf @1246 + liquid_catanf @1247 + liquid_cexpf @1248 + liquid_clogf @1249 + liquid_cosf @1250 + liquid_count_leading_zeros @1251 + liquid_count_ones @1252 + liquid_count_ones_mod2 @1253 + liquid_cplxpair @1254 + liquid_cplxpair_cleanup @1255 + liquid_csqrtf @1256 + liquid_expf @1257 + liquid_factor @1258 + liquid_factorialf @1259 + liquid_fft_estimate_method @1260 + liquid_filter_autocorr @1261 + liquid_filter_crosscorr @1262 + liquid_filter_energy @1263 + liquid_filter_isi @1264 + liquid_firdes_arkaiser @1265 + liquid_firdes_doppler @1266 + liquid_firdes_farcsech @1267 + liquid_firdes_farcsech_freqresponse @1268 + liquid_firdes_fexp @1269 + liquid_firdes_fexp_freqresponse @1270 + liquid_firdes_fnyquist @1271 + liquid_firdes_fsech @1272 + liquid_firdes_fsech_freqresponse @1273 + liquid_firdes_gmskrx @1274 + liquid_firdes_gmsktx @1275 + liquid_firdes_hM3 @1276 + liquid_firdes_kaiser @1277 + liquid_firdes_prototype @1278 + liquid_firdes_rcos @1279 + liquid_firdes_rfarcsech @1280 + liquid_firdes_rfexp @1281 + liquid_firdes_rfsech @1282 + liquid_firdes_rkaiser @1283 + liquid_firdes_rkaiser_bisection @1284 + liquid_firdes_rkaiser_internal_isi @1285 + liquid_firdes_rkaiser_quadratic @1286 + liquid_firdes_rrcos @1287 + liquid_gammaf @1288 + liquid_gcd @1289 + liquid_get_scale @1290 + liquid_getopt_str2crc @1291 + liquid_getopt_str2fec @1292 + liquid_getopt_str2firfilt @1293 + liquid_getopt_str2mod @1294 + liquid_getopt_str2window @1295 + liquid_iirdes @1296 + liquid_invgauss @1297 + liquid_is_prime @1298 + liquid_kbd @1299 + liquid_kbd_window @1300 + liquid_lbcircshift @1301 + liquid_lbshift @1302 + liquid_lcircshift @1303 + liquid_levinson @1304 + liquid_libversion @1305 + liquid_libversion_number @1306 + liquid_lnbesselif @1307 + liquid_lngammaf @1308 + liquid_lnlowergammaf @1309 + liquid_lnuppergammaf @1310 + liquid_logf @1311 + liquid_lowergammaf @1312 + liquid_lpc @1313 + liquid_lshift @1314 + liquid_modem_is_apsk @1315 + liquid_modem_is_ask @1316 + liquid_modem_is_dpsk @1317 + liquid_modem_is_psk @1318 + liquid_modem_is_qam @1319 + liquid_modpow @1320 + liquid_msb_index @1321 + liquid_multimodal @1322 + liquid_nchoosek @1323 + liquid_nextpow2 @1324 + liquid_pack_array @1325 + liquid_pack_bytes @1326 + liquid_pack_soft_bits @1327 + liquid_primitive_root @1328 + liquid_primitive_root_prime @1329 + liquid_print_bitstring @1330 + liquid_print_crc_schemes @1331 + liquid_print_fec_schemes @1332 + liquid_print_modulation_schemes @1333 + liquid_print_windows @1334 + liquid_rbcircshift @1335 + liquid_rbshift @1336 + liquid_rcircshift @1337 + liquid_rcostaper_windowf @1338 + liquid_repack_bytes @1339 + liquid_reverse_byte @1340 + liquid_reverse_byte_gentab @1341 DATA + liquid_reverse_uint16 @1342 + liquid_reverse_uint24 @1343 + liquid_reverse_uint32 @1344 + liquid_rosenbrock @1345 + liquid_rshift @1346 + liquid_sincosf @1347 + liquid_sinf @1348 + liquid_spiral @1349 + liquid_sumsqcf @1350 + liquid_sumsqf @1351 + liquid_tanf @1352 + liquid_totient @1353 + liquid_unique_factor @1354 + liquid_unpack_array @1355 + liquid_unpack_bytes @1356 + liquid_unpack_soft_bits @1357 + liquid_unwrap_phase @1358 + liquid_unwrap_phase2 @1359 + liquid_uppergammaf @1360 + liquid_vectorcf_abs @1361 + liquid_vectorcf_add @1362 + liquid_vectorcf_addscalar @1363 + liquid_vectorcf_carg @1364 + liquid_vectorcf_cexpj @1365 + liquid_vectorcf_mul @1366 + liquid_vectorcf_mulscalar @1367 + liquid_vectorcf_norm @1368 + liquid_vectorcf_normalize @1369 + liquid_vectorf_abs @1370 + liquid_vectorf_add @1371 + liquid_vectorf_addscalar @1372 + liquid_vectorf_carg @1373 + liquid_vectorf_cexpj @1374 + liquid_vectorf_mul @1375 + liquid_vectorf_mulscalar @1376 + liquid_vectorf_norm @1377 + liquid_vectorf_normalize @1378 + liquid_version @1379 DATA + liquid_window_str @1380 DATA + matrix_add @1381 + matrix_aug @1382 + matrix_cgsolve @1383 + matrix_chol @1384 + matrix_det @1385 + matrix_det2x2 @1386 + matrix_div @1387 + matrix_eye @1388 + matrix_gjelim @1389 + matrix_gramschmidt @1390 + matrix_hermitian @1391 + matrix_hermitian_mul @1392 + matrix_inv @1393 + matrix_linsolve @1394 + matrix_ludecomp_crout @1395 + matrix_ludecomp_doolittle @1396 + matrix_mul @1397 + matrix_mul_hermitian @1398 + matrix_mul_transpose @1399 + matrix_ones @1400 + matrix_pdiv @1401 + matrix_pivot @1402 + matrix_pmul @1403 + matrix_print @1404 + matrix_proj @1405 + matrix_qrdecomp_gramschmidt @1406 + matrix_sub @1407 + matrix_swaprows @1408 + matrix_trans @1409 + matrix_transpose_mul @1410 + matrix_zeros @1411 + matrixc_add @1412 + matrixc_aug @1413 + matrixc_cgsolve @1414 + matrixc_chol @1415 + matrixc_det @1416 + matrixc_det2x2 @1417 + matrixc_div @1418 + matrixc_eye @1419 + matrixc_gjelim @1420 + matrixc_gramschmidt @1421 + matrixc_hermitian @1422 + matrixc_hermitian_mul @1423 + matrixc_inv @1424 + matrixc_linsolve @1425 + matrixc_ludecomp_crout @1426 + matrixc_ludecomp_doolittle @1427 + matrixc_mul @1428 + matrixc_mul_hermitian @1429 + matrixc_mul_transpose @1430 + matrixc_ones @1431 + matrixc_pdiv @1432 + matrixc_pivot @1433 + matrixc_pmul @1434 + matrixc_print @1435 + matrixc_proj @1436 + matrixc_qrdecomp_gramschmidt @1437 + matrixc_sub @1438 + matrixc_swaprows @1439 + matrixc_trans @1440 + matrixc_transpose_mul @1441 + matrixc_zeros @1442 + matrixcf_add @1443 + matrixcf_aug @1444 + matrixcf_cgsolve @1445 + matrixcf_chol @1446 + matrixcf_det @1447 + matrixcf_det2x2 @1448 + matrixcf_div @1449 + matrixcf_eye @1450 + matrixcf_gjelim @1451 + matrixcf_gramschmidt @1452 + matrixcf_hermitian @1453 + matrixcf_hermitian_mul @1454 + matrixcf_inv @1455 + matrixcf_linsolve @1456 + matrixcf_ludecomp_crout @1457 + matrixcf_ludecomp_doolittle @1458 + matrixcf_mul @1459 + matrixcf_mul_hermitian @1460 + matrixcf_mul_transpose @1461 + matrixcf_ones @1462 + matrixcf_pdiv @1463 + matrixcf_pivot @1464 + matrixcf_pmul @1465 + matrixcf_print @1466 + matrixcf_proj @1467 + matrixcf_qrdecomp_gramschmidt @1468 + matrixcf_sub @1469 + matrixcf_swaprows @1470 + matrixcf_trans @1471 + matrixcf_transpose_mul @1472 + matrixcf_zeros @1473 + matrixf_add @1474 + matrixf_aug @1475 + matrixf_cgsolve @1476 + matrixf_chol @1477 + matrixf_det @1478 + matrixf_det2x2 @1479 + matrixf_div @1480 + matrixf_eye @1481 + matrixf_gjelim @1482 + matrixf_gramschmidt @1483 + matrixf_hermitian @1484 + matrixf_hermitian_mul @1485 + matrixf_inv @1486 + matrixf_linsolve @1487 + matrixf_ludecomp_crout @1488 + matrixf_ludecomp_doolittle @1489 + matrixf_mul @1490 + matrixf_mul_hermitian @1491 + matrixf_mul_transpose @1492 + matrixf_ones @1493 + matrixf_pdiv @1494 + matrixf_pivot @1495 + matrixf_pmul @1496 + matrixf_print @1497 + matrixf_proj @1498 + matrixf_qrdecomp_gramschmidt @1499 + matrixf_sub @1500 + matrixf_swaprows @1501 + matrixf_trans @1502 + matrixf_transpose_mul @1503 + matrixf_zeros @1504 + modem_arb128opt @1505 DATA + modem_arb16opt @1506 DATA + modem_arb256opt @1507 DATA + modem_arb32opt @1508 DATA + modem_arb64opt @1509 DATA + modem_arb_V29 @1510 DATA + modem_arb_balance_iq @1511 + modem_arb_init @1512 + modem_arb_init_file @1513 + modem_arb_scale @1514 + modem_arb_sqam128 @1515 DATA + modem_arb_sqam32 @1516 DATA + modem_arb_vt64 @1517 DATA + modem_create @1518 + modem_create_V29 @1519 + modem_create_apsk @1520 + modem_create_arb @1521 + modem_create_arb128opt @1522 + modem_create_arb16opt @1523 + modem_create_arb256opt @1524 + modem_create_arb32opt @1525 + modem_create_arb64opt @1526 + modem_create_arb64vt @1527 + modem_create_arbitrary @1528 + modem_create_ask @1529 + modem_create_bpsk @1530 + modem_create_dpsk @1531 + modem_create_ook @1532 + modem_create_psk @1533 + modem_create_qam @1534 + modem_create_qpsk @1535 + modem_create_sqam128 @1536 + modem_create_sqam32 @1537 + modem_demodsoft_gentab @1538 + modem_demodulate @1539 + modem_demodulate_apsk @1540 + modem_demodulate_arb @1541 + modem_demodulate_ask @1542 + modem_demodulate_bpsk @1543 + modem_demodulate_dpsk @1544 + modem_demodulate_linear_array @1545 + modem_demodulate_linear_array_ref @1546 + modem_demodulate_ook @1547 + modem_demodulate_psk @1548 + modem_demodulate_qam @1549 + modem_demodulate_qpsk @1550 + modem_demodulate_soft @1551 + modem_demodulate_soft_arb @1552 + modem_demodulate_soft_bpsk @1553 + modem_demodulate_soft_qpsk @1554 + modem_demodulate_soft_table @1555 + modem_demodulate_sqam128 @1556 + modem_demodulate_sqam32 @1557 + modem_destroy @1558 + modem_gen_rand_sym @1559 + modem_get_bps @1560 + modem_get_demodulator_evm @1561 + modem_get_demodulator_phase_error @1562 + modem_get_demodulator_sample @1563 + modem_get_scheme @1564 + modem_init @1565 + modem_init_map @1566 + modem_modulate @1567 + modem_modulate_apsk @1568 + modem_modulate_arb @1569 + modem_modulate_ask @1570 + modem_modulate_bpsk @1571 + modem_modulate_dpsk @1572 + modem_modulate_map @1573 + modem_modulate_ook @1574 + modem_modulate_psk @1575 + modem_modulate_qam @1576 + modem_modulate_qpsk @1577 + modem_modulate_sqam128 @1578 + modem_modulate_sqam32 @1579 + modem_print @1580 + modem_recreate @1581 + modem_reset @1582 + modulation_types @1583 DATA + msequence_advance @1584 + msequence_create @1585 + msequence_create_default @1586 + msequence_create_genpoly @1587 + msequence_default @1588 DATA + msequence_destroy @1589 + msequence_generate_symbol @1590 + msequence_get_length @1591 + msequence_get_state @1592 + msequence_print @1593 + msequence_reset @1594 + msequence_set_state @1595 + msourcecf_add_modem @1596 + msourcecf_add_noise @1597 + msourcecf_add_source @1598 + msourcecf_add_tone @1599 + msourcecf_create @1600 + msourcecf_destroy @1601 + msourcecf_disable @1602 + msourcecf_enable @1603 + msourcecf_get_frequency @1604 + msourcecf_get_gain @1605 + msourcecf_get_source @1606 + msourcecf_print @1607 + msourcecf_remove @1608 + msourcecf_reset @1609 + msourcecf_set_frequency @1610 + msourcecf_set_gain @1611 + msourcecf_write_samples @1612 + msresamp2_cccf_create @1613 + msresamp2_cccf_decim_execute @1614 + msresamp2_cccf_destroy @1615 + msresamp2_cccf_execute @1616 + msresamp2_cccf_get_delay @1617 + msresamp2_cccf_get_num_stages @1618 + msresamp2_cccf_get_rate @1619 + msresamp2_cccf_get_type @1620 + msresamp2_cccf_interp_execute @1621 + msresamp2_cccf_print @1622 + msresamp2_cccf_reset @1623 + msresamp2_crcf_create @1624 + msresamp2_crcf_decim_execute @1625 + msresamp2_crcf_destroy @1626 + msresamp2_crcf_execute @1627 + msresamp2_crcf_get_delay @1628 + msresamp2_crcf_get_num_stages @1629 + msresamp2_crcf_get_rate @1630 + msresamp2_crcf_get_type @1631 + msresamp2_crcf_interp_execute @1632 + msresamp2_crcf_print @1633 + msresamp2_crcf_reset @1634 + msresamp2_rrrf_create @1635 + msresamp2_rrrf_decim_execute @1636 + msresamp2_rrrf_destroy @1637 + msresamp2_rrrf_execute @1638 + msresamp2_rrrf_get_delay @1639 + msresamp2_rrrf_get_num_stages @1640 + msresamp2_rrrf_get_rate @1641 + msresamp2_rrrf_get_type @1642 + msresamp2_rrrf_interp_execute @1643 + msresamp2_rrrf_print @1644 + msresamp2_rrrf_reset @1645 + msresamp_cccf_create @1646 + msresamp_cccf_decim_execute @1647 + msresamp_cccf_destroy @1648 + msresamp_cccf_execute @1649 + msresamp_cccf_get_delay @1650 + msresamp_cccf_get_rate @1651 + msresamp_cccf_interp_execute @1652 + msresamp_cccf_print @1653 + msresamp_cccf_reset @1654 + msresamp_crcf_create @1655 + msresamp_crcf_decim_execute @1656 + msresamp_crcf_destroy @1657 + msresamp_crcf_execute @1658 + msresamp_crcf_get_delay @1659 + msresamp_crcf_get_rate @1660 + msresamp_crcf_interp_execute @1661 + msresamp_crcf_print @1662 + msresamp_crcf_reset @1663 + msresamp_rrrf_create @1664 + msresamp_rrrf_decim_execute @1665 + msresamp_rrrf_destroy @1666 + msresamp_rrrf_execute @1667 + msresamp_rrrf_get_delay @1668 + msresamp_rrrf_get_rate @1669 + msresamp_rrrf_interp_execute @1670 + msresamp_rrrf_print @1671 + msresamp_rrrf_reset @1672 + nco_crcf_adjust_frequency @1673 + nco_crcf_adjust_phase @1674 + nco_crcf_cexpf @1675 + nco_crcf_constrain @1676 + nco_crcf_cos @1677 + nco_crcf_create @1678 + nco_crcf_destroy @1679 + nco_crcf_get_frequency @1680 + nco_crcf_get_phase @1681 + nco_crcf_index @1682 + nco_crcf_mix_block_down @1683 + nco_crcf_mix_block_up @1684 + nco_crcf_mix_down @1685 + nco_crcf_mix_up @1686 + nco_crcf_pll_reset @1687 + nco_crcf_pll_set_bandwidth @1688 + nco_crcf_pll_step @1689 + nco_crcf_print @1690 + nco_crcf_reset @1691 + nco_crcf_set_frequency @1692 + nco_crcf_set_phase @1693 + nco_crcf_sin @1694 + nco_crcf_sincos @1695 + nco_crcf_step @1696 + ofdmflexframegen_assemble @1697 + ofdmflexframegen_create @1698 + ofdmflexframegen_destroy @1699 + ofdmflexframegen_encode_header @1700 + ofdmflexframegen_gen_S0a @1701 + ofdmflexframegen_gen_S0b @1702 + ofdmflexframegen_gen_S1 @1703 + ofdmflexframegen_gen_header @1704 + ofdmflexframegen_gen_payload @1705 + ofdmflexframegen_gen_symbol @1706 + ofdmflexframegen_gen_tail @1707 + ofdmflexframegen_gen_zeros @1708 + ofdmflexframegen_getframelen @1709 + ofdmflexframegen_getprops @1710 + ofdmflexframegen_is_assembled @1711 + ofdmflexframegen_modulate_header @1712 + ofdmflexframegen_print @1713 + ofdmflexframegen_reconfigure @1714 + ofdmflexframegen_reset @1715 + ofdmflexframegen_set_header_len @1716 + ofdmflexframegen_set_header_props @1717 + ofdmflexframegen_setprops @1718 + ofdmflexframegen_write @1719 + ofdmflexframegenprops_init_default @1720 + ofdmflexframesync_create @1721 + ofdmflexframesync_debug_disable @1722 + ofdmflexframesync_debug_enable @1723 + ofdmflexframesync_debug_print @1724 + ofdmflexframesync_decode_header @1725 + ofdmflexframesync_decode_header_soft @1726 + ofdmflexframesync_decode_payload_soft @1727 + ofdmflexframesync_destroy @1728 + ofdmflexframesync_execute @1729 + ofdmflexframesync_get_cfo @1730 + ofdmflexframesync_get_rssi @1731 + ofdmflexframesync_internal_callback @1732 + ofdmflexframesync_is_frame_open @1733 + ofdmflexframesync_print @1734 + ofdmflexframesync_reset @1735 + ofdmflexframesync_rxheader @1736 + ofdmflexframesync_rxpayload @1737 + ofdmflexframesync_set_header_len @1738 + ofdmflexframesync_set_header_props @1739 + ofdmframe_init_S0 @1740 + ofdmframe_init_S1 @1741 + ofdmframe_init_default_sctype @1742 + ofdmframe_init_sctype_range @1743 + ofdmframe_print_sctype @1744 + ofdmframe_validate_sctype @1745 + ofdmframegen_create @1746 + ofdmframegen_destroy @1747 + ofdmframegen_gensymbol @1748 + ofdmframegen_print @1749 + ofdmframegen_reset @1750 + ofdmframegen_write_S0a @1751 + ofdmframegen_write_S0b @1752 + ofdmframegen_write_S1 @1753 + ofdmframegen_writesymbol @1754 + ofdmframegen_writetail @1755 + ofdmframesync_S0_metrics @1756 + ofdmframesync_create @1757 + ofdmframesync_debug_disable @1758 + ofdmframesync_debug_enable @1759 + ofdmframesync_debug_print @1760 + ofdmframesync_destroy @1761 + ofdmframesync_estimate_eqgain @1762 + ofdmframesync_estimate_eqgain_poly @1763 + ofdmframesync_estimate_gain_S0 @1764 + ofdmframesync_estimate_gain_S1 @1765 + ofdmframesync_execute @1766 + ofdmframesync_execute_S0a @1767 + ofdmframesync_execute_S0b @1768 + ofdmframesync_execute_S1 @1769 + ofdmframesync_execute_rxsymbols @1770 + ofdmframesync_execute_seekplcp @1771 + ofdmframesync_get_cfo @1772 + ofdmframesync_get_rssi @1773 + ofdmframesync_is_frame_open @1774 + ofdmframesync_print @1775 + ofdmframesync_reset @1776 + ofdmframesync_rxsymbol @1777 + optim_sort @1778 + optim_threshold_switch @1779 + ordfilt_rrrf_create @1780 + ordfilt_rrrf_create_medfilt @1781 + ordfilt_rrrf_destroy @1782 + ordfilt_rrrf_execute @1783 + ordfilt_rrrf_execute_block @1784 + ordfilt_rrrf_print @1785 + ordfilt_rrrf_push @1786 + ordfilt_rrrf_reset @1787 + ordfilt_rrrf_write @1788 + ordfilt_sort_compf @1789 + packetizer_compute_dec_msg_len @1790 + packetizer_compute_enc_msg_len @1791 + packetizer_create @1792 + packetizer_decode @1793 + packetizer_decode_soft @1794 + packetizer_destroy @1795 + packetizer_encode @1796 + packetizer_get_crc @1797 + packetizer_get_dec_msg_len @1798 + packetizer_get_enc_msg_len @1799 + packetizer_get_fec0 @1800 + packetizer_get_fec1 @1801 + packetizer_print @1802 + packetizer_realloc_buffers @1803 + packetizer_recreate @1804 + packetizer_set_scheme @1805 + poly_expandbinomial @1806 + poly_expandbinomial_pm @1807 + poly_expandroots @1808 + poly_expandroots2 @1809 + poly_findroots @1810 + poly_findroots_bairstow @1811 + poly_findroots_bairstow_recursion @1812 + poly_findroots_durandkerner @1813 + poly_fit @1814 + poly_fit_lagrange @1815 + poly_fit_lagrange_barycentric @1816 + poly_interp_lagrange @1817 + poly_mul @1818 + poly_val @1819 + poly_val_lagrange_barycentric @1820 + polyc_expandbinomial @1821 + polyc_expandbinomial_pm @1822 + polyc_expandroots @1823 + polyc_expandroots2 @1824 + polyc_findroots @1825 + polyc_findroots_bairstow @1826 + polyc_findroots_bairstow_recursion @1827 + polyc_findroots_durandkerner @1828 + polyc_fit @1829 + polyc_fit_lagrange @1830 + polyc_fit_lagrange_barycentric @1831 + polyc_interp_lagrange @1832 + polyc_mul @1833 + polyc_val @1834 + polyc_val_lagrange_barycentric @1835 + polycf_expandbinomial @1836 + polycf_expandbinomial_pm @1837 + polycf_expandroots @1838 + polycf_expandroots2 @1839 + polycf_findroots @1840 + polycf_findroots_bairstow @1841 + polycf_findroots_bairstow_recursion @1842 + polycf_findroots_durandkerner @1843 + polycf_fit @1844 + polycf_fit_lagrange @1845 + polycf_fit_lagrange_barycentric @1846 + polycf_interp_lagrange @1847 + polycf_mul @1848 + polycf_val @1849 + polycf_val_lagrange_barycentric @1850 + polyf_expandbinomial @1851 + polyf_expandbinomial_pm @1852 + polyf_expandroots @1853 + polyf_expandroots2 @1854 + polyf_findroots @1855 + polyf_findroots_bairstow @1856 + polyf_findroots_bairstow_recursion @1857 + polyf_findroots_durandkerner @1858 + polyf_fit @1859 + polyf_fit_lagrange @1860 + polyf_fit_lagrange_barycentric @1861 + polyf_interp_lagrange @1862 + polyf_mul @1863 + polyf_val @1864 + polyf_val_lagrange_barycentric @1865 + presync_cccf_correlate @1866 + presync_cccf_create @1867 + presync_cccf_destroy @1868 + presync_cccf_execute @1869 + presync_cccf_print @1870 + presync_cccf_push @1871 + presync_cccf_reset @1872 + qdetector_cccf_create @1873 + qdetector_cccf_create_cpfsk @1874 + qdetector_cccf_create_gmsk @1875 + qdetector_cccf_create_linear @1876 + qdetector_cccf_destroy @1877 + qdetector_cccf_execute @1878 + qdetector_cccf_execute_align @1879 + qdetector_cccf_execute_seek @1880 + qdetector_cccf_get_buf_len @1881 + qdetector_cccf_get_dphi @1882 + qdetector_cccf_get_gamma @1883 + qdetector_cccf_get_phi @1884 + qdetector_cccf_get_rxy @1885 + qdetector_cccf_get_seq_len @1886 + qdetector_cccf_get_sequence @1887 + qdetector_cccf_get_tau @1888 + qdetector_cccf_print @1889 + qdetector_cccf_reset @1890 + qdetector_cccf_set_range @1891 + qdetector_cccf_set_threshold @1892 + qnsearch_compute_Hessian @1893 + qnsearch_compute_gradient @1894 + qnsearch_create @1895 + qnsearch_destroy @1896 + qnsearch_normalize_gradient @1897 + qnsearch_print @1898 + qnsearch_reset @1899 + qnsearch_run @1900 + qnsearch_step @1901 + qpacketmodem_configure @1902 + qpacketmodem_create @1903 + qpacketmodem_decode @1904 + qpacketmodem_decode_bits @1905 + qpacketmodem_decode_soft @1906 + qpacketmodem_decode_soft_payload @1907 + qpacketmodem_decode_soft_sym @1908 + qpacketmodem_decode_syms @1909 + qpacketmodem_destroy @1910 + qpacketmodem_encode @1911 + qpacketmodem_encode_syms @1912 + qpacketmodem_get_crc @1913 + qpacketmodem_get_demodulator_evm @1914 + qpacketmodem_get_demodulator_phase_error @1915 + qpacketmodem_get_fec0 @1916 + qpacketmodem_get_fec1 @1917 + qpacketmodem_get_frame_len @1918 + qpacketmodem_get_modscheme @1919 + qpacketmodem_get_payload_len @1920 + qpacketmodem_print @1921 + qpacketmodem_reset @1922 + qpilotgen_create @1923 + qpilotgen_destroy @1924 + qpilotgen_execute @1925 + qpilotgen_get_frame_len @1926 + qpilotgen_print @1927 + qpilotgen_recreate @1928 + qpilotgen_reset @1929 + qpilotsync_create @1930 + qpilotsync_destroy @1931 + qpilotsync_execute @1932 + qpilotsync_get_dphi @1933 + qpilotsync_get_frame_len @1934 + qpilotsync_get_gain @1935 + qpilotsync_get_phi @1936 + qpilotsync_print @1937 + qpilotsync_recreate @1938 + qpilotsync_reset @1939 + qsourcecf_create_modem @1940 + qsourcecf_create_noise @1941 + qsourcecf_create_tone @1942 + qsourcecf_destroy @1943 + qsourcecf_disable @1944 + qsourcecf_enable @1945 + qsourcecf_gen_sample @1946 + qsourcecf_get_frequency @1947 + qsourcecf_get_gain @1948 + qsourcecf_print @1949 + qsourcecf_reset @1950 + qsourcecf_set_frequency @1951 + qsourcecf_set_gain @1952 + quantize_adc @1953 + quantize_dac @1954 + quantizercf_create @1955 + quantizercf_destroy @1956 + quantizercf_execute_adc @1957 + quantizercf_execute_dac @1958 + quantizercf_print @1959 + quantizerf_create @1960 + quantizerf_destroy @1961 + quantizerf_execute_adc @1962 + quantizerf_execute_dac @1963 + quantizerf_print @1964 + randexpf @1965 + randexpf_cdf @1966 + randexpf_pdf @1967 + randf @1968 + randf_cdf @1969 + randf_pdf @1970 + randgammaf @1971 + randgammaf_cdf @1972 + randgammaf_delta @1973 + randgammaf_pdf @1974 + randnakmf @1975 + randnakmf_cdf @1976 + randnakmf_pdf @1977 + randnf @1978 + randnf_cdf @1979 + randnf_pdf @1980 + randricekf @1981 + randricekf_cdf @1982 + randricekf_pdf @1983 + randuf @1984 + randuf_cdf @1985 + randuf_pdf @1986 + randweibf @1987 + randweibf_cdf @1988 + randweibf_pdf @1989 + resamp2_cccf_analyzer_execute @1990 + resamp2_cccf_create @1991 + resamp2_cccf_decim_execute @1992 + resamp2_cccf_destroy @1993 + resamp2_cccf_filter_execute @1994 + resamp2_cccf_get_delay @1995 + resamp2_cccf_interp_execute @1996 + resamp2_cccf_print @1997 + resamp2_cccf_recreate @1998 + resamp2_cccf_reset @1999 + resamp2_cccf_synthesizer_execute @2000 + resamp2_crcf_analyzer_execute @2001 + resamp2_crcf_create @2002 + resamp2_crcf_decim_execute @2003 + resamp2_crcf_destroy @2004 + resamp2_crcf_filter_execute @2005 + resamp2_crcf_get_delay @2006 + resamp2_crcf_interp_execute @2007 + resamp2_crcf_print @2008 + resamp2_crcf_recreate @2009 + resamp2_crcf_reset @2010 + resamp2_crcf_synthesizer_execute @2011 + resamp2_rrrf_analyzer_execute @2012 + resamp2_rrrf_create @2013 + resamp2_rrrf_decim_execute @2014 + resamp2_rrrf_destroy @2015 + resamp2_rrrf_filter_execute @2016 + resamp2_rrrf_get_delay @2017 + resamp2_rrrf_interp_execute @2018 + resamp2_rrrf_print @2019 + resamp2_rrrf_recreate @2020 + resamp2_rrrf_reset @2021 + resamp2_rrrf_synthesizer_execute @2022 + resamp_cccf_adjust_rate @2023 + resamp_cccf_adjust_timing_phase @2024 + resamp_cccf_create @2025 + resamp_cccf_create_default @2026 + resamp_cccf_destroy @2027 + resamp_cccf_execute @2028 + resamp_cccf_execute_block @2029 + resamp_cccf_get_delay @2030 + resamp_cccf_get_rate @2031 + resamp_cccf_print @2032 + resamp_cccf_reset @2033 + resamp_cccf_set_rate @2034 + resamp_cccf_set_timing_phase @2035 + resamp_crcf_adjust_rate @2036 + resamp_crcf_adjust_timing_phase @2037 + resamp_crcf_create @2038 + resamp_crcf_create_default @2039 + resamp_crcf_destroy @2040 + resamp_crcf_execute @2041 + resamp_crcf_execute_block @2042 + resamp_crcf_get_delay @2043 + resamp_crcf_get_rate @2044 + resamp_crcf_print @2045 + resamp_crcf_reset @2046 + resamp_crcf_set_rate @2047 + resamp_crcf_set_timing_phase @2048 + resamp_rrrf_adjust_rate @2049 + resamp_rrrf_adjust_timing_phase @2050 + resamp_rrrf_create @2051 + resamp_rrrf_create_default @2052 + resamp_rrrf_destroy @2053 + resamp_rrrf_execute @2054 + resamp_rrrf_execute_block @2055 + resamp_rrrf_get_delay @2056 + resamp_rrrf_get_rate @2057 + resamp_rrrf_print @2058 + resamp_rrrf_reset @2059 + resamp_rrrf_set_rate @2060 + resamp_rrrf_set_timing_phase @2061 + rkaiser_approximate_rho @2062 + rresamp_cccf_create @2063 + rresamp_cccf_create_default @2064 + rresamp_cccf_destroy @2065 + rresamp_cccf_execute @2066 + rresamp_cccf_get_decim @2067 + rresamp_cccf_get_delay @2068 + rresamp_cccf_get_interp @2069 + rresamp_cccf_get_rate @2070 + rresamp_cccf_get_scale @2071 + rresamp_cccf_print @2072 + rresamp_cccf_reset @2073 + rresamp_cccf_set_scale @2074 + rresamp_crcf_create @2075 + rresamp_crcf_create_default @2076 + rresamp_crcf_destroy @2077 + rresamp_crcf_execute @2078 + rresamp_crcf_get_decim @2079 + rresamp_crcf_get_delay @2080 + rresamp_crcf_get_interp @2081 + rresamp_crcf_get_rate @2082 + rresamp_crcf_get_scale @2083 + rresamp_crcf_print @2084 + rresamp_crcf_reset @2085 + rresamp_crcf_set_scale @2086 + rresamp_rrrf_create @2087 + rresamp_rrrf_create_default @2088 + rresamp_rrrf_destroy @2089 + rresamp_rrrf_execute @2090 + rresamp_rrrf_get_decim @2091 + rresamp_rrrf_get_delay @2092 + rresamp_rrrf_get_interp @2093 + rresamp_rrrf_get_rate @2094 + rresamp_rrrf_get_scale @2095 + rresamp_rrrf_print @2096 + rresamp_rrrf_reset @2097 + rresamp_rrrf_set_scale @2098 + scramble_data @2099 + secded2216_P @2100 DATA + secded2216_syndrome_w1 @2101 DATA + secded3932_P @2102 DATA + secded3932_syndrome_w1 @2103 DATA + secded7264_P @2104 DATA + secded7264_syndrome_w1 @2105 DATA + sincf @2106 + smatrix_indexsearch @2107 + smatrixb_clear @2108 + smatrixb_create @2109 + smatrixb_create_array @2110 + smatrixb_delete @2111 + smatrixb_destroy @2112 + smatrixb_eye @2113 + smatrixb_get @2114 + smatrixb_insert @2115 + smatrixb_isset @2116 + smatrixb_mul @2117 + smatrixb_mulf @2118 + smatrixb_print @2119 + smatrixb_print_expanded @2120 + smatrixb_reset @2121 + smatrixb_reset_max_mlist @2122 + smatrixb_reset_max_nlist @2123 + smatrixb_set @2124 + smatrixb_size @2125 + smatrixb_vmul @2126 + smatrixb_vmulf @2127 + smatrixf_clear @2128 + smatrixf_create @2129 + smatrixf_create_array @2130 + smatrixf_delete @2131 + smatrixf_destroy @2132 + smatrixf_eye @2133 + smatrixf_get @2134 + smatrixf_insert @2135 + smatrixf_isset @2136 + smatrixf_mul @2137 + smatrixf_print @2138 + smatrixf_print_expanded @2139 + smatrixf_reset @2140 + smatrixf_reset_max_mlist @2141 + smatrixf_reset_max_nlist @2142 + smatrixf_set @2143 + smatrixf_size @2144 + smatrixf_vmul @2145 + smatrixi_clear @2146 + smatrixi_create @2147 + smatrixi_create_array @2148 + smatrixi_delete @2149 + smatrixi_destroy @2150 + smatrixi_eye @2151 + smatrixi_get @2152 + smatrixi_insert @2153 + smatrixi_isset @2154 + smatrixi_mul @2155 + smatrixi_print @2156 + smatrixi_print_expanded @2157 + smatrixi_reset @2158 + smatrixi_reset_max_mlist @2159 + smatrixi_reset_max_nlist @2160 + smatrixi_set @2161 + smatrixi_size @2162 + smatrixi_vmul @2163 + spgramcf_clear @2164 + spgramcf_create @2165 + spgramcf_create_default @2166 + spgramcf_destroy @2167 + spgramcf_estimate_psd @2168 + spgramcf_export_gnuplot @2169 + spgramcf_get_delay @2170 + spgramcf_get_nfft @2171 + spgramcf_get_num_samples @2172 + spgramcf_get_num_samples_total @2173 + spgramcf_get_num_transforms @2174 + spgramcf_get_num_transforms_total @2175 + spgramcf_get_psd @2176 + spgramcf_get_window_len @2177 + spgramcf_print @2178 + spgramcf_push @2179 + spgramcf_reset @2180 + spgramcf_set_alpha @2181 + spgramcf_set_freq @2182 + spgramcf_set_rate @2183 + spgramcf_step @2184 + spgramcf_write @2185 + spgramf_clear @2186 + spgramf_create @2187 + spgramf_create_default @2188 + spgramf_destroy @2189 + spgramf_estimate_psd @2190 + spgramf_export_gnuplot @2191 + spgramf_get_delay @2192 + spgramf_get_nfft @2193 + spgramf_get_num_samples @2194 + spgramf_get_num_samples_total @2195 + spgramf_get_num_transforms @2196 + spgramf_get_num_transforms_total @2197 + spgramf_get_psd @2198 + spgramf_get_window_len @2199 + spgramf_print @2200 + spgramf_push @2201 + spgramf_reset @2202 + spgramf_set_alpha @2203 + spgramf_set_freq @2204 + spgramf_set_rate @2205 + spgramf_step @2206 + spgramf_write @2207 + spwaterfallcf_clear @2208 + spwaterfallcf_consolidate_buffer @2209 + spwaterfallcf_create @2210 + spwaterfallcf_create_default @2211 + spwaterfallcf_destroy @2212 + spwaterfallcf_export @2213 + spwaterfallcf_export_bin @2214 + spwaterfallcf_export_gnu @2215 + spwaterfallcf_print @2216 + spwaterfallcf_push @2217 + spwaterfallcf_reset @2218 + spwaterfallcf_set_commands @2219 + spwaterfallcf_set_dims @2220 + spwaterfallcf_set_freq @2221 + spwaterfallcf_set_rate @2222 + spwaterfallcf_step @2223 + spwaterfallcf_write @2224 + spwaterfallf_clear @2225 + spwaterfallf_consolidate_buffer @2226 + spwaterfallf_create @2227 + spwaterfallf_create_default @2228 + spwaterfallf_destroy @2229 + spwaterfallf_export @2230 + spwaterfallf_export_bin @2231 + spwaterfallf_export_gnu @2232 + spwaterfallf_print @2233 + spwaterfallf_push @2234 + spwaterfallf_reset @2235 + spwaterfallf_set_commands @2236 + spwaterfallf_set_dims @2237 + spwaterfallf_set_freq @2238 + spwaterfallf_set_rate @2239 + spwaterfallf_step @2240 + spwaterfallf_write @2241 + sumproduct_phi @2242 + symstreamcf_create @2243 + symstreamcf_create_linear @2244 + symstreamcf_destroy @2245 + symstreamcf_fill_buffer @2246 + symstreamcf_get_gain @2247 + symstreamcf_get_scheme @2248 + symstreamcf_print @2249 + symstreamcf_reset @2250 + symstreamcf_set_gain @2251 + symstreamcf_set_scheme @2252 + symstreamcf_write_samples @2253 + symsync_crcf_advance_internal_loop @2254 + symsync_crcf_create @2255 + symsync_crcf_create_kaiser @2256 + symsync_crcf_create_rnyquist @2257 + symsync_crcf_destroy @2258 + symsync_crcf_execute @2259 + symsync_crcf_get_tau @2260 + symsync_crcf_lock @2261 + symsync_crcf_output_debug_file @2262 + symsync_crcf_print @2263 + symsync_crcf_reset @2264 + symsync_crcf_set_lf_bw @2265 + symsync_crcf_set_output_rate @2266 + symsync_crcf_step @2267 + symsync_crcf_unlock @2268 + symsync_rrrf_advance_internal_loop @2269 + symsync_rrrf_create @2270 + symsync_rrrf_create_kaiser @2271 + symsync_rrrf_create_rnyquist @2272 + symsync_rrrf_destroy @2273 + symsync_rrrf_execute @2274 + symsync_rrrf_get_tau @2275 + symsync_rrrf_lock @2276 + symsync_rrrf_output_debug_file @2277 + symsync_rrrf_print @2278 + symsync_rrrf_reset @2279 + symsync_rrrf_set_lf_bw @2280 + symsync_rrrf_set_output_rate @2281 + symsync_rrrf_step @2282 + symsync_rrrf_unlock @2283 + symtrack_cccf_adjust_phase @2284 + symtrack_cccf_create @2285 + symtrack_cccf_create_default @2286 + symtrack_cccf_destroy @2287 + symtrack_cccf_execute @2288 + symtrack_cccf_execute_block @2289 + symtrack_cccf_print @2290 + symtrack_cccf_reset @2291 + symtrack_cccf_set_bandwidth @2292 + symtrack_cccf_set_modscheme @2293 + synth_crcf_adjust_frequency @2294 + synth_crcf_adjust_phase @2295 + synth_crcf_compute_synth @2296 + synth_crcf_constrain_frequency @2297 + synth_crcf_constrain_phase @2298 + synth_crcf_create @2299 + synth_crcf_despread @2300 + synth_crcf_despread_triple @2301 + synth_crcf_destroy @2302 + synth_crcf_get_current @2303 + synth_crcf_get_frequency @2304 + synth_crcf_get_half_next @2305 + synth_crcf_get_half_previous @2306 + synth_crcf_get_length @2307 + synth_crcf_get_phase @2308 + synth_crcf_mix_block_down @2309 + synth_crcf_mix_block_up @2310 + synth_crcf_mix_down @2311 + synth_crcf_mix_up @2312 + synth_crcf_pll_reset @2313 + synth_crcf_pll_set_bandwidth @2314 + synth_crcf_pll_step @2315 + synth_crcf_reset @2316 + synth_crcf_set_frequency @2317 + synth_crcf_set_phase @2318 + synth_crcf_spread @2319 + synth_crcf_step @2320 + triangular @2321 + tvmpch_cccf_create @2322 + tvmpch_cccf_destroy @2323 + tvmpch_cccf_execute @2324 + tvmpch_cccf_execute_block @2325 + tvmpch_cccf_print @2326 + tvmpch_cccf_push @2327 + tvmpch_cccf_reset @2328 + unscramble_data @2329 + unscramble_data_soft @2330 + wdelaycf_create @2331 + wdelaycf_destroy @2332 + wdelaycf_print @2333 + wdelaycf_push @2334 + wdelaycf_read @2335 + wdelaycf_recreate @2336 + wdelaycf_reset @2337 + wdelayf_create @2338 + wdelayf_destroy @2339 + wdelayf_print @2340 + wdelayf_push @2341 + wdelayf_read @2342 + wdelayf_recreate @2343 + wdelayf_reset @2344 + windowcf_create @2345 + windowcf_debug_print @2346 + windowcf_destroy @2347 + windowcf_index @2348 + windowcf_print @2349 + windowcf_push @2350 + windowcf_read @2351 + windowcf_recreate @2352 + windowcf_reset @2353 + windowcf_write @2354 + windowf_create @2355 + windowf_debug_print @2356 + windowf_destroy @2357 + windowf_index @2358 + windowf_print @2359 + windowf_push @2360 + windowf_read @2361 + windowf_recreate @2362 + windowf_reset @2363 + windowf_write @2364 diff --git a/external/liquid-dsp/msvc/64/libliquid.dll b/external/liquid-dsp/msvc/64/libliquid.dll index ac24a45..ab8945e 100644 Binary files a/external/liquid-dsp/msvc/64/libliquid.dll and b/external/liquid-dsp/msvc/64/libliquid.dll differ diff --git a/external/liquid-dsp/msvc/64/libliquid.lib b/external/liquid-dsp/msvc/64/libliquid.lib index 4e39bb3..79b6a2d 100644 Binary files a/external/liquid-dsp/msvc/64/libliquid.lib and b/external/liquid-dsp/msvc/64/libliquid.lib differ diff --git a/external/msvc/x64/libwinpthread-1.dll b/external/msvc/x64/libwinpthread-1.dll index 3abe916..4256f62 100644 Binary files a/external/msvc/x64/libwinpthread-1.dll and b/external/msvc/x64/libwinpthread-1.dll differ diff --git a/external/msvc/x86/libwinpthread-1.dll b/external/msvc/x86/libwinpthread-1.dll index bfbd77e..e15bdba 100644 Binary files a/external/msvc/x86/libwinpthread-1.dll and b/external/msvc/x86/libwinpthread-1.dll differ