summaryrefslogtreecommitdiff
path: root/gr-atsc/src
diff options
context:
space:
mode:
Diffstat (limited to 'gr-atsc/src')
-rw-r--r--gr-atsc/src/lib/CMakeLists.txt236
-rw-r--r--gr-atsc/src/lib/GrAtscBitTimingLoop.cc223
-rw-r--r--gr-atsc/src/lib/GrAtscBitTimingLoop.h90
-rw-r--r--gr-atsc/src/lib/GrAtscBitTimingLoop2.cc173
-rw-r--r--gr-atsc/src/lib/GrAtscBitTimingLoop2.h80
-rw-r--r--gr-atsc/src/lib/GrAtscBitTimingLoop3.cc106
-rw-r--r--gr-atsc/src/lib/GrAtscBitTimingLoop3.h72
-rw-r--r--gr-atsc/src/lib/GrAtscConvert2xTo20.cc106
-rw-r--r--gr-atsc/src/lib/GrAtscConvert2xTo20.h50
-rw-r--r--gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.cc101
-rw-r--r--gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.h50
-rw-r--r--gr-atsc/src/lib/GrAtscDeinterleaver.cc92
-rw-r--r--gr-atsc/src/lib/GrAtscDeinterleaver.h51
-rw-r--r--gr-atsc/src/lib/GrAtscDerandomizer.cc106
-rw-r--r--gr-atsc/src/lib/GrAtscDerandomizer.h51
-rw-r--r--gr-atsc/src/lib/GrAtscEqualizer.cc135
-rw-r--r--gr-atsc/src/lib/GrAtscEqualizer.h59
-rw-r--r--gr-atsc/src/lib/GrAtscFPLL.cc150
-rw-r--r--gr-atsc/src/lib/GrAtscFPLL.h88
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncChecker.cc101
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncChecker.h54
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncCorrelator.cc95
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncCorrelator.h56
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncDemux.cc173
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncDemux.h60
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncMux.cc246
-rw-r--r--gr-atsc/src/lib/GrAtscFieldSyncMux.h58
-rw-r--r--gr-atsc/src/lib/GrAtscInterleaver.cc101
-rw-r--r--gr-atsc/src/lib/GrAtscInterleaver.h51
-rw-r--r--gr-atsc/src/lib/GrAtscRSDecoder.cc81
-rw-r--r--gr-atsc/src/lib/GrAtscRSDecoder.h51
-rw-r--r--gr-atsc/src/lib/GrAtscRSEncoder.cc84
-rw-r--r--gr-atsc/src/lib/GrAtscRSEncoder.h51
-rw-r--r--gr-atsc/src/lib/GrAtscRandomizer.cc110
-rw-r--r--gr-atsc/src/lib/GrAtscRandomizer.h55
-rw-r--r--gr-atsc/src/lib/GrAtscSegSymSync.cc50
-rw-r--r--gr-atsc/src/lib/GrAtscSegSymSync.h64
-rw-r--r--gr-atsc/src/lib/GrAtscSegSymSyncImpl.cc103
-rw-r--r--gr-atsc/src/lib/GrAtscSegSymSyncImpl.h69
-rw-r--r--gr-atsc/src/lib/GrAtscSegSymSyncImpl_export.h26
-rw-r--r--gr-atsc/src/lib/GrAtscSymbolMapper.h97
-rw-r--r--gr-atsc/src/lib/GrAtscTrellisEncoder.cc144
-rw-r--r--gr-atsc/src/lib/GrAtscTrellisEncoder.h50
-rw-r--r--gr-atsc/src/lib/GrAtscViterbiDecoder.cc135
-rw-r--r--gr-atsc/src/lib/GrAtscViterbiDecoder.h51
-rw-r--r--gr-atsc/src/lib/atsc.i305
-rw-r--r--gr-atsc/src/lib/atsc_api.h33
-rw-r--r--gr-atsc/src/lib/atsc_bit_timing_loop.cc125
-rw-r--r--gr-atsc/src/lib/atsc_bit_timing_loop.h88
-rw-r--r--gr-atsc/src/lib/atsc_consts.h42
-rw-r--r--gr-atsc/src/lib/atsc_deinterleaver.cc59
-rw-r--r--gr-atsc/src/lib/atsc_deinterleaver.h57
-rw-r--r--gr-atsc/src/lib/atsc_depad.cc61
-rw-r--r--gr-atsc/src/lib/atsc_depad.h54
-rw-r--r--gr-atsc/src/lib/atsc_derandomizer.cc79
-rw-r--r--gr-atsc/src/lib/atsc_derandomizer.h57
-rw-r--r--gr-atsc/src/lib/atsc_ds_to_softds.cc73
-rw-r--r--gr-atsc/src/lib/atsc_ds_to_softds.h59
-rw-r--r--gr-atsc/src/lib/atsc_equalizer.cc105
-rw-r--r--gr-atsc/src/lib/atsc_equalizer.h70
-rw-r--r--gr-atsc/src/lib/atsc_field_sync_demux.cc209
-rw-r--r--gr-atsc/src/lib/atsc_field_sync_demux.h76
-rw-r--r--gr-atsc/src/lib/atsc_field_sync_mux.cc203
-rw-r--r--gr-atsc/src/lib/atsc_field_sync_mux.h64
-rw-r--r--gr-atsc/src/lib/atsc_fpll.cc137
-rw-r--r--gr-atsc/src/lib/atsc_fpll.h79
-rw-r--r--gr-atsc/src/lib/atsc_fs_checker.cc75
-rw-r--r--gr-atsc/src/lib/atsc_fs_checker.h63
-rw-r--r--gr-atsc/src/lib/atsc_interleaver.cc59
-rw-r--r--gr-atsc/src/lib/atsc_interleaver.h56
-rw-r--r--gr-atsc/src/lib/atsc_pad.cc78
-rw-r--r--gr-atsc/src/lib/atsc_pad.h56
-rw-r--r--gr-atsc/src/lib/atsc_randomizer.cc87
-rw-r--r--gr-atsc/src/lib/atsc_randomizer.h59
-rw-r--r--gr-atsc/src/lib/atsc_rs_decoder.cc63
-rw-r--r--gr-atsc/src/lib/atsc_rs_decoder.h57
-rw-r--r--gr-atsc/src/lib/atsc_rs_encoder.cc62
-rw-r--r--gr-atsc/src/lib/atsc_rs_encoder.h57
-rw-r--r--gr-atsc/src/lib/atsc_trellis_encoder.cc60
-rw-r--r--gr-atsc/src/lib/atsc_trellis_encoder.h57
-rw-r--r--gr-atsc/src/lib/atsc_types.h238
-rw-r--r--gr-atsc/src/lib/atsc_viterbi_decoder.cc86
-rw-r--r--gr-atsc/src/lib/atsc_viterbi_decoder.h61
-rw-r--r--gr-atsc/src/lib/atsci_basic_trellis_encoder.cc62
-rw-r--r--gr-atsc/src/lib/atsci_basic_trellis_encoder.h61
-rw-r--r--gr-atsc/src/lib/atsci_data_interleaver.cc61
-rw-r--r--gr-atsc/src/lib/atsci_data_interleaver.h65
-rw-r--r--gr-atsc/src/lib/atsci_diag_output.h29
-rw-r--r--gr-atsc/src/lib/atsci_equalizer.cc248
-rw-r--r--gr-atsc/src/lib/atsci_equalizer.h169
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_lms.cc307
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_lms.h79
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_lms2.cc375
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_lms2.h80
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_nop.cc133
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_nop.h63
-rw-r--r--gr-atsc/src/lib/atsci_exp2_lp.cc84
-rw-r--r--gr-atsc/src/lib/atsci_exp2_lp.h35
-rw-r--r--gr-atsc/src/lib/atsci_exp2_lp20.dat178
-rw-r--r--gr-atsc/src/lib/atsci_exp2_lp2x.dat196
-rw-r--r--gr-atsc/src/lib/atsci_fake_single_viterbi.cc72
-rw-r--r--gr-atsc/src/lib/atsci_fake_single_viterbi.h52
-rw-r--r--gr-atsc/src/lib/atsci_fs_checker.cc33
-rw-r--r--gr-atsc/src/lib/atsci_fs_checker.h70
-rw-r--r--gr-atsc/src/lib/atsci_fs_checker_naive.cc140
-rw-r--r--gr-atsc/src/lib/atsci_fs_checker_naive.h74
-rw-r--r--gr-atsc/src/lib/atsci_fs_correlator.cc33
-rw-r--r--gr-atsc/src/lib/atsci_fs_correlator.h65
-rw-r--r--gr-atsc/src/lib/atsci_fs_correlator_naive.cc125
-rw-r--r--gr-atsc/src/lib/atsci_fs_correlator_naive.h70
-rw-r--r--gr-atsc/src/lib/atsci_pnXXX.cc55
-rw-r--r--gr-atsc/src/lib/atsci_pnXXX.h26
-rw-r--r--gr-atsc/src/lib/atsci_randomizer.cc112
-rw-r--r--gr-atsc/src/lib/atsci_randomizer.h97
-rw-r--r--gr-atsc/src/lib/atsci_reed_solomon.cc94
-rw-r--r--gr-atsc/src/lib/atsci_reed_solomon.h57
-rw-r--r--gr-atsc/src/lib/atsci_root_raised_cosine.cc36
-rw-r--r--gr-atsc/src/lib/atsci_root_raised_cosine.h35
-rw-r--r--gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.cc51
-rw-r--r--gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h39
-rw-r--r--gr-atsc/src/lib/atsci_single_viterbi.cc100
-rw-r--r--gr-atsc/src/lib/atsci_single_viterbi.h58
-rw-r--r--gr-atsc/src/lib/atsci_slicer_agc.h69
-rw-r--r--gr-atsc/src/lib/atsci_sliding_correlator.cc90
-rw-r--r--gr-atsc/src/lib/atsci_sliding_correlator.h85
-rw-r--r--gr-atsc/src/lib/atsci_sssr.cc297
-rw-r--r--gr-atsc/src/lib/atsci_sssr.h241
-rw-r--r--gr-atsc/src/lib/atsci_syminfo.h58
-rw-r--r--gr-atsc/src/lib/atsci_sync_tag.h56
-rw-r--r--gr-atsc/src/lib/atsci_trellis_encoder.cc208
-rw-r--r--gr-atsc/src/lib/atsci_trellis_encoder.h67
-rw-r--r--gr-atsc/src/lib/atsci_viterbi_decoder.cc176
-rw-r--r--gr-atsc/src/lib/atsci_viterbi_decoder.h84
-rw-r--r--gr-atsc/src/lib/atsci_viterbi_gen.cc267
-rw-r--r--gr-atsc/src/lib/atsci_vsbtx_lp.cc59
-rw-r--r--gr-atsc/src/lib/atsci_vsbtx_lp.dat49
-rw-r--r--gr-atsc/src/lib/atsci_vsbtx_lp.h37
-rw-r--r--gr-atsc/src/lib/convolutional_interleaver.h126
-rw-r--r--gr-atsc/src/lib/create_atsci_equalizer.cc44
-rw-r--r--gr-atsc/src/lib/create_atsci_equalizer.h33
-rw-r--r--gr-atsc/src/lib/create_atsci_fs_checker.cc30
-rw-r--r--gr-atsc/src/lib/create_atsci_fs_checker.h36
-rw-r--r--gr-atsc/src/lib/create_atsci_fs_correlator.cc30
-rw-r--r--gr-atsc/src/lib/create_atsci_fs_correlator.h36
-rw-r--r--gr-atsc/src/lib/fpll_btloop_coupling.h38
-rwxr-xr-xgr-atsc/src/lib/gen_encoder.py63
-rw-r--r--gr-atsc/src/lib/interleaver_fifo.h86
-rw-r--r--gr-atsc/src/lib/plinfo.cc59
-rw-r--r--gr-atsc/src/lib/qa_atsci.cc63
-rw-r--r--gr-atsc/src/lib/qa_atsci.h37
-rw-r--r--gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.cc67
-rw-r--r--gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.h44
-rw-r--r--gr-atsc/src/lib/qa_atsci_data_interleaver.cc197
-rw-r--r--gr-atsc/src/lib/qa_atsci_data_interleaver.h60
-rw-r--r--gr-atsc/src/lib/qa_atsci_equalizer_nop.cc247
-rw-r--r--gr-atsc/src/lib/qa_atsci_equalizer_nop.h51
-rw-r--r--gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc144
-rw-r--r--gr-atsc/src/lib/qa_atsci_fake_single_viterbi.h51
-rw-r--r--gr-atsc/src/lib/qa_atsci_fs_correlator.cc255
-rw-r--r--gr-atsc/src/lib/qa_atsci_fs_correlator.h58
-rw-r--r--gr-atsc/src/lib/qa_atsci_randomizer.cc145
-rw-r--r--gr-atsc/src/lib/qa_atsci_randomizer.h62
-rw-r--r--gr-atsc/src/lib/qa_atsci_reed_solomon.cc115
-rw-r--r--gr-atsc/src/lib/qa_atsci_reed_solomon.h43
-rw-r--r--gr-atsc/src/lib/qa_atsci_single_viterbi.cc284
-rw-r--r--gr-atsc/src/lib/qa_atsci_single_viterbi.h53
-rw-r--r--gr-atsc/src/lib/qa_atsci_sliding_correlator.cc51
-rw-r--r--gr-atsc/src/lib/qa_atsci_sliding_correlator.h52
-rw-r--r--gr-atsc/src/lib/qa_atsci_trellis_encoder.cc116
-rw-r--r--gr-atsc/src/lib/qa_atsci_trellis_encoder.h54
-rw-r--r--gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_input.dat2484
-rw-r--r--gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_output.dat9984
-rw-r--r--gr-atsc/src/lib/qa_atsci_viterbi_decoder.cc178
-rw-r--r--gr-atsc/src/lib/qa_atsci_viterbi_decoder.h54
-rw-r--r--gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_input.dat9984
-rw-r--r--gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_output.dat2484
-rw-r--r--gr-atsc/src/lib/qa_convolutional_interleaver.cc131
-rw-r--r--gr-atsc/src/lib/qa_convolutional_interleaver.h69
-rw-r--r--gr-atsc/src/lib/qa_interleaver_fifo.cc58
-rw-r--r--gr-atsc/src/lib/qa_interleaver_fifo.h57
-rw-r--r--gr-atsc/src/lib/test_atsci.cc41
-rw-r--r--gr-atsc/src/python/CMakeLists.txt58
-rw-r--r--gr-atsc/src/python/README34
-rw-r--r--gr-atsc/src/python/all_atsc.py140
-rw-r--r--gr-atsc/src/python/atsc_utils.py74
-rwxr-xr-xgr-atsc/src/python/btl-fsd.py47
-rwxr-xr-xgr-atsc/src/python/fpll.py86
-rwxr-xr-xgr-atsc/src/python/interp.py64
-rwxr-xr-xgr-atsc/src/python/interp_short.py75
-rwxr-xr-xgr-atsc/src/python/qa_atsc.py222
-rwxr-xr-xgr-atsc/src/python/viterbi-out.py57
-rwxr-xr-xgr-atsc/src/python/xlate.py56
192 files changed, 0 insertions, 42373 deletions
diff --git a/gr-atsc/src/lib/CMakeLists.txt b/gr-atsc/src/lib/CMakeLists.txt
deleted file mode 100644
index 3d2b84a03..000000000
--- a/gr-atsc/src/lib/CMakeLists.txt
+++ /dev/null
@@ -1,236 +0,0 @@
-# Copyright 2011-212 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# Setup the include and linker paths
-########################################################################
-include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
- ${GR_ATSC_INCLUDE_DIRS}
- ${GNURADIO_CORE_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS}
-)
-
-link_directories(${Boost_LIBRARY_DIRS})
-
-########################################################################
-# Generate viterbi mux source
-# http://www.vtk.org/Wiki/CMake_Cross_Compiling#Using_executables_in_the_build_created_during_the_build
-########################################################################
-if(NOT CMAKE_CROSSCOMPILING)
- add_executable(atsci_viterbi_gen atsci_viterbi_gen.cc)
- export(TARGETS atsci_viterbi_gen APPEND FILE ${EXPORT_FILE})
-endif()
-
-
-set(atsci_viterbi_mux_cc ${CMAKE_CURRENT_BINARY_DIR}/atsci_viterbi_mux.cc)
-
-add_custom_command(
- OUTPUT ${atsci_viterbi_mux_cc}
- DEPENDS atsci_viterbi_gen
- COMMAND atsci_viterbi_gen -o ${atsci_viterbi_mux_cc}
-)
-
-########################################################################
-# Setup library
-########################################################################
-list(APPEND gr_atsc_sources
- ${atsci_viterbi_mux_cc}
- atsc_derandomizer.cc
- atsc_randomizer.cc
- atsc_rs_decoder.cc
- atsc_rs_encoder.cc
- atsc_interleaver.cc
- atsc_deinterleaver.cc
- atsc_trellis_encoder.cc
- atsc_viterbi_decoder.cc
- atsc_ds_to_softds.cc
- atsc_field_sync_mux.cc
- atsc_field_sync_demux.cc
- atsc_equalizer.cc
- atsc_fs_checker.cc
- atsc_bit_timing_loop.cc
- atsc_fpll.cc
- atsc_depad.cc
- atsc_pad.cc
- atsci_basic_trellis_encoder.cc
- atsci_data_interleaver.cc
- atsci_equalizer.cc
- atsci_equalizer_lms.cc
- atsci_equalizer_lms2.cc
- atsci_equalizer_nop.cc
- atsci_fake_single_viterbi.cc
- atsci_fs_checker.cc
- atsci_fs_checker_naive.cc
- atsci_fs_correlator.cc
- atsci_fs_correlator_naive.cc
- atsci_single_viterbi.cc
- atsci_sssr.cc
- atsci_pnXXX.cc
- atsci_randomizer.cc
- atsci_reed_solomon.cc
- atsci_sliding_correlator.cc
- atsci_trellis_encoder.cc
- atsci_viterbi_decoder.cc
- create_atsci_equalizer.cc
- create_atsci_fs_checker.cc
- create_atsci_fs_correlator.cc
- plinfo.cc
-)
-
-list(APPEND atsc_libs
- gnuradio-core
- ${Boost_LIBRARIES}
-)
-
-add_library(gnuradio-atsc SHARED ${gr_atsc_sources})
-target_link_libraries(gnuradio-atsc ${atsc_libs})
-GR_LIBRARY_FOO(gnuradio-atsc RUNTIME_COMPONENT "atsc_runtime" DEVEL_COMPONENT "atsc_devel")
-
-########################################################################
-# Build and register unit test
-########################################################################
-if(ENABLE_TESTING)
-
-include_directories(${CPPUNIT_INCLUDE_DIRS})
-link_directories(${CPPUNIT_LIBRARY_DIRS})
-
-list(APPEND test_atsci_sources
- qa_atsci_basic_trellis_encoder.cc
- qa_atsci_data_interleaver.cc
- qa_atsci_equalizer_nop.cc
- qa_atsci_fake_single_viterbi.cc
- qa_atsci_fs_correlator.cc
- qa_atsci_single_viterbi.cc
- qa_atsci_randomizer.cc
- qa_atsci_reed_solomon.cc
- qa_atsci_sliding_correlator.cc
- qa_atsci_trellis_encoder.cc
- qa_atsci_viterbi_decoder.cc
- qa_convolutional_interleaver.cc
- qa_atsci.cc
- qa_interleaver_fifo.cc
-)
-
-include(GrTest)
-list(APPEND GR_TEST_TARGET_DEPS gnuradio-atsc)
-add_executable(test_atsci ${test_atsci_sources} test_atsci.cc)
-target_link_libraries(test_atsci gnuradio-atsc gnuradio-core ${CPPUNIT_LIBRARIES})
-GR_ADD_TEST(atsci-test test_atsci)
-
-endif(ENABLE_TESTING)
-
-########################################################################
-# Install public header files
-########################################################################
-install(FILES
- atsc_api.h
- atsc_consts.h
- atsc_derandomizer.h
- atsc_randomizer.h
- atsc_rs_decoder.h
- atsc_rs_encoder.h
- atsc_interleaver.h
- atsc_deinterleaver.h
- atsc_trellis_encoder.h
- atsc_viterbi_decoder.h
- atsc_ds_to_softds.h
- atsc_field_sync_mux.h
- atsc_field_sync_demux.h
- atsc_equalizer.h
- atsc_fs_checker.h
- atsc_bit_timing_loop.h
- atsc_fpll.h
- atsc_depad.h
- atsc_pad.h
- atsc_types.h
- atsci_basic_trellis_encoder.h
- atsci_data_interleaver.h
- atsci_diag_output.h
- atsci_equalizer.h
- atsci_equalizer_lms.h
- atsci_equalizer_lms2.h
- atsci_equalizer_nop.h
- atsci_exp2_lp.h
- atsci_fake_single_viterbi.h
- atsci_fs_checker.h
- atsci_fs_checker_naive.h
- atsci_fs_correlator.h
- atsci_fs_correlator_naive.h
- atsci_pnXXX.h
- atsci_randomizer.h
- atsci_reed_solomon.h
- atsci_root_raised_cosine.h
- atsci_root_raised_cosine_bandpass.h
- atsci_single_viterbi.h
- atsci_slicer_agc.h
- atsci_sliding_correlator.h
- atsci_sssr.h
- atsci_syminfo.h
- atsci_sync_tag.h
- atsci_trellis_encoder.h
- atsci_viterbi_decoder.h
- atsci_vsbtx_lp.h
- convolutional_interleaver.h
- create_atsci_equalizer.h
- create_atsci_fs_checker.h
- create_atsci_fs_correlator.h
- fpll_btloop_coupling.h
- interleaver_fifo.h
- DESTINATION ${GR_INCLUDE_DIR}/gnuradio
- COMPONENT "atsc_devel"
-)
-
-########################################################################
-# Setup swig generation
-########################################################################
-if(ENABLE_PYTHON)
-include(GrPython)
-include(GrSwig)
-
-set(GR_SWIG_INCLUDE_DIRS
- ${GR_ATSC_INCLUDE_DIRS}
- ${GNURADIO_CORE_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS}
-)
-
-# add Doxygen docs to python
-set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/atsc_swig_doc.i)
-set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
-
-set(GR_SWIG_LIBRARIES gnuradio-atsc)
-
-GR_SWIG_MAKE(atsc atsc.i)
-
-GR_SWIG_INSTALL(
- TARGETS atsc
- DESTINATION ${GR_PYTHON_DIR}/gnuradio
- COMPONENT "atsc_python"
-)
-
-install(
- FILES atsc.i
- ${CMAKE_CURRENT_BINARY_DIR}/atsc_swig_doc.i
- DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
- COMPONENT "atsc_swig"
-)
-
-endif(ENABLE_PYTHON)
diff --git a/gr-atsc/src/lib/GrAtscBitTimingLoop.cc b/gr-atsc/src/lib/GrAtscBitTimingLoop.cc
deleted file mode 100644
index 8053736ee..000000000
--- a/gr-atsc/src/lib/GrAtscBitTimingLoop.cc
+++ /dev/null
@@ -1,223 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cmath>
-#include <GrAtscBitTimingLoop.h>
-#include "fpll_btloop_coupling.h"
-#include <algorithm>
-#include <atsc_consts.h>
-#include <stdio.h>
-#include <assert.h>
-
-using std::abs;
-
-static const int DEC = 2; // nominal decimation factor
-
-/*
- * I strongly suggest that you not mess with these...
- */
-static const double DEFAULT_TIMING_RATE = 2.19e-4 / FPLL_BTLOOP_COUPLING_CONST;
-static const double DEFAULT_LOOP_TAP = 0.05;
-
-
-GrAtscBitTimingLoop::GrAtscBitTimingLoop ()
- : VrDecimatingSigProc<float,float> (1, DEC),
- next_input(0), w (1.0), mu (0.5), last_right(0),
- debug_no_update (false)
-{
- d_timing_rate = DEFAULT_TIMING_RATE;
- loop.set_taps (DEFAULT_LOOP_TAP);
-
- history = 1500; // spare input samples in case we need them.
-
-#ifdef _BT_DIAG_OUTPUT_
- fp_loop = fopen ("loop.out", "w");
- if (fp_loop == 0){
- perror ("loop.out");
- exit (1);
- }
-
- fp_ps = fopen ("ps.out", "w");
- if (fp_ps == 0){
- perror ("ps.out");
- exit (1);
- }
-#endif
-}
-
-//
-// We are nominally a 2x decimator, but our actual rate varies slightly
-// depending on the difference between the transmitter and receiver
-// sampling clocks. Hence, we need to compute our input ranges
-// explictly.
-
-int
-GrAtscBitTimingLoop::forecast(VrSampleRange output,
- VrSampleRange inputs[]) {
- /* dec:1 ratio with history */
- for(unsigned int i=0;i<numberInputs;i++) {
- inputs[i].index=next_input;
- inputs[i].size=output.size*decimation + history-1;
- }
- return 0;
-}
-
-inline double
-GrAtscBitTimingLoop::filter_error (double e)
-{
- static const double limit = 50 * FPLL_BTLOOP_COUPLING_CONST;
-
- // first limit
-
- if (e > limit)
- e = limit;
- else if (e < -limit)
- e = -limit;
-
- return loop.filter (e);
-}
-
-int
-GrAtscBitTimingLoop::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- iType *in = ((iType **)ai)[0];
- oType *out = ((oType **)ao)[0];
-
- // Force in-order computation of output stream.
- // This is required because of our slightly variable decimation factor
- sync (output.index);
-
-
- // We are tasked with producing output.size output samples.
- // We will consume approximately 2 * output.size input samples.
-
-
- unsigned int ii = 0; // input index
- unsigned int k; // output index
-
- // We look at a window of 3 samples that we call left (oldest),
- // middle, right (newest). Each time through the loop, the previous
- // right becomes the new left, and the new samples are middle and
- // right.
- //
- // The basic game plan is to drive the average difference between
- // right and left to zero. Given that all transitions are
- // equiprobable (the data is white) and that the composite matched
- // filter is symmetric (raised cosine) it turns out that in the
- // average, if we drive that difference to zero, (implying that the
- // average slope at the middle point is zero), we'll be sampling
- // middle at the maximum or minimum point in the pulse.
-
- iType left;
- iType middle;
- iType right = last_right;
-
- for (k = 0; k < output.size; k++){
-
- left = right;
- middle = produce_sample (in, ii);
- right = produce_sample (in, ii);
-
- // assert (ii < inputs[0].size);
- if (!(ii < inputs[0].size)){
- fprintf (stderr, "ii < inputs[0].size\n");
- fprintf (stderr, "ii = %d, inputs[0].size = %lu, k = %d, output.size = %lu\n",
- ii, inputs[0].size, k, output.size);
- assert (0);
- }
-
-
- out[k] = middle; // produce our output
-
- double timing_error = -middle * ((double) right - left);
-
- // update_timing_control_word
-
- double filtered_timing_error = filter_error (timing_error);
-
- if (!debug_no_update){
- mu += filtered_timing_error * d_timing_rate;
- }
-
-#ifdef _BT_DIAG_OUTPUT_
- float iodata[8];
- iodata[0] = left;
- iodata[1] = middle;
- iodata[2] = right;
- iodata[3] = timing_error;
- iodata[4] = filtered_timing_error;
- iodata[5] = mu;
- iodata[6] = w;
- iodata[7] = 0;
- if (fwrite (iodata, sizeof (iodata), 1, fp_loop) != 1){
- perror ("fwrite: loop");
- exit (1);
- }
-#endif
-
- }
-
- last_right = right;
- next_input += ii; // update next_input so forecast can get us what we need
- return output.size;
-}
-
-/*!
- * Produce samples equally spaced in time that are referenced
- * to the transmitter's sample clock, not ours.
- *
- * See pp 523-527 of "Digital Communication Receivers", Meyr,
- * Moeneclaey and Fechtel, Wiley, 1998.
- */
-
-GrAtscBitTimingLoop::iType
-GrAtscBitTimingLoop::produce_sample (const iType *in, unsigned int &index)
-{
- // update mu and index as function of control word, w
-
- double sum = mu + w;
- double f = floor (sum);
- int incr = (int) f; // mostly 1, rarely 0 or 2
- mu = sum - f;
-
- assert (0 <= incr && incr <= 2);
- assert (0.0 <= mu && mu <= 1.0);
-
- index += incr;
-
- iType n = intr.interpolate (&in[index], mu);
-
-#if defined(_BT_DIAG_OUTPUT_) && 0
- float iodata[4];
- iodata[0] = incr;
- iodata[1] = mu;
- iodata[2] = w;
- iodata[3] = 0;
- if (fwrite (iodata, sizeof (iodata), 1, fp_ps) != 1){
- perror ("fwrite: ps");
- exit (1);
- }
-#endif
-
- return n;
-}
diff --git a/gr-atsc/src/lib/GrAtscBitTimingLoop.h b/gr-atsc/src/lib/GrAtscBitTimingLoop.h
deleted file mode 100644
index fa64f4d37..000000000
--- a/gr-atsc/src/lib/GrAtscBitTimingLoop.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCBITTIMINGLOOP_H_
-#define _GRATSCBITTIMINGLOOP_H_
-
-#include <gr_nco.h>
-#include <VrSigProc.h>
-#include <VrHistoryProc.h>
-#include <VrDecimatingSigProc.h>
-#include <interleaver_fifo.h>
-#include <gr_single_pole_iir.h>
-#include <gr_mmse_fir_interpolator.h>
-#include <atsci_slicer_agc.h>
-#include <stdio.h>
-#include <atsci_diag_output.h>
-
-
-/*!
- * \brief ATSC BitTimingLoop
- *
- * This class accepts a single real input and produces a single real output
- */
-
-class GrAtscBitTimingLoop : public VrDecimatingSigProc<float,float> {
-
- public:
-
- GrAtscBitTimingLoop ();
- virtual ~GrAtscBitTimingLoop () { };
-
- virtual const char *name () { return "GrAtscBitTimingLoop"; }
-
- virtual int forecast (VrSampleRange output,
- VrSampleRange inputs[]);
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- // debug
- void set_mu (double a_mu) { mu = a_mu; }
- void set_no_update (bool a_no_update) { debug_no_update = a_no_update; }
- void set_loop_filter_tap (double tap) { loop.set_taps (tap); }
- void set_timing_rate (double rate) { d_timing_rate = rate; }
-
- protected:
-
- typedef float iType;
- typedef float oType;
-
- iType produce_sample (const iType *in, unsigned int &index);
- double filter_error (double e);
-
- VrSampleIndex next_input;
- gr_mmse_fir_interpolator intr;
- double w; // timing control word
- double mu; // fractional delay
- iType last_right; // last right hand sample
- gr_single_pole_iir<double,double,double> loop;
- bool debug_no_update;// debug
-
- double d_loop_filter_tap;
- double d_timing_rate;
-
-#ifdef _BT_DIAG_OUTPUT_
- FILE *fp_loop;
- FILE *fp_ps;
-#endif
-};
-
-#endif // _GRATSCBITTIMINGLOOP_H_
diff --git a/gr-atsc/src/lib/GrAtscBitTimingLoop2.cc b/gr-atsc/src/lib/GrAtscBitTimingLoop2.cc
deleted file mode 100644
index c741a5bb2..000000000
--- a/gr-atsc/src/lib/GrAtscBitTimingLoop2.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscBitTimingLoop2.h>
-#include <algorithm>
-#include <atsc_consts.h>
-#include <stdio.h>
-#include <assert.h>
-
-
-static const int DEC = 2; // nominal decimation factor
-
-static const unsigned AVG_WINDOW_LEN = 256;
-static const float TIMING_RATE_CONST = 1e-5; // FIXME document interaction with AGC
-
-
-GrAtscBitTimingLoop2::GrAtscBitTimingLoop2 ()
- : VrDecimatingSigProc<float,float> (1, DEC),
- next_input(0), dc (0.0002), mu (0.0), last_right(0), use_right_p (true)
-{
- history = 100; // spare input samples in case we need them.
-
-#ifdef _BT_DIAG_OUTPUT_
- fp_loop = fopen ("loop.out", "w");
- if (fp_loop == 0){
- perror ("loop.out");
- exit (1);
- }
-
- fp_ps = fopen ("ps.out", "w");
- if (fp_ps == 0){
- perror ("ps.out");
- exit (1);
- }
-#endif
-
-}
-
-//
-// We are nominally a 2x decimator, but our actual rate varies slightly
-// depending on the difference between the transmitter and receiver
-// sampling clocks. Hence, we need to compute our input ranges
-// explictly.
-
-int
-GrAtscBitTimingLoop2::forecast(VrSampleRange output,
- VrSampleRange inputs[]) {
- /* dec:1 ratio with history */
- for(unsigned int i=0;i<numberInputs;i++) {
- inputs[i].index=next_input;
- inputs[i].size=output.size*decimation + history-1;
- }
- return 0;
-}
-
-inline float
-GrAtscBitTimingLoop2::filter_error (float e)
-{
- return e; // identity function
-}
-
-int
-GrAtscBitTimingLoop2::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- iType *in = ((iType **)ai)[0];
- oType *out = ((oType **)ao)[0];
-
- // Force in-order computation of output stream.
- // This is required because of our slightly variable decimation factor
- sync (output.index);
-
-
- // We are tasked with producing output.size output samples.
- // We will consume approximately 2 * output.size input samples.
-
-
- unsigned int ii = 0; // input index
- unsigned int k; // output index
-
- // We look at a window of 3 samples that we call left (oldest),
- // middle, right (newest). Each time through the loop, the previous
- // right becomes the new left, and the new samples are middle and
- // right.
- //
- // The basic game plan is to drive the average difference between
- // right and left to zero. Given that all transitions are
- // equiprobable (the data is white) and that the composite matched
- // filter is symmetric (raised cosine) it turns out that in the
- // average, if we drive that difference to zero, (implying that the
- // average slope at the middle point is zero), we'll be sampling
- // middle at the maximum or minimum point in the pulse.
-
- iType left;
- iType middle;
- iType right = last_right;
-
- for (k = 0; k < output.size; k++){
-
- left = right;
-
- iType middle_raw = produce_sample (in, ii);
- iType middle_dc = dc.filter (middle_raw);
- middle = middle_raw - middle_dc;
-
- iType right_raw = produce_sample (in, ii);
- iType right_dc = dc.filter (right_raw);
- right = right_raw - right_dc;
-
- if (use_right_p) // produce our output
- out[k] = right;
- else
- out[k] = middle;
- }
-
-#ifdef _BT_DIAG_OUTPUT_
- float iodata[8];
- iodata[0] = 0;
- iodata[1] = out[k];
- iodata[2] = 0;
- iodata[3] = 0;
- iodata[4] = 0;
- iodata[5] = mu;
- iodata[6] = 0;
- iodata[7] = 0; // spare
- if (fwrite (iodata, sizeof (iodata), 1, fp_loop) != 1){
- perror ("fwrite: loop");
- exit (1);
- }
-#endif
-
-
- last_right = right;
- next_input += ii; // update next_input so forecast can get us what we need
- return output.size;
-}
-
-/*!
- * Produce samples equally spaced in time that are referenced
- * to the transmitter's sample clock, not ours.
- *
- * See pp 523-527 of "Digital Communication Receivers", Meyr,
- * Moeneclaey and Fechtel, Wiley, 1998.
- */
-
-GrAtscBitTimingLoop2::iType
-GrAtscBitTimingLoop2::produce_sample (const iType *in, unsigned int &index)
-{
- iType n = intr.interpolate (&in[index], mu);
-
- index++;
- return n;
-}
-
diff --git a/gr-atsc/src/lib/GrAtscBitTimingLoop2.h b/gr-atsc/src/lib/GrAtscBitTimingLoop2.h
deleted file mode 100644
index 4f36c902e..000000000
--- a/gr-atsc/src/lib/GrAtscBitTimingLoop2.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCBITTIMINGLOOP2_H_
-#define _GRATSCBITTIMINGLOOP2_H_
-
-#include <gr_nco.h>
-#include <VrSigProc.h>
-#include <VrHistoryProc.h>
-#include <VrDecimatingSigProc.h>
-#include <interleaver_fifo.h>
-#include <gr_single_pole_iir.h>
-#include <gr_mmse_fir_interpolator.h>
-
-/*!
- * \brief ATSC BitTimingLoop
- *
- * This class accepts a single real input and produces a single real output
- */
-
-class GrAtscBitTimingLoop2 : public VrDecimatingSigProc<float,float> {
-
- public:
-
- GrAtscBitTimingLoop2 ();
- virtual ~GrAtscBitTimingLoop2 () { };
-
- virtual const char *name () { return "GrAtscBitTimingLoop2"; }
-
- virtual int forecast (VrSampleRange output,
- VrSampleRange inputs[]);
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- // debug
- void set_mu (float a_mu) {
- assert (0 <= a_mu && a_mu <= 1.9);
- use_right_p = a_mu < 1.0;
- mu = a_mu - floor (a_mu);
- cerr << "BTL2: mu: " << mu << " use_right_p: " << use_right_p << endl;
- }
-
- protected:
-
- typedef float iType;
- typedef float oType;
-
- iType produce_sample (const iType *in, unsigned int &index);
- float filter_error (float e);
-
- VrSampleIndex next_input;
- gr_single_pole_iir<float,float,float> dc; // used to estimate DC component
- gr_mmse_fir_interpolator intr;
- float mu; // fractional delay
- iType last_right; // last right hand sample
-
- bool use_right_p; // ...else middle
-};
-
-#endif // _GRATSCBITTIMINGLOOP2_H_
diff --git a/gr-atsc/src/lib/GrAtscBitTimingLoop3.cc b/gr-atsc/src/lib/GrAtscBitTimingLoop3.cc
deleted file mode 100644
index f9c1eb02e..000000000
--- a/gr-atsc/src/lib/GrAtscBitTimingLoop3.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscBitTimingLoop3.h>
-#include <cmath>
-#include <cstdio>
-#include <assert.h>
-
-using std::abs;
-
-
-static const int NOUTPUTS = 2;
-
-GrAtscBitTimingLoop3::GrAtscBitTimingLoop3 (double ratio_of_rx_clock_to_symbol_freq)
- : VrDecimatingSigProc<float,float> (NOUTPUTS, (int) rint (ratio_of_rx_clock_to_symbol_freq)),
- d_interp (ratio_of_rx_clock_to_symbol_freq), d_next_input(0),
- d_rx_clock_to_symbol_freq (ratio_of_rx_clock_to_symbol_freq)
-
-{
- assert (ratio_of_rx_clock_to_symbol_freq >= 1.8); // sanity check
-
- history = 1500; // spare input samples in case we need them.
-}
-
-//
-// We are nominally a 2x decimator, but our actual rate varies slightly
-// depending on the difference between the transmitter and receiver
-// sampling clocks. Hence, we need to compute our input ranges
-// explictly.
-
-int
-GrAtscBitTimingLoop3::forecast(VrSampleRange output,
- VrSampleRange inputs[]) {
- assert (numberInputs == 1);
-
- /* dec:1 ratio with history */
- inputs[0].index = d_next_input;
- inputs[0].size =
- ((unsigned long) (output.size * d_rx_clock_to_symbol_freq) + history - 1);
-
- return 0;
-}
-
-
-int
-GrAtscBitTimingLoop3::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- iType *in = ((iType **)ai)[0];
- oDataType *out_sample = ((oDataType **)ao)[0];
- oTagType *out_tag = ((oTagType **) ao)[1];
-
- // Force in-order computation of output stream.
- // This is required because of our slightly variable decimation factor
- sync (output.index);
-
- // We are tasked with producing output.size output samples.
- // We will consume approximately 2 * output.size input samples.
-
- int si = 0; // source index
- unsigned int k; // output index
-
- float interp_sample;
- int symbol_index;
- double timing_adjustment = 0;
- bool seg_locked;
- oTagType tag;
-
- memset (&tag, 0, sizeof (tag));
-
- for (k = 0; k < output.size; k++){
-
- if (!d_interp.update (in, inputs[0].size, &si, timing_adjustment, &interp_sample)){
- fprintf (stderr, "GrAtscBitTimingLoop3: ran short on data...\n");
- break;
- }
-
- d_sssr.update (interp_sample, &seg_locked, &symbol_index, &timing_adjustment);
- out_sample[k] = interp_sample;
- tag.valid = seg_locked;
- tag.symbol_num = symbol_index;
- out_tag[k] = tag;
- }
-
- d_next_input += si; // update next_input so forecast can get us what we need
- return k;
-}
diff --git a/gr-atsc/src/lib/GrAtscBitTimingLoop3.h b/gr-atsc/src/lib/GrAtscBitTimingLoop3.h
deleted file mode 100644
index 7e019e49c..000000000
--- a/gr-atsc/src/lib/GrAtscBitTimingLoop3.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCBITTIMINGLOOP3_H_
-#define _GRATSCBITTIMINGLOOP3_H_
-
-#include <cstdio>
-#include <VrDecimatingSigProc.h>
-#include <atsci_diag_output.h>
-#include <atsci_sssr.h>
-#include <atsci_syminfo.h>
-
-/*!
- * \brief ATSC BitTimingLoop3
- *
- * This class accepts a single real input and produces two outputs,
- * the raw symbol (float) and the tag (atsc_syminfo)
- */
-
-class GrAtscBitTimingLoop3 : public VrDecimatingSigProc<float,float> {
-
- public:
-
- GrAtscBitTimingLoop3 (double ratio_of_rx_clock_to_symbol_freq);
- virtual ~GrAtscBitTimingLoop3 () { };
-
- virtual const char *name () { return "GrAtscBitTimingLoop3"; }
-
- virtual int forecast (VrSampleRange output,
- VrSampleRange inputs[]);
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- // debug (NOPs)
- void set_mu (double a_mu) { }
- void set_no_update (bool a_no_update) { }
- void set_loop_filter_tap (double tap) { }
- void set_timing_rate (double rate) { }
-
- protected:
-
- typedef float iType;
- typedef float oDataType;
- typedef atsc::syminfo oTagType;
-
- atsci_sssr d_sssr;
- atsci_interpolator d_interp;
- VrSampleIndex d_next_input;
- double d_rx_clock_to_symbol_freq;
-};
-
-#endif // _GRATSCBITTIMINGLOOP3_H_
diff --git a/gr-atsc/src/lib/GrAtscConvert2xTo20.cc b/gr-atsc/src/lib/GrAtscConvert2xTo20.cc
deleted file mode 100644
index 1f540464d..000000000
--- a/gr-atsc/src/lib/GrAtscConvert2xTo20.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscConvert2xTo20.h>
-#include <atsc_consts.h>
-#include <cmath>
-#include <cstdio>
-
-static const int N_OUTPUTS = 1;
-static const double DEC_RATIO = (2.0 * ATSC_SYMBOL_RATE) / 20e6; // ~ 1.076
-
-GrAtscConvert2xTo20::GrAtscConvert2xTo20 ()
- : VrDecimatingSigProc<float,float> (N_OUTPUTS, (int) rint (DEC_RATIO))
-{
- d_next_input = 0;
- d_frac_part = 0;
- history = 2 * d_interp.ntaps (); // some slack
-}
-
-GrAtscConvert2xTo20::~GrAtscConvert2xTo20 ()
-{
- // Nop
-}
-
-void
-GrAtscConvert2xTo20::pre_initialize ()
-{
- fprintf (stderr,
- "GrAtscConvert2xTo20: input freq = %g\n", getInputSamplingFrequencyN(0));
- fprintf (stderr,
- "GrAtscConvert2xTo20: DEC_RATIO = %g\n", DEC_RATIO);
- fprintf (stderr,
- "GrAtscConvert2xTo20: argument to setSamplingFrequency = %g\n",
- getInputSamplingFrequencyN(0) / DEC_RATIO);
-
- int r;
- r = setSamplingFrequency (getInputSamplingFrequencyN (0) / DEC_RATIO);
-
- fprintf (stderr, "GrAtscConvert2xTo20: result = %d\n", r);
-
- fprintf (stderr, "GrAtscConvert2xTo20: getSamplingFrequency = %g\n",
- getSamplingFrequency ());
-}
-
-
-int
-GrAtscConvert2xTo20::forecast (VrSampleRange output,
- VrSampleRange inputs[])
-{
- assert (numberInputs == 1); // I hate these free references to
- // superclass's instance variables...
-
- inputs[0].index = d_next_input;
- inputs[0].size =
- ((long unsigned int) (output.size * DEC_RATIO) + history - 1);
-
- return 0;
-}
-
-int
-GrAtscConvert2xTo20::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- float *in = ((float **) ai)[0];
- float *out = ((float **) ao)[0];
-
- sync (output.index);
-
- unsigned long si = 0; // source index
- unsigned long oi = 0; // output index
- double frac_part = d_frac_part;
-
- for (oi = 0; oi < output.size; oi++){
- assert (si + d_interp.ntaps () < inputs[0].size);
- out[oi] = d_interp.interpolate (&in[si], (1. - frac_part));
-
- double s = frac_part + DEC_RATIO;
- double float_incr = floor (s);
- frac_part = s - float_incr;
- int incr = (int) float_incr;
- si += incr;
- }
-
- d_next_input += si;
- d_frac_part = frac_part;
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscConvert2xTo20.h b/gr-atsc/src/lib/GrAtscConvert2xTo20.h
deleted file mode 100644
index 05b1023e5..000000000
--- a/gr-atsc/src/lib/GrAtscConvert2xTo20.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _GRATSCCONVERT2XTO20_H_
-#define _GRATSCCONVERT2XTO20_H_
-
-#include <VrDecimatingSigProc.h>
-#include <gr_mmse_fir_interpolator.h>
-
-class GrAtscConvert2xTo20 : public VrDecimatingSigProc<float,float> {
- gr_mmse_fir_interpolator d_interp;
- double d_frac_part;
- VrSampleIndex d_next_input;
-
-public:
- GrAtscConvert2xTo20 ();
- ~GrAtscConvert2xTo20 ();
-
- virtual const char *name () { return "GrAtscConvert2xTo20"; }
-
- virtual int forecast (VrSampleRange output,
- VrSampleRange inputs[]);
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- void pre_initialize ();
- int checkOutputSamplingFrequency(float) { return 0; } // bogus, but required
-
-};
-
-#endif /* _GRATSCCONVERT2XTO20_H_ */
diff --git a/gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.cc b/gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.cc
deleted file mode 100644
index 09c3db4e0..000000000
--- a/gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscDataSegToSoftDataSeg.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_data_segment iType;
-typedef atsc_soft_data_segment oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-#define NELEM(x) (sizeof (x) / sizeof (x[0]))
-
-static void
-map_to_soft_symbols (atsc_soft_data_segment &out,
- const atsc_data_segment &in)
-{
- for (unsigned int i = 0; i < NELEM (in.data); i++){
- out.data[i] = in.data[i] * 2 - 7;
- }
-}
-
-
-GrAtscDataSegToSoftDataSeg::GrAtscDataSegToSoftDataSeg ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscDataSegToSoftDataSeg::~GrAtscDataSegToSoftDataSeg ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscDataSegToSoftDataSeg::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
- map_to_soft_symbols (out[i], in[i]);
- out[i].pli = in[i].pli;
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.h b/gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.h
deleted file mode 100644
index 207324d55..000000000
--- a/gr-atsc/src/lib/GrAtscDataSegToSoftDataSeg.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCDATASEGTOSOFTDATASEG_H_
-#define _GRATSCDATASEGTOSOFTDATASEG_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-
-/*!
- * \brief Debug glue routine (atsc_data_segment --> atsc_soft_data_segment)
- */
-
-class GrAtscDataSegToSoftDataSeg : public VrHistoryProc<atsc_data_segment,
- atsc_soft_data_segment>
-{
-
-public:
-
- GrAtscDataSegToSoftDataSeg ();
- ~GrAtscDataSegToSoftDataSeg ();
-
- const char *name () { return "GrAtscDataSegToSoftDataSeg"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
-};
-
-#endif /* _GRATSCDATASEGTOSOFTDATASEG_H_ */
diff --git a/gr-atsc/src/lib/GrAtscDeinterleaver.cc b/gr-atsc/src/lib/GrAtscDeinterleaver.cc
deleted file mode 100644
index fd67d7a20..000000000
--- a/gr-atsc/src/lib/GrAtscDeinterleaver.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscDeinterleaver.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet_rs_encoded iType;
-typedef atsc_mpeg_packet_rs_encoded oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscDeinterleaver::GrAtscDeinterleaver ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscDeinterleaver::~GrAtscDeinterleaver ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscDeinterleaver::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, the current contents of the LFSR in the randomizer, hence
- // we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
- // pipeline info is handled in the primitive
- deinterleaver.deinterleave (out[i], in[i]);
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscDeinterleaver.h b/gr-atsc/src/lib/GrAtscDeinterleaver.h
deleted file mode 100644
index f0f9830b6..000000000
--- a/gr-atsc/src/lib/GrAtscDeinterleaver.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCDEINTERLEAVER_H_
-#define _GRATSCDEINTERLEAVER_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-#include <atsci_data_interleaver.h>
-
-/*!
- * \brief Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)
- */
-
-class GrAtscDeinterleaver : public VrHistoryProc<atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_rs_encoded>
-{
-
-public:
-
- GrAtscDeinterleaver ();
- ~GrAtscDeinterleaver ();
-
- const char *name () { return "GrAtscDeinterleaver"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_data_deinterleaver deinterleaver;
-};
-
-#endif /* _GRATSCDEINTERLEAVER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscDerandomizer.cc b/gr-atsc/src/lib/GrAtscDerandomizer.cc
deleted file mode 100644
index db3583a62..000000000
--- a/gr-atsc/src/lib/GrAtscDerandomizer.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscDerandomizer.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet_no_sync iType;
-typedef atsc_mpeg_packet oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscDerandomizer::GrAtscDerandomizer ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscDerandomizer::~GrAtscDerandomizer ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscDerandomizer::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, the current contents of the LFSR in the randomizer, hence
- // we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
-
- assert (in[i].pli.regular_seg_p ());
-
- if (in[i].pli.first_regular_seg_p ())
- rand.reset ();
-
- rand.derandomize (out[i], in[i]);
-
- // take a look at the transport error bit in the pipeline info
- // and set bit as required
-
- if (in[i].pli.transport_error_p ())
- out[i].data[1] |= MPEG_TRANSPORT_ERROR_BIT;
- else
- out[i].data[1] &= ~MPEG_TRANSPORT_ERROR_BIT;
-
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscDerandomizer.h b/gr-atsc/src/lib/GrAtscDerandomizer.h
deleted file mode 100644
index bd0d70d94..000000000
--- a/gr-atsc/src/lib/GrAtscDerandomizer.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCDERANDOMIZER_H_
-#define _GRATSCDERANDOMIZER_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-#include <atsci_randomizer.h>
-
-/*!
- * \brief Derandomize ATSC data (atsc_mpeg_packet_no_sync --> atsc_mpeg_packet)
- */
-
-class GrAtscDerandomizer : public VrHistoryProc<atsc_mpeg_packet_no_sync, atsc_mpeg_packet>
-{
-
-public:
-
- GrAtscDerandomizer ();
- ~GrAtscDerandomizer ();
-
- const char *name () { return "GrAtscDerandomizer"; }
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_randomizer rand;
-};
-
-#endif /* _GRATSCDERANDOMIZER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscEqualizer.cc b/gr-atsc/src/lib/GrAtscEqualizer.cc
deleted file mode 100644
index 27f64c2b7..000000000
--- a/gr-atsc/src/lib/GrAtscEqualizer.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscEqualizer.h>
-#include <atsci_equalizer.h>
-
-// typedefs for fundamental i/o types
-
-typedef float dataType;
-typedef atsc::syminfo tagType;
-
-static const int NUMBER_OF_OUTPUTS = 2; // # of output streams
-
-
-GrAtscEqualizer::GrAtscEqualizer (atsci_equalizer *equalizer)
- : VrHistoryProc<dataType,dataType> (NUMBER_OF_OUTPUTS)
-{
- // due to limitation of runtime, all inputs must be the same size
- assert (sizeof (dataType) == sizeof (tagType));
-
- d_equalizer = equalizer;
-
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- //
- // Set this to the answer returned by the equalizer primitive we were passed.
- history = d_equalizer->ntaps ();
-}
-
-GrAtscEqualizer::~GrAtscEqualizer ()
-{
- // Anything that isn't automatically cleaned up...
-
- delete d_equalizer;
-}
-
-
-/*
- * non-standard forecast routine that handles getting the correct amount of
- * history for the data input as well as ensuring correct alignment of
- * the data and tags.
- */
-
-int
-GrAtscEqualizer::forecast (VrSampleRange output,
- VrSampleRange inputs[])
-{
- assert (numberInputs == 2);
-
- int ntaps = d_equalizer->ntaps ();
- int npretaps = d_equalizer->npretaps ();
-
- assert (ntaps >= 1);
- assert (npretaps >= 0 && npretaps < ntaps);
-
- inputs[0].index = output.index; // the equalizer data
- inputs[0].size = output.size + ntaps - 1; // history on data
-
- // FIXME if there's a problem, it's probably on the next line...
- int offset = ntaps - npretaps - 1;
-
- assert (offset >= 0 && offset < ntaps);
-
- inputs[1].index = output.index + offset; // align equalizer tags
- inputs[1].size = output.size; // N.B., no extra history on tags
-
- return 0;
-}
-
-/*
- * This is the real work horse. We consume 2 input streams
- * and produce 2 output streams.
- */
-
-int
-GrAtscEqualizer::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // assert (numberInputs == 2);
-
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, hence we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- dataType *input_samples = ((dataType **) ai)[0];
- tagType *input_tags = ((tagType **) ai)[1];
- dataType *output_samples = ((dataType **) ao)[0];
- tagType *output_tags = ((tagType **) ao)[1];
-
-
- // peform the actual equalization
-
- d_equalizer->filter (input_samples, input_tags,
- output_samples, output.size);
-
- // write the output tags
-
- for (unsigned int i = 0; i < output.size; i++)
- output_tags[i] = input_tags[i];
-
- // Return the number of units we produced.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscEqualizer.h b/gr-atsc/src/lib/GrAtscEqualizer.h
deleted file mode 100644
index ff944deb7..000000000
--- a/gr-atsc/src/lib/GrAtscEqualizer.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCEQUALIZER_H_
-#define _GRATSCEQUALIZER_H_
-
-#include <VrHistoryProc.h>
-
-class atsci_equalizer;
-
-/*!
- * \brief ATSC equalizer (float,syminfo --> float,syminfo)
- *
- * first inputs are data samples, second inputs are tags.
- * first outputs are equalized data samples, second outputs are tags.
- *
- * tag values are defined in atsci_syminfo.h
- */
-
-class GrAtscEqualizer : public VrHistoryProc<float,float>
-{
-
-public:
-
- GrAtscEqualizer (atsci_equalizer *equalizer);
- ~GrAtscEqualizer ();
-
- const char *name () { return "GrAtscEqualizer"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- // we've got a non-standard forecast routine
- int forecast (VrSampleRange output, VrSampleRange inputs[]);
-
-protected:
- atsci_equalizer *d_equalizer;
-};
-
-#endif /* _GRATSCEQUALIZER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscFPLL.cc b/gr-atsc/src/lib/GrAtscFPLL.cc
deleted file mode 100644
index df7d6b8c0..000000000
--- a/gr-atsc/src/lib/GrAtscFPLL.cc
+++ /dev/null
@@ -1,150 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscFPLL.h>
-#include <algorithm>
-#include "fpll_btloop_coupling.h"
-
-/*
- * I strongly suggest that you not mess with these...
- *
- * They are strongly coupled into the symbol timing code and
- * their value also sets the level of the symbols going
- * into the equalizer and viterbi decoder.
- */
-static const float FPLL_AGC_REFERENCE = 2.5 * FPLL_BTLOOP_COUPLING_CONST;
-static const float FPLL_AGC_RATE = 0.25e-6;
-
-
-GrAtscFPLL::GrAtscFPLL (double a_initial_freq)
- : VrSigProc (1, sizeof (iType), sizeof (oType)),
- initial_phase(0), debug_no_update(false)
-{
- initial_freq = a_initial_freq;
- agc.set_rate (FPLL_AGC_RATE);
- agc.set_reference (FPLL_AGC_REFERENCE);
-
- if (_FPLL_DIAG_OUTPUT_){
- fp = fopen ("fpll.out", "w");
- if (fp == 0){
- perror ("fpll.out");
- exit (1);
- }
- }
-
-}
-
-void
-GrAtscFPLL::initialize ()
-{
- float Fs = getInputSamplingFrequencyN (0);
-
- float alpha = 1 - exp(-1.0 / Fs / 5e-6);
-
- afci.set_taps (alpha);
- afcq.set_taps (alpha);
-
- nco.set_freq (initial_freq / Fs * 2 * M_PI);
- nco.set_phase (initial_phase);
-}
-
-int
-GrAtscFPLL::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- iType *in = ((iType **)ai)[0];
- oType *out = ((oType **)ao)[0];
-
- unsigned int k;
-
- for (k = 0; k < output.size; k++){
-
- float a_cos, a_sin;
-
- float input = agc.scale (in[k]);
-
- nco.step (); // increment phase
- nco.sincos (a_sin, a_cos); // compute cos and sin
-
- float I = input * a_sin;
- float Q = input * a_cos;
-
- out[k] = I;
-
- float filtered_I = afci.filter (I);
- float filtered_Q = afcq.filter (Q);
-
- // phase detector
-
- float x = atan2 (filtered_Q, filtered_I);
-
- // avoid slamming filter with big transitions
-
- static const float limit = M_PI / 2;
-
- if (x > limit)
- x = limit;
- else if (x < -limit)
- x = -limit;
-
- // static const float alpha = 0.037; // Max value
- // static const float alpha = 0.005; // takes about 5k samples to pull in, stddev = 323
- // static const float alpha = 0.002; // takes about 15k samples to pull in, stddev = 69
- // or about 120k samples on noisy data,
- static const float alpha = 0.001;
- static const float beta = alpha * alpha / 4;
-
-
- if (!debug_no_update){
- nco.adjust_phase (alpha * x);
- nco.adjust_freq (beta * x);
- }
-
- if (_FPLL_DIAG_OUTPUT_){
-#if 0 // lots of data...
- float iodata[8];
- iodata[0] = nco.get_freq () * getSamplingFrequency () * (1.0 / (2 * M_PI));
- iodata[1] = in[k];
- iodata[2] = input;
- iodata[3] = I;
- iodata[4] = Q;
- iodata[5] = filtered_I;
- iodata[6] = filtered_Q;
- iodata[7] = x;
- if (fwrite (iodata, sizeof (iodata), 1, fp) != 1){
- perror ("fwrite: fpll");
- exit (1);
- }
-#else // just the frequency
- float iodata[1];
- iodata[0] = nco.get_freq () * getSamplingFrequency () * (1.0 / (2 * M_PI));
- if (fwrite (iodata, sizeof (iodata), 1, fp) != 1){
- perror ("fwrite: fpll");
- exit (1);
- }
-#endif
- }
- }
-
- return output.size;
-}
-
diff --git a/gr-atsc/src/lib/GrAtscFPLL.h b/gr-atsc/src/lib/GrAtscFPLL.h
deleted file mode 100644
index 597a4a891..000000000
--- a/gr-atsc/src/lib/GrAtscFPLL.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef _GRATSCFPLL_H_
-#define _GRATSCFPLL_H_
-
-#include <gr_nco.h>
-#include <gr_iir.h>
-#include <gr_single_pole_iir.h>
-#include <gr_agc.h>
-#include <VrSigProc.h>
-#include <stdio.h>
-#include <atsci_diag_output.h>
-
-/*!
- * \brief ATSC FPLL (2nd Version)
- *
- * Used as follows:
- * float float
- * A/D --> GrFIRfilterFFF ----> GrAtscFPLL ---->
- *
- * We use GrFIRfilterFFF to bandpass filter the signal of interest.
- *
- * This class accepts a single real input and produces a single real output
- */
-
-class GrAtscFPLL : public VrSigProc {
- protected:
-
- typedef float iType;
- typedef float oType;
-
- public:
-
- GrAtscFPLL (double a_initial_freq);
- virtual ~GrAtscFPLL () {}
-
- virtual const char *name () { return "GrAtscFPLL"; }
-
- virtual void initialize ();
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-
- // diagnostic routines
- void set_initial_phase (double phase) { initial_phase = phase; } // radians
- void set_no_update (bool a_no_update) { debug_no_update = a_no_update; }
-
-
- protected:
-
- double initial_freq;
- double initial_phase;
- bool debug_no_update;
- gr_nco<float,float> nco;
- gr_agc agc; // automatic gain control
- gr_single_pole_iir<float,float,float> afci;
- gr_single_pole_iir<float,float,float> afcq;
-
-#ifdef _FPLL_DIAG_OUTPUT_
- FILE *fp;
-#endif
-
-};
-
-
-#endif // _GRATSCFPLL_H_
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncChecker.cc b/gr-atsc/src/lib/GrAtscFieldSyncChecker.cc
deleted file mode 100644
index d2c82d6d4..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncChecker.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscFieldSyncChecker.h>
-#include <create_atsci_fs_checker.h>
-#include <atsci_fs_checker.h>
-
-// typedefs for fundamental i/o types
-
-typedef float iDataType;
-typedef atsc::syminfo iTagType;
-typedef float oDataType;
-typedef atsc::syminfo oTagType;
-
-static const int NUMBER_OF_OUTPUTS = 2; // # of output streams
-
-
-GrAtscFieldSyncChecker::GrAtscFieldSyncChecker ()
- : VrHistoryProc<iDataType,oDataType> (NUMBER_OF_OUTPUTS)
-{
- // tags and data must be same size due to limitation of runtime
- assert (sizeof (iDataType) == sizeof (iTagType));
- assert (sizeof (oDataType) == sizeof (oTagType));
-
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- d_fsc = create_atsci_fs_checker ();
-}
-
-GrAtscFieldSyncChecker::~GrAtscFieldSyncChecker ()
-{
- // Anything that isn't automatically cleaned up...
-
- delete d_fsc;
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscFieldSyncChecker::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, hence we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iDataType *sample_in = ((iDataType **) ai)[0];
- iTagType *tag_in = ((iTagType **) ai)[1];
- oDataType *sample_out = ((oDataType **) ao)[0];
- oTagType *tag_out = ((oTagType **) ao)[1];
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
- d_fsc->filter (sample_in[i], tag_in[i], &sample_out[i], &tag_out[i]);
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncChecker.h b/gr-atsc/src/lib/GrAtscFieldSyncChecker.h
deleted file mode 100644
index 28458a19b..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncChecker.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCFIELDSYNCCHECKER_H_
-#define _GRATSCFIELDSYNCCHECKER_H_
-
-#include <VrHistoryProc.h>
-
-class atsci_fs_checker;
-
-/*!
- * \brief ATSC field sync checker (float,syminfo --> float,syminfo)
- *
- * first output is delayed version of input.
- * second output is set of tags, one-for-one with first output.
- */
-
-class GrAtscFieldSyncChecker : public VrHistoryProc<float,float>
-{
-
-public:
-
- GrAtscFieldSyncChecker ();
- ~GrAtscFieldSyncChecker ();
-
- const char *name () { return "GrAtscFieldSyncChecker"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_fs_checker *d_fsc;
-};
-
-#endif /* _GRATSCFIELDSYNCCHECKER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncCorrelator.cc b/gr-atsc/src/lib/GrAtscFieldSyncCorrelator.cc
deleted file mode 100644
index 42f93aa8c..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncCorrelator.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscFieldSyncCorrelator.h>
-#include <create_atsci_fs_correlator.h>
-#include <atsci_fs_correlator.h>
-
-// typedefs for fundamental i/o types
-
-typedef float iType;
-typedef float oType;
-
-static const int NUMBER_OF_OUTPUTS = 2; // # of output streams
-
-
-GrAtscFieldSyncCorrelator::GrAtscFieldSyncCorrelator ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- d_fsc = create_atsci_fs_correlator ();
-}
-
-GrAtscFieldSyncCorrelator::~GrAtscFieldSyncCorrelator ()
-{
- // Anything that isn't automatically cleaned up...
-
- delete d_fsc;
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscFieldSyncCorrelator::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, hence we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *sample_out = ((oType **) ao)[0];
- oType *tag_out = ((oType **) ao)[1];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
- d_fsc->filter (in[i], &sample_out[i], &tag_out[i]);
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncCorrelator.h b/gr-atsc/src/lib/GrAtscFieldSyncCorrelator.h
deleted file mode 100644
index 1a16048b2..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncCorrelator.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCFIELDSYNCCORRELATOR_H_
-#define _GRATSCFIELDSYNCCORRELATOR_H_
-
-#include <VrHistoryProc.h>
-
-class atsci_fs_correlator;
-
-/*!
- * \brief ATSC field sync correlator (float --> float,float)
- *
- * first output is delayed version of input.
- * second output is set of tags, one-for-one with first output.
- *
- * tag values are defined in atsci_sync_tag.h
- */
-
-class GrAtscFieldSyncCorrelator : public VrHistoryProc<float,float>
-{
-
-public:
-
- GrAtscFieldSyncCorrelator ();
- ~GrAtscFieldSyncCorrelator ();
-
- const char *name () { return "GrAtscFieldSyncCorrelator"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_fs_correlator *d_fsc;
-};
-
-#endif /* _GRATSCFIELDSYNCCORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncDemux.cc b/gr-atsc/src/lib/GrAtscFieldSyncDemux.cc
deleted file mode 100644
index e311acc8a..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncDemux.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cmath>
-#include <GrAtscFieldSyncDemux.h>
-#include <atsc_consts.h>
-#include <atsc_types.h>
-#include <atsci_syminfo.h>
-#include <stdio.h>
-#include <assert.h>
-
-using std::abs;
-
-static const int DEC = ATSC_DATA_SEGMENT_LENGTH; // nominal decimation factor
-
-GrAtscFieldSyncDemux::GrAtscFieldSyncDemux ()
- : VrDecimatingSigProc<float,atsc_soft_data_segment> (1, DEC),
- d_locked (false), d_in_field2(true), d_segment_number(0), d_next_input(0),
- d_lost_index (0)
-{
- history = 2 * ATSC_DATA_SEGMENT_LENGTH; // spare input samples in case we need them.
-}
-
-GrAtscFieldSyncDemux::~GrAtscFieldSyncDemux ()
-{
-}
-
-int
-GrAtscFieldSyncDemux::forecast (VrSampleRange output,
- VrSampleRange inputs[]) {
- /* dec:1 ratio with history */
-
- assert (numberInputs == 2);
-
- for (unsigned int i = 0; i < numberInputs; i++) {
- inputs[i].index = d_next_input;
- inputs[i].size = output.size * decimation + history - 1;
- }
- return 0;
-}
-
-inline static bool
-tag_is_seg_sync_or_field_sync (atsc::syminfo tag)
-{
- return tag.symbol_num == 0 && tag.valid;
-}
-
-int
-GrAtscFieldSyncDemux::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- float *input_samples = (float *) ai[0];
- atsc::syminfo *input_tags = (atsc::syminfo *) ai[1];
- atsc_soft_data_segment *out = ((atsc_soft_data_segment **)ao)[0];
-
- sync (output.index);
-
- unsigned int ii = 0; // input index
-
- // Are we in sync?
- if (!tag_is_seg_sync_or_field_sync (input_tags[0])){ // No ...
-
- if (d_locked){
- d_locked = false;
- d_lost_index = inputs[0].index + ii;
- cerr << "GrAtscFieldSyncDemux: lost sync at "
- << d_lost_index << endl;
- }
-
- // ... search for beginning of a field sync
-
- // cerr << "GrAtscFieldSyncDemux: searching for sync at "
- // << inputs[0].index + ii << endl;
-
- for (ii = 1; ii < inputs[0].size; ii++){
- if (atsc::tag_is_start_field_sync (input_tags[ii])){
- // found one
- d_locked = true;
-
- const char *str;
- if (atsc::tag_is_start_field_sync_1 (input_tags[ii]))
- str = "FIELD-1";
- else if (atsc::tag_is_start_field_sync_2 (input_tags[ii]))
- str = "FIELD-2";
- else
- str = "SEGMENT";
-
- cerr << "GrAtscFieldSyncDemux: synced (" << str << ") at "
- << inputs[0].index + ii
- << " [delta = " << inputs[0].index + ii - d_lost_index
- << "]\n";
-
- d_next_input += ii; // update for forecast
- return 0; // no work completed so far
- }
- }
- // no non-NORMAL tag found
- d_next_input += ii; // update for forecast
- return 0; // no work completed so far
- }
-
- // We are in sync. Produce output...
-
- unsigned int k = 0; // output index
-
- while (k < output.size){
-
- if (inputs[0].size - ii < (unsigned) ATSC_DATA_SEGMENT_LENGTH){
- // We're out of input data.
- cerr << "GrAtscFieldSyncDemux: ran out of input data\n";
- d_next_input += ii; // update for forecast
- return k; // return amount of work completed so far
- }
-
- if (!tag_is_seg_sync_or_field_sync (input_tags[ii])){
- // lost sync...
- // cerr << "GrAtscFieldSyncDemux: lost sync at "
- // << inputs[0].index + ii << endl;
-
- d_next_input += ii; // update for forecast
- return k; // return amount of work completed so far
- }
-
- if (atsc::tag_is_start_field_sync_1 (input_tags[ii])){
- d_in_field2 = false;
- d_segment_number = 0;
- ii += ATSC_DATA_SEGMENT_LENGTH; // skip over field sync
- continue;
- }
-
- if (atsc::tag_is_start_field_sync_2 (input_tags[ii])){
- d_in_field2 = true;
- d_segment_number = 0;
- ii += ATSC_DATA_SEGMENT_LENGTH; // skip over field sync
- continue;
- }
-
- if (d_segment_number >= ATSC_DSEGS_PER_FIELD){
- // something's wrong...
- cerr << "GrAtscFieldSyncDemux: segment number overflow\n";
- d_segment_number = 0;
- }
-
- out[k].pli.set_regular_seg (d_in_field2, d_segment_number++);
- for (int jj = 0; jj < ATSC_DATA_SEGMENT_LENGTH; jj++)
- out[k].data[jj] = input_samples[ii + jj];
- ii += ATSC_DATA_SEGMENT_LENGTH;
- k++;
- }
-
- d_next_input += ii; // update for forecast
- return k; // return amount of work completed
-}
-
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncDemux.h b/gr-atsc/src/lib/GrAtscFieldSyncDemux.h
deleted file mode 100644
index f5bab9b87..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncDemux.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCFIELDSYNCDEMUX_H_
-#define _GRATSCFIELDSYNCDEMUX_H_
-
-#include <VrDecimatingSigProc.h>
-#include <atsc_types.h>
-
-/*!
- * \brief ATSC Field Sync Demux
- *
- * This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo).
- * It outputs one stream of atsc_soft_data_segment packets
- */
-
-class GrAtscFieldSyncDemux : public VrDecimatingSigProc<float,atsc_soft_data_segment> {
-
- public:
-
- GrAtscFieldSyncDemux ();
- virtual ~GrAtscFieldSyncDemux ();
-
- virtual const char *name () { return "GrAtscFieldSyncDemux"; }
-
- virtual int forecast (VrSampleRange output,
- VrSampleRange inputs[]);
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- protected:
-
- bool d_locked;
- bool d_in_field2;
- int d_segment_number;
- VrSampleIndex d_next_input;
- VrSampleIndex d_lost_index; // diagnostic fluff
-};
-
-#endif // _GRATSCFIELDSYNCDEMUX_H_
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncMux.cc b/gr-atsc/src/lib/GrAtscFieldSyncMux.cc
deleted file mode 100644
index 7ebab72ad..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncMux.cc
+++ /dev/null
@@ -1,246 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscFieldSyncMux.h>
-#include <atsci_pnXXX.h>
-
-
-// typedefs for fundamental i/o types
-
-typedef atsc_data_segment iType;
-typedef atsc_data_segment oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-static const int N_SAVED_SYMBOLS = GrAtscFieldSyncMux::N_SAVED_SYMBOLS;
-
-static void
-init_field_sync_common (unsigned char *p, int mask,
- const unsigned char saved_symbols[N_SAVED_SYMBOLS])
-{
- static const unsigned char bin_map[2] = { 1, 6 }; // map binary values to 1 of 8 levels
-
- int i = 0;
-
- p[i++] = bin_map[1]; // data segment sync pulse
- p[i++] = bin_map[0];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
-
- for (int j = 0; j < 511; j++) // PN511
- p[i++] = bin_map[atsc_pn511[j]];
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map[atsc_pn63[j]];
-
- for (int j = 0; j < 63; j++) // PN63, toggled on field 2
- p[i++] = bin_map[atsc_pn63[j] ^ mask];
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map[atsc_pn63[j]];
-
- p[i++] = bin_map[0]; // 24 bits of VSB8 mode identifiera
- p[i++] = bin_map[0];
- p[i++] = bin_map[0];
- p[i++] = bin_map[0];
-
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
-
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
-
- p[i++] = bin_map[1];
- p[i++] = bin_map[1];
- p[i++] = bin_map[1];
- p[i++] = bin_map[1];
-
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
-
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
-
-
- for (int j = 0; j < 92; j++) // 92 more bits
- p[i++] = bin_map[atsc_pn63[j % 63]];
-
- // now copy the last 12 symbols of the previous segment
-
- for (int j = 0; j < N_SAVED_SYMBOLS; j++)
- p[i++] = saved_symbols[j];
-
- assert (i == ATSC_DATA_SEGMENT_LENGTH);
-}
-
-inline static void
-init_field_sync_1 (atsc_data_segment *s,
- const unsigned char saved_symbols[N_SAVED_SYMBOLS])
-{
- init_field_sync_common (&s->data[0], 0, saved_symbols);
-}
-
-inline static void
-init_field_sync_2 (atsc_data_segment *s,
- const unsigned char saved_symbols[N_SAVED_SYMBOLS])
-
-{
- init_field_sync_common (&s->data[0], 1, saved_symbols);
-}
-
-static void
-save_last_symbols (unsigned char saved_symbols[N_SAVED_SYMBOLS],
- const atsc_data_segment &seg)
-{
- for (int i = 0; i < N_SAVED_SYMBOLS; i++)
- saved_symbols[i] = seg.data[i + ATSC_DATA_SEGMENT_LENGTH - N_SAVED_SYMBOLS];
-}
-
-
-inline static bool
-last_regular_seg_p (const plinfo &pli)
-{
- return pli.regular_seg_p () && (pli.segno () == ATSC_DSEGS_PER_FIELD - 1);
-}
-
-
-GrAtscFieldSyncMux::GrAtscFieldSyncMux ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS),
- d_current_index (0), d_already_output_field_sync (false)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscFieldSyncMux::~GrAtscFieldSyncMux ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-void
-GrAtscFieldSyncMux::pre_initialize ()
-{
- // we jack our output sampling frequency up to account for inserted field syncs
- setSamplingFrequency (getInputSamplingFrequencyN (0) * 313./312.);
-}
-
-/*
- * we need a non-standard version of forecast because our output isn't
- * exactly 1:1 with our input.
- */
-
-int
-GrAtscFieldSyncMux::forecast (VrSampleRange output, VrSampleRange inputs[])
-{
- for(unsigned int i = 0; i < numberInputs; i++) {
- inputs[i].index = d_current_index;
- inputs[i].size = output.size;
- }
- return 0;
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-int
-GrAtscFieldSyncMux::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, hence we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- unsigned int index = 0;
- for (unsigned int outdex = 0; outdex < output.size; outdex++){
-
- assert (in[index].pli.regular_seg_p ());
-
- if (!in[index].pli.first_regular_seg_p ()){
- out[outdex] = in[index]; // just copy in to out
-
- if (last_regular_seg_p (in[index].pli))
- save_last_symbols (d_saved_symbols, in[index]);
-
- index++;
- }
- else { // first_regular_seg_p
- if (!d_already_output_field_sync){
- // write out field sync...
- atsc_data_segment field_sync;
-
- if (in[index].pli.in_field1_p ())
- init_field_sync_1 (&field_sync, d_saved_symbols);
- else
- init_field_sync_2 (&field_sync, d_saved_symbols);
-
- // note that index doesn't advance in this branch
- out[outdex] = field_sync;
- d_already_output_field_sync = true;
- }
- else {
- // already output field sync, now output first regular segment
- out[outdex] = in[index];
- index++;
- d_already_output_field_sync = false;
- }
- }
- }
-
- d_current_index += index;
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscFieldSyncMux.h b/gr-atsc/src/lib/GrAtscFieldSyncMux.h
deleted file mode 100644
index ae52b8e5c..000000000
--- a/gr-atsc/src/lib/GrAtscFieldSyncMux.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCFIELDSYNCMUX_H_
-#define _GRATSCFIELDSYNCMUX_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-
-/*!
- * \brief Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment)
- */
-
-class GrAtscFieldSyncMux : public VrHistoryProc<atsc_data_segment, atsc_data_segment>
-{
-
-public:
-
- GrAtscFieldSyncMux ();
- ~GrAtscFieldSyncMux ();
-
- const char *name () { return "GrAtscFieldSyncMux"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- int forecast (VrSampleRange output, VrSampleRange inputs[]);
-
- void pre_initialize ();
-
- static const int N_SAVED_SYMBOLS = 12;
-
-protected:
- VrSampleIndex d_current_index;
- bool d_already_output_field_sync;
- unsigned char d_saved_symbols[N_SAVED_SYMBOLS];
-};
-
-#endif /* _GRATSCFIELDSYNCMUX_H_ */
diff --git a/gr-atsc/src/lib/GrAtscInterleaver.cc b/gr-atsc/src/lib/GrAtscInterleaver.cc
deleted file mode 100644
index 2c8f0c7e8..000000000
--- a/gr-atsc/src/lib/GrAtscInterleaver.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscInterleaver.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet_rs_encoded iType;
-typedef atsc_mpeg_packet_rs_encoded oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscInterleaver::GrAtscInterleaver ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscInterleaver::~GrAtscInterleaver ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscInterleaver::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, the current contents of the FIFOs, hence
- // we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
-#if 0
- cerr << "@@@ GrAtscInterleaver: output.index = " << output.index
- << " output.size = " << output.size
- << " sum = " << output.index + output.size
- << " \t[out = " << out << "]"
- << endl;
-#endif
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
- // pipeline info is handled in the primitive
- interleaver.interleave (out[i], in[i]);
- }
-
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscInterleaver.h b/gr-atsc/src/lib/GrAtscInterleaver.h
deleted file mode 100644
index 76be38a21..000000000
--- a/gr-atsc/src/lib/GrAtscInterleaver.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCINTERLEAVER_H_
-#define _GRATSCINTERLEAVER_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-#include <atsci_data_interleaver.h>
-
-/*!
- * \brief Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)
- */
-
-class GrAtscInterleaver : public VrHistoryProc<atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_rs_encoded>
-{
-
-public:
-
- GrAtscInterleaver ();
- ~GrAtscInterleaver ();
-
- const char *name () { return "GrAtscInterleaver"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_data_interleaver interleaver;
-};
-
-#endif /* _GRATSCINTERLEAVER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscRSDecoder.cc b/gr-atsc/src/lib/GrAtscRSDecoder.cc
deleted file mode 100644
index fd0122ad2..000000000
--- a/gr-atsc/src/lib/GrAtscRSDecoder.cc
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscRSDecoder.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet_rs_encoded iType;
-typedef atsc_mpeg_packet_no_sync oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscRSDecoder::GrAtscRSDecoder ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscRSDecoder::~GrAtscRSDecoder ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscRSDecoder::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
- assert (in[i].pli.regular_seg_p ());
- out[i].pli = in[i].pli; // copy pipeline info
-
- int nerrors_not_corrected = rs_decoder.decode (out[i], in[i]);
- out[i].pli.set_transport_error (nerrors_not_corrected == -1);
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscRSDecoder.h b/gr-atsc/src/lib/GrAtscRSDecoder.h
deleted file mode 100644
index d64102d10..000000000
--- a/gr-atsc/src/lib/GrAtscRSDecoder.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCRSDECODER_H_
-#define _GRATSCRSDECODER_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-#include <atsci_reed_solomon.h>
-
-/*!
- * \brief Pass ATSC data Reed-Solomon decoder( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_rs_no_sync)
- */
-
-class GrAtscRSDecoder : public VrHistoryProc<atsc_mpeg_packet_rs_encoded, atsc_mpeg_packet_no_sync>
-{
-
-public:
-
- GrAtscRSDecoder ();
- ~GrAtscRSDecoder ();
-
- const char *name () { return "GrAtscRSDecoder"; }
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_reed_solomon rs_decoder;
-};
-
-#endif /* _GRATSCRSDECODER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscRSEncoder.cc b/gr-atsc/src/lib/GrAtscRSEncoder.cc
deleted file mode 100644
index 249678427..000000000
--- a/gr-atsc/src/lib/GrAtscRSEncoder.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscRSEncoder.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet_no_sync iType;
-typedef atsc_mpeg_packet_rs_encoded oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscRSEncoder::GrAtscRSEncoder ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscRSEncoder::~GrAtscRSEncoder ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscRSEncoder::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
-
- // ensure that on the way in, the error bit is clear
- // [assertion is not valid, because the randomizer has already scrambled the bits]
- // assert ((in[i].data[0] & MPEG_TRANSPORT_ERROR_BIT) == 0);
-
- assert (in[i].pli.regular_seg_p ());
- out[i].pli = in[i].pli; // copy pipeline info...
- rs_encoder.encode (out[i], in[i]);
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscRSEncoder.h b/gr-atsc/src/lib/GrAtscRSEncoder.h
deleted file mode 100644
index 29921d8b3..000000000
--- a/gr-atsc/src/lib/GrAtscRSEncoder.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCRSENCODER_H_
-#define _GRATSCRSENCODER_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-#include <atsci_reed_solomon.h>
-
-/*!
- * \brief Encode using Reed Solomon ATSC data (atsc_mpeg_packet_no_sync --> atsc_mpeg_packet_rs_encoded)
- */
-
-class GrAtscRSEncoder : public VrHistoryProc<atsc_mpeg_packet_no_sync, atsc_mpeg_packet_rs_encoded>
-{
-
-public:
-
- GrAtscRSEncoder ();
- ~GrAtscRSEncoder ();
-
- const char *name () { return "GrAtscRSEncoder"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_reed_solomon rs_encoder;
-};
-
-#endif /* _GRATSCRSENCODER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscRandomizer.cc b/gr-atsc/src/lib/GrAtscRandomizer.cc
deleted file mode 100644
index c5172699c..000000000
--- a/gr-atsc/src/lib/GrAtscRandomizer.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscRandomizer.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet iType;
-typedef atsc_mpeg_packet_no_sync oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscRandomizer::GrAtscRandomizer ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS),
- field2 (false), segno (0)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- // We're one-to-one input-to-output so set it to 1.
- history = 1;
-
- // any other init here.
-}
-
-GrAtscRandomizer::~GrAtscRandomizer ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscRandomizer::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, the current contents of the LFSR in the randomizer, hence
- // we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i++){
-
- // initialize plinfo for downstream
- //
- // We do this here because the randomizer is effectively
- // the head of the tx processing chain
- //
- out[i].pli.set_regular_seg (field2, segno);
- segno++;
- if (segno == 312){
- segno = 0;
- field2 = !field2;
- }
-
- assert ((in[i].data[1] & MPEG_TRANSPORT_ERROR_BIT) == 0);
-
- if (out[i].pli.first_regular_seg_p ())
- rand.reset ();
-
- rand.randomize (out[i], in[i]);
- }
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscRandomizer.h b/gr-atsc/src/lib/GrAtscRandomizer.h
deleted file mode 100644
index f56f7178e..000000000
--- a/gr-atsc/src/lib/GrAtscRandomizer.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCRANDOMIZER_H_
-#define _GRATSCRANDOMIZER_H_
-
-#include <VrHistoryProc.h>
-#include <atsc_types.h>
-#include <atsci_randomizer.h>
-
-/*!
- * \brief Randomize ATSC data (atsc_mpeg_packet --> atsc_mpeg_packet_no_sync)
- */
-
-class GrAtscRandomizer : public VrHistoryProc<atsc_mpeg_packet, atsc_mpeg_packet_no_sync>
-{
-
-public:
-
- GrAtscRandomizer ();
- ~GrAtscRandomizer ();
-
- const char *name () { return "GrAtscRandomizer"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_randomizer rand;
-
- // used to initialize plinfo in output
- bool field2;
- int segno;
-};
-
-#endif /* _GRATSCRANDOMIZER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscSegSymSync.cc b/gr-atsc/src/lib/GrAtscSegSymSync.cc
deleted file mode 100644
index 2d9419c25..000000000
--- a/gr-atsc/src/lib/GrAtscSegSymSync.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscSegSymSync.h>
-#include <GrAtscSegSymSyncImpl_export.h>
-#include <iostream>
-#include <assert.h>
-
-static const int DECIMATION = 2; // close enough for super class's use
-static const int N_OUTPUTS = 2;
-
-GrAtscSegSymSync::GrAtscSegSymSync ()
- : VrDecimatingSigProc<float,float> (N_OUTPUTS, DECIMATION)
-{
- if (sizeof (float) != sizeof (atsc::syminfo)){
- cerr << "GrAtscSegSymSync: sizeof (float) != sizeof (atsc::syminfo)\n";
- assert (0);
- }
-}
-
-GrAtscSegSymSync::~GrAtscSegSymSync ()
-{
- // Nop
-}
-
-
-GrAtscSegSymSync *
-GrAtscSegSymSync::create (double nominal_ratio_of_rx_clock_to_symbol_freq)
-{
- return create_GrAtscSegSymSyncImpl (nominal_ratio_of_rx_clock_to_symbol_freq);
-}
diff --git a/gr-atsc/src/lib/GrAtscSegSymSync.h b/gr-atsc/src/lib/GrAtscSegSymSync.h
deleted file mode 100644
index 750483f54..000000000
--- a/gr-atsc/src/lib/GrAtscSegSymSync.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCSEGSYMSYNC_H_
-#define _GRATSCSEGSYMSYNC_H_
-
-#include <VrDecimatingSigProc.h>
-
-/*!
- * \brief ATSC SegSymSync
- *
- * Abstract class that establishes symbol timing and synchronizes
- * with data segment boundaries.
- *
- * Takes a single stream of floats as the input and
- * produces two streams as output. The first stream is the data samples
- * and is of type float. The second stream is the tags, and is of type syminfo.
- *
- * The current GNU Radio interface doesn't currently support different
- * types on the input ports (or output ports for that matter), but
- * since they are the same size, it works.
- */
-
-#include <atsci_syminfo.h>
-
-class GrAtscSegSymSync : public VrDecimatingSigProc<float,float> {
-
-public:
-
- GrAtscSegSymSync ();
- ~GrAtscSegSymSync ();
-
- /*!
- * \brief reset bit timing loop on channel change
- */
- virtual void reset () = 0;
-
- /*!
- * \brief create an instance of GrAtscSegSymSync
- */
- static GrAtscSegSymSync *create (double nominal_ratio_of_rx_clock_to_symbol_freq);
-
-};
-
-#endif // _GRATSCSEGSYMSYNC_H_
diff --git a/gr-atsc/src/lib/GrAtscSegSymSyncImpl.cc b/gr-atsc/src/lib/GrAtscSegSymSyncImpl.cc
deleted file mode 100644
index 8e2cfc208..000000000
--- a/gr-atsc/src/lib/GrAtscSegSymSyncImpl.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscSegSymSyncImpl.h>
-#include <GrAtscSegSymSyncImpl_export.h>
-#include <cmath>
-#include <assert.h>
-
-GrAtscSegSymSyncImpl::GrAtscSegSymSyncImpl (
- double nominal_ratio_of_rx_clock_to_symbol_freq)
- : d_interp (nominal_ratio_of_rx_clock_to_symbol_freq)
-{
- // set approximate decimation rate for superclass's benefit
- decimation = (int) rint (nominal_ratio_of_rx_clock_to_symbol_freq);
-
- history = 1500; // spare input samples in case we need them.
-
- d_sssr.reset ();
- d_interp.reset ();
- d_next_input = 0;
- d_rx_clock_to_symbol_freq = nominal_ratio_of_rx_clock_to_symbol_freq;
-}
-
-GrAtscSegSymSyncImpl::~GrAtscSegSymSyncImpl ()
-{
- // Nop
-}
-
-void
-GrAtscSegSymSyncImpl::pre_initialize ()
-{
- setSamplingFrequency (
- getInputSamplingFrequencyN (0) / d_rx_clock_to_symbol_freq);
-}
-
-int
-GrAtscSegSymSyncImpl::forecast (VrSampleRange output,
- VrSampleRange inputs[])
-{
- assert (numberInputs == 1); // I hate these free references to
- // superclass's instance variables...
-
- inputs[0].index = d_next_input;
- inputs[0].size =
- ((long unsigned int) (output.size * d_rx_clock_to_symbol_freq)
- + history - 1);
-
- return 0;
-}
-
-int
-GrAtscSegSymSyncImpl::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
-#if 0
- float *input_samples = ((float **) ai)[0];
- float *output_samples = ((float **) ao)[0];
- atsc::syminfo *output_info = ((atsc::syminfo **) ao)[1];
-
- // FIXME finish...
-#endif
- assert (0);
-
- return output.size;
-}
-
-void
-GrAtscSegSymSyncImpl::reset ()
-{
- d_sssr.reset ();
- d_interp.reset ();
-}
-
-
-/*
- * Exported constructor.
- * Doesn't expose any of the internals or our compile time dependencies.
- */
-
-GrAtscSegSymSync *
-create_GrAtscSegSymSyncImpl (double nominal_ratio_of_rx_clock_to_symbol_freq)
-{
- return new GrAtscSegSymSyncImpl (nominal_ratio_of_rx_clock_to_symbol_freq);
-}
diff --git a/gr-atsc/src/lib/GrAtscSegSymSyncImpl.h b/gr-atsc/src/lib/GrAtscSegSymSyncImpl.h
deleted file mode 100644
index 650dab569..000000000
--- a/gr-atsc/src/lib/GrAtscSegSymSyncImpl.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _GRATSCSEGSYMSYNCIMPL_H_
-#define _GRATSCSEGSYMSYNCIMPL_H_
-
-#include <GrAtscSegSymSync.h>
-#include <atsci_sssr.h>
-
-
-/*!
- * \brief concrete implementation of GrAtscSegSymSync
- *
- * This class implements data segment sync tracking and symbol timing
- * using a variation of the method described in
- * "ATSC/VSB Tutorial - Receiver Technology" by Wayne E. Bretl of
- * Zenith, pgs 41-45.
- */
-
-class GrAtscSegSymSyncImpl : public GrAtscSegSymSync {
-
- atsci_sssr d_sssr;
- atsci_interpolator d_interp;
- VrSampleIndex d_next_input;
- double d_rx_clock_to_symbol_freq; // nominal ratio
-
-public:
-
- // the standard methods...
-
- GrAtscSegSymSyncImpl (double nominal_ratio_of_rx_clock_to_symbol_freq);
- virtual ~GrAtscSegSymSyncImpl ();
-
- virtual const char *name () { return "GrAtscSegSymSyncImpl"; }
-
- virtual int forecast (VrSampleRange output,
- VrSampleRange inputs[]);
-
- virtual int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
- void pre_initialize ();
-
-
- // reset on channel change
-
- virtual void reset ();
-
-};
-
-#endif /* _GRATSCSEGSYMSYNCIMPL_H_ */
diff --git a/gr-atsc/src/lib/GrAtscSegSymSyncImpl_export.h b/gr-atsc/src/lib/GrAtscSegSymSyncImpl_export.h
deleted file mode 100644
index 187f1a039..000000000
--- a/gr-atsc/src/lib/GrAtscSegSymSyncImpl_export.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-class GrAtscSegSymSync;
-
-GrAtscSegSymSync *create_GrAtscSegSymSyncImpl (
- double nominal_ratio_of_rx_clock_to_symbol_freq);
diff --git a/gr-atsc/src/lib/GrAtscSymbolMapper.h b/gr-atsc/src/lib/GrAtscSymbolMapper.h
deleted file mode 100644
index a37703f1f..000000000
--- a/gr-atsc/src/lib/GrAtscSymbolMapper.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCSYMBOLMAPPER_H_
-#define _GRATSCSYMBOLMAPPER_H_
-
-
-#include <VrInterpolatingSigProcNoWork.h>
-#include <atsc_types.h>
-#include <gr_nco.h>
-
-/*!
- * \brief take atsc_data_segments and map them to symbols.
- *
- * Input is a stream of atsc_data_segments.
- * Output is a stream of symbols at 1x the symbol rate
- *
- * This module performs the signal mapping & pilot addition.
- */
-
-template<class oType>
-class GrAtscSymbolMapper
- : public VrInterpolatingSigProcNoWork<atsc_data_segment, oType> {
-
-public:
- GrAtscSymbolMapper ()
- : VrInterpolatingSigProcNoWork<atsc_data_segment, oType>(1, INTERP_FACTOR) {};
-
- ~GrAtscSymbolMapper () {};
-
- const char *name () { return "GrAtscSymbolMapper"; }
-
- int work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[]);
-
-protected:
- static const int INTERP_FACTOR = ATSC_DATA_SEGMENT_LENGTH;
-};
-
-
-template<class oType>
-int
-GrAtscSymbolMapper<oType>::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- atsc_data_segment *in = ((atsc_data_segment **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
- assert ((output.size % INTERP_FACTOR) == 0);
-
- static const float pilot_add = 1.25;
- static const float map[8] = {
- -7 + pilot_add,
- -5 + pilot_add,
- -3 + pilot_add,
- -1 + pilot_add,
- 1 + pilot_add,
- 3 + pilot_add,
- 5 + pilot_add,
- 7 + pilot_add
- };
-
- unsigned int oo = 0;
- unsigned int nsegs = output.size / INTERP_FACTOR;
-
- for (unsigned int n = 0; n < nsegs; n++){
- unsigned char *symbol = in[n].data;
-
- for (int i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++){
- out[oo++] = (oType) map[symbol[i] & 0x7];
- }
- }
-
- assert (oo == output.size);
- return output.size;
-}
-
-#endif /* _GRATSCSYMBOLMAPPER_H_ */
diff --git a/gr-atsc/src/lib/GrAtscTrellisEncoder.cc b/gr-atsc/src/lib/GrAtscTrellisEncoder.cc
deleted file mode 100644
index a0df3e9a7..000000000
--- a/gr-atsc/src/lib/GrAtscTrellisEncoder.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscTrellisEncoder.h>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_mpeg_packet_rs_encoded iType;
-typedef atsc_data_segment oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscTrellisEncoder::GrAtscTrellisEncoder ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS), last_start(-1)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- //
- // We need our input to be aligned on a 12-segment boundary,
- // to ensure satisfaction, ask for 11 more
- history = 1 + (atsci_trellis_encoder::NCODERS - 1);
-
- // any other init here.
-
- // Let the bottom end know we must produce output in multiples of 12 segments.
- setOutputSize (atsci_trellis_encoder::NCODERS);
-}
-
-GrAtscTrellisEncoder::~GrAtscTrellisEncoder ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscTrellisEncoder::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, the current state of the encoders, hence
- // we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
-#if 0
- cerr << "@@@ GrAtscTrellisEncoder: output.index = " << output.index
- << " output.size = " << output.size
- << " sum = " << output.index + output.size
- << " \t[in = " << in << "]"
- << endl;
-#endif
-
- assert (output.size % atsci_trellis_encoder::NCODERS == 0);
-
-
- // find the first mod 12 boundary to begin decoding
- int start;
- for (start = 0; start < atsci_trellis_encoder::NCODERS; start++){
- plinfo::sanity_check (in[start].pli);
- assert (in[start].pli.regular_seg_p ());
- if ((in[start].pli.segno () % atsci_trellis_encoder::NCODERS) == 0)
- break;
- }
-
- if (start == atsci_trellis_encoder::NCODERS){
- // we didn't find a mod 12 boundary. There's some kind of problem
- // upstream of us (not yet sync'd??)
- cerr << "!!!GrAtscTrellisEncoder: no mod-12 boundary found\7\n";
- start = 0;
- }
- else if (start != last_start){
- cerr << "GrAtscTrellisEncoder: new starting offset = " << start
- << " output.index = " << output.index << endl;
- last_start = start;
- }
-
-
- // FIXME paranoid check for problem
- for (unsigned int i = 0; i < output.size; i++){
- plinfo::sanity_check (in[i + start].pli);
- }
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i += atsci_trellis_encoder::NCODERS){
- // primitive does 12 segments at a time.
- // pipeline info is handled in the primitive.
- encoder.encode (&out[i], &in[i + start]);
- }
-
-#if 0
- // FIXME paranoid check for problem
- for (unsigned int i = 0; i < output.size; i++){
- plinfo::sanity_check (out[i].pli);
- assert (out[i].pli.regular_seg_p ());
- }
-#endif
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscTrellisEncoder.h b/gr-atsc/src/lib/GrAtscTrellisEncoder.h
deleted file mode 100644
index e4de388ae..000000000
--- a/gr-atsc/src/lib/GrAtscTrellisEncoder.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCTRELLISENCODER_H_
-
-#include <VrHistoryProc.h>
-#include <atsci_trellis_encoder.h>
-
-/*!
- * \brief ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment)
- */
-
-class GrAtscTrellisEncoder : public VrHistoryProc<atsc_mpeg_packet_rs_encoded,atsc_data_segment>
-{
-
-public:
-
- GrAtscTrellisEncoder ();
- ~GrAtscTrellisEncoder ();
-
- const char *name () { return "GrAtscTrellisEncoder"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_trellis_encoder encoder;
- int last_start;
-};
-
-#endif
diff --git a/gr-atsc/src/lib/GrAtscViterbiDecoder.cc b/gr-atsc/src/lib/GrAtscViterbiDecoder.cc
deleted file mode 100644
index c89b3556b..000000000
--- a/gr-atsc/src/lib/GrAtscViterbiDecoder.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <GrAtscViterbiDecoder.h>
-#include <iostream>
-
-// typedefs for fundamental i/o types
-
-typedef atsc_soft_data_segment iType;
-typedef atsc_mpeg_packet_rs_encoded oType;
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-
-GrAtscViterbiDecoder::GrAtscViterbiDecoder ()
- : VrHistoryProc<iType,oType> (NUMBER_OF_OUTPUTS), last_start(-1)
-{
- // 1 + number of extra input elements at which we look. This is
- // used by the superclass's forecast routine to get us the correct
- // range on our inputs.
- //
- // We need our input to be aligned on a 12-segment boundary,
- // to ensure satisfaction, ask for 11 more
- history = 1 + (atsci_viterbi_decoder::NCODERS - 1);
-
- // any other init here.
-
- // Let the bottom end know we must produce output in multiples of 12 segments.
- setOutputSize (atsci_viterbi_decoder::NCODERS);
-}
-
-GrAtscViterbiDecoder::~GrAtscViterbiDecoder ()
-{
- // Anything that isn't automatically cleaned up...
-}
-
-/*
- * This is the real work horse. In general this interface can handle
- * multiple streams of input and output, but we almost always
- * use a single input and output stream.
- */
-
-int
-GrAtscViterbiDecoder::work (VrSampleRange output, void *ao[],
- VrSampleRange inputs[], void *ai[])
-{
- // If we have state that persists across invocations (e.g., we have
- // instance variables that we modify), we must use the sync method
- // to indicate to the scheduler that our output must be computed in
- // order. This doesn't keep other things from being run in
- // parallel, it just means that at any given time, there is only a
- // single thread working this code, and that the scheduler will
- // ensure that we are asked to produce output that is contiguous and
- // that will be presented to us in order of increasing time.
-
- // We have state, the current state of the decoder, hence
- // we must use sync.
-
- sync (output.index);
-
- // construct some nicer i/o pointers to work with.
-
- iType *in = ((iType **) ai)[0];
- oType *out = ((oType **) ao)[0];
-
-
- assert (output.size % atsci_viterbi_decoder::NCODERS == 0);
-
- // find the first mod 12 boundary to begin decoding
- int start;
- for (start = 0; start < atsci_viterbi_decoder::NCODERS; start++){
- assert (in[start].pli.regular_seg_p ());
- if ((in[start].pli.segno () % atsci_viterbi_decoder::NCODERS) == 0)
- break;
- }
-
- if (start == atsci_viterbi_decoder::NCODERS){
- // we didn't find a mod 12 boundary. There's some kind of problem
- // upstream of us (not yet sync'd??)
- cerr << "!!!GrAtscViterbiDecoder: no mod-12 boundary found\7\n";
- start = 0;
- }
- else if (start != last_start){
- cerr << "GrAtscViterbiDecoder: new starting offset = " << start
- << " output.index = " << output.index << endl;
- last_start = start;
- }
-
- // We must produce output.size units of output.
-
- for (unsigned int i = 0; i < output.size; i += atsci_viterbi_decoder::NCODERS){
- // primitive does 12 segments at a time.
- // pipeline info is handled in the primitive.
- decoder.decode (&out[i], &in[i + start]);
- }
-
-#if 0
- // FIXME paranoid check...
- for (unsigned int i = 0; i < output.size; i++){
- plinfo::sanity_check (out[i].pli);
- assert (out[i].pli.regular_seg_p ());
- }
-#endif
-
-#if 0
- cerr << "@@@ GrAtscViterbiDecoder: output.index = " << output.index
- << " output.size = " << output.size
- << " sum = " << output.index + output.size << endl;
-#endif
-
- // Return the number of units we produced.
- // Note that for all intents and purposes, it is an error to
- // produce less than you are asked for.
-
- return output.size;
-}
diff --git a/gr-atsc/src/lib/GrAtscViterbiDecoder.h b/gr-atsc/src/lib/GrAtscViterbiDecoder.h
deleted file mode 100644
index 1b3bdd84a..000000000
--- a/gr-atsc/src/lib/GrAtscViterbiDecoder.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GRATSCVITERBIDECODER_H_
-
-#include <VrHistoryProc.h>
-#include <atsci_viterbi_decoder.h>
-
-/*!
- * \brief ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded)
- */
-
-class GrAtscViterbiDecoder : public VrHistoryProc<atsc_soft_data_segment,
- atsc_mpeg_packet_rs_encoded>
-{
-
-public:
-
- GrAtscViterbiDecoder ();
- ~GrAtscViterbiDecoder ();
-
- const char *name () { return "GrAtscViterbiDecoder"; }
-
- int work (VrSampleRange output, void *o[],
- VrSampleRange inputs[], void *i[]);
-
-protected:
- atsci_viterbi_decoder decoder;
- int last_start;
-};
-
-#endif
diff --git a/gr-atsc/src/lib/atsc.i b/gr-atsc/src/lib/atsc.i
deleted file mode 100644
index 6b83a2315..000000000
--- a/gr-atsc/src/lib/atsc.i
+++ /dev/null
@@ -1,305 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-%include "gnuradio.i" // the common stuff
-
-//load generated python docstrings
-%include "atsc_swig_doc.i"
-
-%{
-#include <atsc_randomizer.h>
-#include <atsc_derandomizer.h>
-#include <atsc_rs_encoder.h>
-#include <atsc_rs_decoder.h>
-#include <atsc_interleaver.h>
-#include <atsc_deinterleaver.h>
-#include <atsc_trellis_encoder.h>
-#include <atsc_viterbi_decoder.h>
-#include <atsc_ds_to_softds.h>
-#include <atsc_field_sync_mux.h>
-#include <atsc_field_sync_demux.h>
-#include <atsc_equalizer.h>
-#include <atsc_fs_checker.h>
-#include <atsc_bit_timing_loop.h>
-#include <atsc_fpll.h>
-#include <atsc_depad.h>
-#include <atsc_pad.h>
-%}
-
-%include "atsc_consts.h"
-
-%constant int sizeof_atsc_mpeg_packet = sizeof(atsc_mpeg_packet);
-%constant int sizeof_atsc_mpeg_packet_no_sync = sizeof(atsc_mpeg_packet_no_sync);
-%constant int sizeof_atsc_mpeg_packet_rs_encoded = sizeof(atsc_mpeg_packet_rs_encoded);
-%constant int sizeof_atsc_data_segment = sizeof(atsc_data_segment);
-%constant int sizeof_atsc_soft_data_segment = sizeof(atsc_soft_data_segment);
-
-%constant int sizeof_atsc_mpeg_packet_pad = atsc_mpeg_packet::NPAD;
-%constant int sizeof_atsc_mpeg_packet_no_sync_pad = atsc_mpeg_packet_no_sync::NPAD;
-%constant int sizeof_atsc_mpeg_packet_rs_encoded_pad = atsc_mpeg_packet_rs_encoded::NPAD;
-%constant int sizeof_atsc_data_segment_pad = atsc_data_segment::NPAD;
-%constant int sizeof_atsc_soft_data_segment_pad = atsc_soft_data_segment::NPAD;
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,randomizer);
-
-atsc_randomizer_sptr atsc_make_randomizer();
-
-class atsc_randomizer : public gr_sync_block
-{
- atsc_randomizer();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,derandomizer);
-
-atsc_derandomizer_sptr atsc_make_derandomizer();
-
-class atsc_derandomizer : public gr_sync_block
-{
- atsc_derandomizer();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,rs_encoder);
-
-atsc_rs_encoder_sptr atsc_make_rs_encoder();
-
-class atsc_rs_encoder : public gr_sync_block
-{
- atsc_rs_encoder();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,rs_decoder);
-
-atsc_rs_decoder_sptr atsc_make_rs_decoder();
-
-class atsc_rs_decoder : public gr_sync_block
-{
- atsc_rs_decoder();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,interleaver);
-
-atsc_interleaver_sptr atsc_make_interleaver();
-
-class atsc_interleaver : public gr_sync_block
-{
- atsc_interleaver();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,deinterleaver);
-
-atsc_deinterleaver_sptr atsc_make_deinterleaver();
-
-class atsc_deinterleaver : public gr_sync_block
-{
- atsc_deinterleaver();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,trellis_encoder);
-
-atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
-
-class atsc_trellis_encoder : public gr_sync_block
-{
- atsc_trellis_encoder();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,viterbi_decoder);
-
-atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
-
-class atsc_viterbi_decoder : public gr_sync_block
-{
- atsc_viterbi_decoder();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,ds_to_softds);
-
-atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
-
-class atsc_ds_to_softds : public gr_sync_block
-{
- atsc_ds_to_softds();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,field_sync_mux);
-
-atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
-
-class atsc_field_sync_mux : public gr_sync_block
-{
- atsc_field_sync_mux();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,field_sync_demux);
-
-atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
-
-class atsc_field_sync_demux : public gr_block
-{
- atsc_field_sync_demux();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,equalizer);
-
-atsc_equalizer_sptr atsc_make_equalizer();
-
-class atsc_equalizer : public gr_sync_block
-{
- atsc_equalizer();
-
-public:
- void reset();
- std::vector<double> taps();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,fs_checker);
-
-atsc_fs_checker_sptr atsc_make_fs_checker();
-
-class atsc_fs_checker : public gr_sync_block
-{
- atsc_fs_checker();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,bit_timing_loop);
-
-atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
-
-class atsc_bit_timing_loop : public gr_block
-{
- atsc_bit_timing_loop();
-
-public:
- void reset();
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,fpll);
-
-atsc_fpll_sptr atsc_make_fpll();
-
-class atsc_fpll : public gr_sync_block
-{
- atsc_fpll();
-
-public:
- void reset();
-
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,depad);
-
-atsc_depad_sptr atsc_make_depad();
-
-class atsc_depad : public gr_sync_interpolator
-{
- atsc_depad();
-
-public:
- void reset();
-
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(atsc,pad);
-
-atsc_pad_sptr atsc_make_pad();
-
-class atsc_pad : public gr_sync_decimator
-{
- atsc_pad();
-
-public:
- void reset();
-
-};
-
-// ----------------------------------------------------------------
-
diff --git a/gr-atsc/src/lib/atsc_api.h b/gr-atsc/src/lib/atsc_api.h
deleted file mode 100644
index 5add37762..000000000
--- a/gr-atsc/src/lib/atsc_api.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_ATSC_API_H
-#define INCLUDED_ATSC_API_H
-
-#include <gruel/attributes.h>
-
-#ifdef gnuradio_atsc_EXPORTS
-# define ATSC_API __GR_ATTR_EXPORT
-#else
-# define ATSC_API __GR_ATTR_IMPORT
-#endif
-
-#endif /* INCLUDED_ATSC_API_H */
diff --git a/gr-atsc/src/lib/atsc_bit_timing_loop.cc b/gr-atsc/src/lib/atsc_bit_timing_loop.cc
deleted file mode 100644
index dc43d28bc..000000000
--- a/gr-atsc/src/lib/atsc_bit_timing_loop.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_bit_timing_loop.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-#include <string.h>
-
-// Input rate changed from 20MHz to 19.2 to support usrp at 3 * 6.4MHz
-float input_rate = 19.2e6;
-double ratio_of_rx_clock_to_symbol_freq = input_rate / ATSC_SYMBOL_RATE;
-
-
-atsc_bit_timing_loop_sptr
-atsc_make_bit_timing_loop()
-{
- return gnuradio::get_initial_sptr(new atsc_bit_timing_loop());
-}
-
-
-atsc_bit_timing_loop::atsc_bit_timing_loop()
- : gr_block("atsc_bit_timing_loop",
- gr_make_io_signature(1, 1, sizeof(float)),
- gr_make_io_signature3(2, 3, sizeof(float), sizeof(float), sizeof(float))),
- d_interp(ratio_of_rx_clock_to_symbol_freq), d_next_input(0),
- d_rx_clock_to_symbol_freq (ratio_of_rx_clock_to_symbol_freq),
- d_si(0)
-{
- reset();
-}
-
-void
-atsc_bit_timing_loop::forecast (int noutput_items, gr_vector_int &ninput_items_required)
-{
- unsigned ninputs = ninput_items_required.size();
- for (unsigned i = 0; i < ninputs; i++)
- ninput_items_required[i] = static_cast<int>(noutput_items * d_rx_clock_to_symbol_freq) + 1500 - 1;
-
-}
-
-int
-atsc_bit_timing_loop::general_work (int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- int r = work (noutput_items, input_items, output_items);
- if (r > 0)
- consume_each (d_si);
- return r;
-}
-
-
-int
-atsc_bit_timing_loop::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const float *in = (const float *) input_items[0];
- float *out_sample = (float *) output_items[0];
- atsc::syminfo *out_tag = (atsc::syminfo *) output_items[1];
- float *out_timing_error = (float *) output_items[2];
-
- assert(sizeof(float) == sizeof(atsc::syminfo));
-
- // We are tasked with producing output.size output samples.
- // We will consume approximately 2 * output.size input samples.
-
- int k; // output index
-
- float interp_sample;
- int symbol_index;
- double timing_adjustment = 0;
- bool seg_locked;
- atsc::syminfo tag;
- // ammount requested in forecast
- unsigned long input_size = noutput_items * d_rx_clock_to_symbol_freq + 1500 -1;
-
- memset (&tag, 0, sizeof (tag));
-
- // ammount actually consumed
- d_si = 0;
-
- for (k = 0; k < noutput_items; k++){
- if (!d_interp.update (in, input_size, &d_si, timing_adjustment, &interp_sample)){
- fprintf (stderr, "GrAtscBitTimingLoop3: ran short on data...\n");
- break;
- }
-
- d_sssr.update (interp_sample, &seg_locked, &symbol_index, &timing_adjustment);
- if (output_items.size() == 3) {
- out_timing_error[k] = timing_adjustment;
- }
- out_sample[k] = interp_sample;
- tag.valid = seg_locked;
- tag.symbol_num = symbol_index;
- out_tag[k] = tag;
-
- }
-
- return k;
-}
diff --git a/gr-atsc/src/lib/atsc_bit_timing_loop.h b/gr-atsc/src/lib/atsc_bit_timing_loop.h
deleted file mode 100644
index 8b352f7eb..000000000
--- a/gr-atsc/src/lib/atsc_bit_timing_loop.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_BIT_TIMING_LOOP_H
-#define INCLUDED_ATSC_BIT_TIMING_LOOP_H
-
-#include <atsc_api.h>
-#include <cstdio>
-#include <gr_block.h>
-#include <atsci_diag_output.h>
-#include <atsci_sssr.h>
-#include <atsci_syminfo.h>
-
-class atsc_bit_timing_loop;
-typedef boost::shared_ptr<atsc_bit_timing_loop> atsc_bit_timing_loop_sptr;
-
-ATSC_API atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
-
-/*!
- * \brief ATSC BitTimingLoop3
- * \ingroup atsc
- *
- * This class accepts a single real input and produces two outputs,
- * the raw symbol (float) and the tag (atsc_syminfo)
- */
-class ATSC_API atsc_bit_timing_loop : public gr_block
-{
- friend ATSC_API atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
-
- atsc_bit_timing_loop();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-
- ~atsc_bit_timing_loop () { };
-
- void forecast (int noutput_items, gr_vector_int &ninput_items_required);
-
- int general_work (int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
-
- // debug (NOPs)
- void set_mu (double a_mu) { }
- void set_no_update (bool a_no_update) { }
- void set_loop_filter_tap (double tap) { }
- void set_timing_rate (double rate) { }
-
-
- protected:
-
- atsci_sssr d_sssr;
- atsci_interpolator d_interp;
- unsigned long long d_next_input;
- double d_rx_clock_to_symbol_freq;
- int d_si;
-
-
-};
-
-#endif /* INCLUDED_ATSC_BIT_TIMING_LOOP_H */
-
-
-
diff --git a/gr-atsc/src/lib/atsc_consts.h b/gr-atsc/src/lib/atsc_consts.h
deleted file mode 100644
index bbe2ec69a..000000000
--- a/gr-atsc/src/lib/atsc_consts.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_CONSTS_H_
-#define _ATSC_CONSTS_H_
-
-static const double ATSC_SYMBOL_RATE = 4.5e6 / 286 * 684; // ~10.76 MHz
-static const double ATSC_DATA_SEGMENT_RATE = ATSC_SYMBOL_RATE / 832; // ~12.935 kHz
-
-
-static const int ATSC_MPEG_DATA_LENGTH = 187;
-static const int ATSC_MPEG_PKT_LENGTH = 188; // sync + data
-static const int ATSC_MPEG_RS_ENCODED_LENGTH = 207;
-static const int ATSC_DATA_SEGMENT_LENGTH = 832; // includes 4 sync symbols at beginning
-static const int ATSC_DSEGS_PER_FIELD = 312; // regular data segs / field
-
-
-static const int MPEG_SYNC_BYTE = 0x47;
-
-static const int MPEG_TRANSPORT_ERROR_BIT = 0x80; // top bit of byte after SYNC
-
-
-#endif // _ATSC_CONSTS_H_
diff --git a/gr-atsc/src/lib/atsc_deinterleaver.cc b/gr-atsc/src/lib/atsc_deinterleaver.cc
deleted file mode 100644
index f251c7f4e..000000000
--- a/gr-atsc/src/lib/atsc_deinterleaver.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_deinterleaver.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_deinterleaver_sptr
-atsc_make_deinterleaver()
-{
- return gnuradio::get_initial_sptr(new atsc_deinterleaver());
-}
-
-atsc_deinterleaver::atsc_deinterleaver()
- : gr_sync_block("atsc_deinterleaver",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)))
-{
- reset();
-}
-
-int
-atsc_deinterleaver::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet_rs_encoded *in = (const atsc_mpeg_packet_rs_encoded *) input_items[0];
- atsc_mpeg_packet_rs_encoded *out = (atsc_mpeg_packet_rs_encoded *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
- d_deinterleaver.deinterleave (out[i], in[i]);
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_deinterleaver.h b/gr-atsc/src/lib/atsc_deinterleaver.h
deleted file mode 100644
index e398dfcc7..000000000
--- a/gr-atsc/src/lib/atsc_deinterleaver.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_DEINTERLEAVER_H
-#define INCLUDED_ATSC_DEINTERLEAVER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_data_interleaver.h>
-
-class atsc_deinterleaver;
-typedef boost::shared_ptr<atsc_deinterleaver> atsc_deinterleaver_sptr;
-
-ATSC_API atsc_deinterleaver_sptr atsc_make_deinterleaver();
-
-/*!
- * \brief Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded
- */
-class ATSC_API atsc_deinterleaver : public gr_sync_block
-{
- friend ATSC_API atsc_deinterleaver_sptr atsc_make_deinterleaver();
-
- atsci_data_deinterleaver d_deinterleaver;
-
- atsc_deinterleaver();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_DEINTERLEAVER_H */
diff --git a/gr-atsc/src/lib/atsc_depad.cc b/gr-atsc/src/lib/atsc_depad.cc
deleted file mode 100644
index 9792a4e6a..000000000
--- a/gr-atsc/src/lib/atsc_depad.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2008,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_depad.h>
-#include <gr_io_signature.h>
-#include <atsc_types.h>
-
-atsc_depad_sptr
-atsc_make_depad()
-{
- return gnuradio::get_initial_sptr(new atsc_depad());
-}
-
-atsc_depad::atsc_depad()
- : gr_sync_interpolator("atsc_depad",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet)),
- gr_make_io_signature(1, 1, sizeof(unsigned char)),
- ATSC_MPEG_PKT_LENGTH)
-{
- reset();
-}
-
-int
-atsc_depad::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet *in = (const atsc_mpeg_packet *) input_items[0];
- unsigned char *out = (unsigned char *) output_items[0];
-
- int i;
-
- for (i = 0; i < noutput_items/ATSC_MPEG_PKT_LENGTH; i++){
- memcpy(&out[i * ATSC_MPEG_PKT_LENGTH], in[i].data, ATSC_MPEG_PKT_LENGTH);
- }
-
- return i * ATSC_MPEG_PKT_LENGTH;
-}
diff --git a/gr-atsc/src/lib/atsc_depad.h b/gr-atsc/src/lib/atsc_depad.h
deleted file mode 100644
index 9d1a381bf..000000000
--- a/gr-atsc/src/lib/atsc_depad.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_DEPAD_H
-#define INCLUDED_ATSC_DEPAD_H
-
-#include <atsc_api.h>
-#include <gr_sync_interpolator.h>
-
-class atsc_depad;
-typedef boost::shared_ptr<atsc_depad> atsc_depad_sptr;
-
-ATSC_API atsc_depad_sptr atsc_make_depad();
-
-/*!
- * \brief depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet; output: unsigned char
- */
-class ATSC_API atsc_depad : public gr_sync_interpolator
-{
- friend ATSC_API atsc_depad_sptr atsc_make_depad();
-
- atsc_depad();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_DEPAD_H */
diff --git a/gr-atsc/src/lib/atsc_derandomizer.cc b/gr-atsc/src/lib/atsc_derandomizer.cc
deleted file mode 100644
index 6642adb25..000000000
--- a/gr-atsc/src/lib/atsc_derandomizer.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_derandomizer.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_derandomizer_sptr
-atsc_make_derandomizer()
-{
- return gnuradio::get_initial_sptr(new atsc_derandomizer());
-}
-
-atsc_derandomizer::atsc_derandomizer()
- : gr_sync_block("atsc_derandomizer",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_no_sync)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet)))
-{
- reset();
-}
-
-void
-atsc_derandomizer::reset()
-{
- d_rand.reset();
-}
-
-int
-atsc_derandomizer::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet_no_sync *in = (const atsc_mpeg_packet_no_sync *) input_items[0];
- atsc_mpeg_packet *out = (atsc_mpeg_packet *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
-
- assert(in[i].pli.regular_seg_p());
-
- if (in[i].pli.first_regular_seg_p())
- d_rand.reset();
-
- d_rand.derandomize(out[i], in[i]);
-
- // Check the pipeline info for error status and and set the
- // corresponding bit in transport packet header.
-
- if (in[i].pli.transport_error_p())
- out[i].data[1] |= MPEG_TRANSPORT_ERROR_BIT;
- else
- out[i].data[1] &= ~MPEG_TRANSPORT_ERROR_BIT;
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_derandomizer.h b/gr-atsc/src/lib/atsc_derandomizer.h
deleted file mode 100644
index 1881a69a3..000000000
--- a/gr-atsc/src/lib/atsc_derandomizer.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_DERANDOMIZER_H
-#define INCLUDED_ATSC_DERANDOMIZER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_randomizer.h>
-
-class atsc_derandomizer;
-typedef boost::shared_ptr<atsc_derandomizer> atsc_derandomizer_sptr;
-
-ATSC_API atsc_derandomizer_sptr atsc_make_derandomizer();
-
-/*!
- * \brief "dewhiten" incoming mpeg transport stream packets
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet;
- */
-class ATSC_API atsc_derandomizer : public gr_sync_block
-{
- friend ATSC_API atsc_derandomizer_sptr atsc_make_derandomizer();
-
- atsci_randomizer d_rand;
-
- atsc_derandomizer();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset();
-};
-
-
-#endif /* INCLUDED_ATSC_DERANDOMIZER_H */
diff --git a/gr-atsc/src/lib/atsc_ds_to_softds.cc b/gr-atsc/src/lib/atsc_ds_to_softds.cc
deleted file mode 100644
index a8f93bde4..000000000
--- a/gr-atsc/src/lib/atsc_ds_to_softds.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_ds_to_softds.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_ds_to_softds_sptr
-atsc_make_ds_to_softds()
-{
- return gnuradio::get_initial_sptr(new atsc_ds_to_softds());
-}
-
-atsc_ds_to_softds::atsc_ds_to_softds()
- : gr_sync_block("atsc_ds_to_softds",
- gr_make_io_signature(1, 1, sizeof(atsc_data_segment)),
- gr_make_io_signature(1, 1, sizeof(atsc_soft_data_segment)))
-{
- reset();
-}
-
-#define NELEM(x) (sizeof (x) / sizeof (x[0]))
-
-void
-atsc_ds_to_softds::map_to_soft_symbols (atsc_soft_data_segment &out,
- const atsc_data_segment &in)
-{
- for (unsigned int i = 0; i < NELEM (in.data); i++){
- out.data[i] = in.data[i] * 2 - 7;
- }
-}
-
-
-int
-atsc_ds_to_softds::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_data_segment *in = (const atsc_data_segment *) input_items[0];
- atsc_soft_data_segment *out = (atsc_soft_data_segment *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
-
- out[i].pli = in[i].pli; // copy pipeline info...
- map_to_soft_symbols(out[i], in[i]);
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_ds_to_softds.h b/gr-atsc/src/lib/atsc_ds_to_softds.h
deleted file mode 100644
index 0ba61c7d6..000000000
--- a/gr-atsc/src/lib/atsc_ds_to_softds.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_DS_TO_SOFTDS_H
-#define INCLUDED_ATSC_DS_TO_SOFTDS_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsc_types.h>
-
-class atsc_ds_to_softds;
-typedef boost::shared_ptr<atsc_ds_to_softds> atsc_ds_to_softds_sptr;
-
-ATSC_API atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
-
-/*!
- * \brief Debug glue routine (atsc_data_segment --> atsc_soft_data_segment)
- * \ingroup atsc
- *
- * input: atsc_data_segment; output: atsc_soft_data_segment
- */
-class ATSC_API atsc_ds_to_softds : public gr_sync_block
-{
- friend ATSC_API atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
-
- atsc_ds_to_softds();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void map_to_soft_symbols (atsc_soft_data_segment &out,
- const atsc_data_segment &in);
-
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_DS_TO_SOFTDS_H */
diff --git a/gr-atsc/src/lib/atsc_equalizer.cc b/gr-atsc/src/lib/atsc_equalizer.cc
deleted file mode 100644
index b8f31aeb4..000000000
--- a/gr-atsc/src/lib/atsc_equalizer.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_equalizer.h>
-#include <create_atsci_equalizer.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-#include <atsci_syminfo.h>
-
-
-atsc_equalizer_sptr
-atsc_make_equalizer()
-{
- return gnuradio::get_initial_sptr(new atsc_equalizer());
-}
-
-// had atsc_equalizer(atsci_equalizer *equalizer)
-atsc_equalizer::atsc_equalizer()
- : gr_sync_block("atsc_equalizer",
- gr_make_io_signature(2, 2, sizeof(float)),
- gr_make_io_signature(2, 2, sizeof(float)))
-{
- d_equalizer = create_atsci_equalizer_lms();
-}
-
-atsc_equalizer::~atsc_equalizer ()
-{
- // Anything that isn't automatically cleaned up...
-
- delete d_equalizer;
-}
-
-
-void
-atsc_equalizer::forecast (int noutput_items, gr_vector_int &ninput_items_required)
-{
-
- int ntaps = d_equalizer->ntaps ();
-
- unsigned ninputs = ninput_items_required.size();
- for (unsigned i = 0; i < ninputs; i++)
- ninput_items_required[i] = fixed_rate_noutput_to_ninput (noutput_items + ntaps);
-
-
-}
-
-
-
-int
-atsc_equalizer::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const float *in = (const float *) input_items[0];
- const atsc::syminfo *in_tags = (const atsc::syminfo *) input_items[1];
- float *out = (float *) output_items[0];
- atsc::syminfo *out_tags = (atsc::syminfo *) output_items[1];
-
- assert(sizeof(float) == sizeof(atsc::syminfo));
-
- int ntaps = d_equalizer->ntaps ();
- int npretaps = d_equalizer->npretaps ();
-
- assert (ntaps >= 1);
- assert (npretaps >= 0 && npretaps < ntaps);
-
- int offset = ntaps - npretaps - 1;
- assert (offset >= 0 && offset < ntaps);
-
-
- // peform the actual equalization
-
- d_equalizer->filter (in, in_tags + offset,
- out, noutput_items);
-
- // write the output tags
-
- for (int i = 0; i < noutput_items; i++)
- out_tags[i] = in_tags[i + offset];
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_equalizer.h b/gr-atsc/src/lib/atsc_equalizer.h
deleted file mode 100644
index aca5e63b4..000000000
--- a/gr-atsc/src/lib/atsc_equalizer.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_EQUALIZER_H
-#define INCLUDED_ATSC_EQUALIZER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_equalizer.h>
-#include <vector>
-
-class atsc_equalizer;
-typedef boost::shared_ptr<atsc_equalizer> atsc_equalizer_sptr;
-
-atsc_equalizer_sptr ATSC_API atsc_make_equalizer();
-
-/*!
- * \brief ATSC equalizer (float,syminfo --> float,syminfo)
- * \ingroup atsc
- *
- * first inputs are data samples, second inputs are tags.
- * first outputs are equalized data samples, second outputs are tags.
- */
-class ATSC_API atsc_equalizer : public gr_sync_block
-{
- friend ATSC_API atsc_equalizer_sptr atsc_make_equalizer();
-
- atsc_equalizer();
-
-public:
- void forecast (int noutput_items, gr_vector_int &ninput_items_required);
-
- std::vector<double> taps() {
- return d_equalizer->taps();
- }
-
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-
- ~atsc_equalizer ();
-
-
-protected:
- atsci_equalizer *d_equalizer;
-
-};
-
-
-#endif /* INCLUDED_ATSC_EQUALIZER_H */
diff --git a/gr-atsc/src/lib/atsc_field_sync_demux.cc b/gr-atsc/src/lib/atsc_field_sync_demux.cc
deleted file mode 100644
index 2783e4a90..000000000
--- a/gr-atsc/src/lib/atsc_field_sync_demux.cc
+++ /dev/null
@@ -1,209 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cmath>
-#include <atsc_field_sync_demux.h>
-#include <gr_io_signature.h>
-#include <atsc_types.h>
-#include <atsc_consts.h>
-#include <atsci_syminfo.h>
-#include <stdio.h>
-#include <assert.h>
-#include <iostream>
-
-using std::cerr;
-using std::endl;
-
-
-static const int DEC = ATSC_DATA_SEGMENT_LENGTH; // nominal decimation factor
-
-
-atsc_field_sync_demux_sptr
-atsc_make_field_sync_demux()
-{
- return gnuradio::get_initial_sptr(new atsc_field_sync_demux());
-}
-
-atsc_field_sync_demux::atsc_field_sync_demux()
- : gr_block("atsc_field_sync_demux",
- gr_make_io_signature(2, 2, sizeof(float)),
- gr_make_io_signature(1, 1, sizeof(atsc_soft_data_segment))),
- d_locked(false), d_in_field2(true), d_segment_number(0),
- d_next_input(0), d_lost_index(0), d_inputs0_index(0),
- d_inputs0_size(0), d_consume(0)
-{
- reset();
-}
-
-inline static bool
-tag_is_seg_sync_or_field_sync (atsc::syminfo tag)
-{
- return tag.symbol_num == 0 && tag.valid;
-}
-
-void
-atsc_field_sync_demux::forecast (int noutput_items, gr_vector_int &ninput_items_required)
-{
- unsigned ninputs = ninput_items_required.size();
- for (unsigned i = 0; i < ninputs; i++) {
- ninput_items_required[i] = noutput_items * DEC + 2 * DEC ;
-
- d_inputs0_index = d_next_input;
- d_inputs0_size = noutput_items * DEC + 2 * DEC ;
- }
-}
-
-int
-atsc_field_sync_demux::general_work (int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- int r = work (noutput_items, input_items, output_items);
- consume_each (d_consume);
- // printf("Consumed: %d, produced: %d\n",d_consume,r);
- // we consume input even if no output is produced
- // while looking for sync
- return r;
-}
-
-
-int
-atsc_field_sync_demux::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- float *in = (float *) input_items[0];
- atsc::syminfo *input_tags = (atsc::syminfo *) input_items[1];
- atsc_soft_data_segment *out = (atsc_soft_data_segment *) output_items[0];
-
- assert(sizeof(float) == sizeof(atsc::syminfo));
-
- unsigned int ii = 0; // input index
-
- // Are we in sync?
- if (!tag_is_seg_sync_or_field_sync (input_tags[0])){ // No ...
-
- if (d_locked){
- d_locked = false;
- d_lost_index = d_inputs0_index + ii;
- cerr << "atsc_field_sync_demux: lost sync at "
- << d_lost_index << endl;
- }
-
- // ... search for beginning of a field sync
-
- // cerr << "atsc_field_sync_demux: searching for sync at "
- // << d_inputs0_index + ii << endl;
-
- for (ii = 1; ii < d_inputs0_size; ii++){
- if (atsc::tag_is_start_field_sync (input_tags[ii])){
- // found one
- d_locked = true;
-
- const char *str;
- if (atsc::tag_is_start_field_sync_1 (input_tags[ii]))
- str = "FIELD-1";
- else if (atsc::tag_is_start_field_sync_2 (input_tags[ii]))
- str = "FIELD-2";
- else
- str = "SEGMENT";
-
- cerr << "atsc_field_sync_demux: synced (" << str << ") at "
- << d_inputs0_index + ii
- << " [delta = " << d_inputs0_index + ii - d_lost_index
- << "]\n";
-
- d_next_input += ii; // update for forecast
- d_consume = ii;
- return 0; // no work completed so far
- }
- }
- // no non-NORMAL tag found
- d_next_input += ii; // update for forecast
- d_consume = ii;
- // printf("ii: %d, d_next_input: %d\n",ii,d_next_input);
- return 0; // no work completed so far
- }
-
- // We are in sync. Produce output...
-
- int k = 0; // output index
-
- while (k < noutput_items){
-
- if (d_inputs0_size - ii < static_cast<unsigned int>(ATSC_DATA_SEGMENT_LENGTH)){
- // We're out of input data.
- cerr << "atsc_field_sync_demux: ran out of input data\n";
- d_next_input += ii; // update for forecast
- return k; // return amount of work completed so far
- }
-
- if (!tag_is_seg_sync_or_field_sync (input_tags[ii])){
- // lost sync...
- cerr << "atsc_field_sync_demux: lost sync at "
- << d_inputs0_index + ii << endl;
-
- d_next_input += ii; // update for forecast
- return k; // return amount of work completed so far
- }
-
- if (atsc::tag_is_start_field_sync_1 (input_tags[ii])){
- d_in_field2 = false;
- d_segment_number = 0;
- ii += ATSC_DATA_SEGMENT_LENGTH; // skip over field sync
- continue;
- }
-
- if (atsc::tag_is_start_field_sync_2 (input_tags[ii])){
- d_in_field2 = true;
- d_segment_number = 0;
- ii += ATSC_DATA_SEGMENT_LENGTH; // skip over field sync
- continue;
- }
-
- if (d_segment_number >= ATSC_DSEGS_PER_FIELD){
- // something's wrong...
- cerr << "atsc_field_sync_demux: segment number overflow\n";
- d_segment_number = 0;
- }
-
- out[k].pli.set_regular_seg (d_in_field2, d_segment_number++);
- for (int jj = 0; jj < ATSC_DATA_SEGMENT_LENGTH; jj++)
- out[k].data[jj] = in[ii + jj];
- ii += ATSC_DATA_SEGMENT_LENGTH;
- k++;
- }
-
- d_next_input += ii; // update for forecast
- d_consume = ii;
- return k; // return amount of work completed
-
-}
-
-
-
-
diff --git a/gr-atsc/src/lib/atsc_field_sync_demux.h b/gr-atsc/src/lib/atsc_field_sync_demux.h
deleted file mode 100644
index ea9a5d1ac..000000000
--- a/gr-atsc/src/lib/atsc_field_sync_demux.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_FIELD_SYNC_DEMUX_H
-#define INCLUDED_ATSC_FIELD_SYNC_DEMUX_H
-
-#include <atsc_api.h>
-#include <gr_block.h>
-#include <atsc_types.h>
-
-class atsc_field_sync_demux;
-typedef boost::shared_ptr<atsc_field_sync_demux> atsc_field_sync_demux_sptr;
-
-ATSC_API atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
-
-/*!
- * \brief ATSC Field Sync Demux
- *
- * This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo). * It outputs one stream of atsc_soft_data_segment packets
- * \ingroup atsc
- *
- */
-class ATSC_API atsc_field_sync_demux : public gr_block
-{
- friend ATSC_API atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
-
- atsc_field_sync_demux();
-
-public:
- void forecast (int noutput_items, gr_vector_int &ninput_items_required);
-
- int general_work (int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
-
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-
-protected:
- bool d_locked;
- bool d_in_field2;
- int d_segment_number;
- gr_uint64 d_next_input;
- gr_uint64 d_lost_index; // diagnostic fluff
-
- unsigned long long d_inputs0_index; // for inputs[0].index
- unsigned long d_inputs0_size; // for inputs[0].size
- int d_consume;
-
-};
-
-
-#endif /* INCLUDED_ATSC_FIELD_SYNC_DEMUX_H */
diff --git a/gr-atsc/src/lib/atsc_field_sync_mux.cc b/gr-atsc/src/lib/atsc_field_sync_mux.cc
deleted file mode 100644
index 99fa5bff3..000000000
--- a/gr-atsc/src/lib/atsc_field_sync_mux.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_field_sync_mux.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-#include <atsci_pnXXX.h>
-
-
-atsc_field_sync_mux_sptr
-atsc_make_field_sync_mux()
-{
- return gnuradio::get_initial_sptr(new atsc_field_sync_mux());
-}
-
-atsc_field_sync_mux::atsc_field_sync_mux()
- : gr_sync_block("atsc_field_sync_mux",
- gr_make_io_signature(1, 1, sizeof(atsc_data_segment)),
- gr_make_io_signature(1, 1, sizeof(atsc_data_segment)))
-{
- reset();
-}
-
-static const int NUMBER_OF_OUTPUTS = 1; // # of output streams (almost always one)
-
-static const int N_SAVED_SYMBOLS = atsc_field_sync_mux::N_SAVED_SYMBOLS;
-
-static void
-init_field_sync_common (unsigned char *p, int mask,
- const unsigned char saved_symbols[N_SAVED_SYMBOLS])
-{
- static const unsigned char bin_map[2] = { 1, 6 }; // map binary values to 1 of 8 levels
-
- int i = 0;
-
- p[i++] = bin_map[1]; // data segment sync pulse
- p[i++] = bin_map[0];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
-
- for (int j = 0; j < 511; j++) // PN511
- p[i++] = bin_map[atsc_pn511[j]];
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map[atsc_pn63[j]];
-
- for (int j = 0; j < 63; j++) // PN63, toggled on field 2
- p[i++] = bin_map[atsc_pn63[j] ^ mask];
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map[atsc_pn63[j]];
-
- p[i++] = bin_map[0]; // 24 bits of VSB8 mode identifiera
- p[i++] = bin_map[0];
- p[i++] = bin_map[0];
- p[i++] = bin_map[0];
-
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
-
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
-
- p[i++] = bin_map[1];
- p[i++] = bin_map[1];
- p[i++] = bin_map[1];
- p[i++] = bin_map[1];
-
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
-
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
- p[i++] = bin_map[1];
- p[i++] = bin_map[0];
-
-
- for (int j = 0; j < 92; j++) // 92 more bits
- p[i++] = bin_map[atsc_pn63[j % 63]];
-
- // now copy the last 12 symbols of the previous segment
-
- for (int j = 0; j < N_SAVED_SYMBOLS; j++)
- p[i++] = saved_symbols[j];
-
- assert (i == ATSC_DATA_SEGMENT_LENGTH);
-}
-inline static void
-init_field_sync_1 (atsc_data_segment *s,
- const unsigned char saved_symbols[N_SAVED_SYMBOLS])
-{
- init_field_sync_common (&s->data[0], 0, saved_symbols);
-}
-
-inline static void
-init_field_sync_2 (atsc_data_segment *s,
- const unsigned char saved_symbols[N_SAVED_SYMBOLS])
-
-{
- init_field_sync_common (&s->data[0], 1, saved_symbols);
-}
-
-static void
-save_last_symbols (unsigned char saved_symbols[N_SAVED_SYMBOLS],
- const atsc_data_segment &seg)
-{
- for (int i = 0; i < N_SAVED_SYMBOLS; i++)
- saved_symbols[i] = seg.data[i + ATSC_DATA_SEGMENT_LENGTH - N_SAVED_SYMBOLS];}
-
-
-inline static bool
-last_regular_seg_p (const plinfo &pli)
-{
- return pli.regular_seg_p () && (pli.segno () == ATSC_DSEGS_PER_FIELD - 1);
-}
-
-void
-atsc_field_sync_mux::forecast (int noutput_items, gr_vector_int &ninput_items_required)
-{
- unsigned ninputs = ninput_items_required.size();
- for (unsigned i = 0; i < ninputs; i++)
- ninput_items_required[i] = fixed_rate_noutput_to_ninput (noutput_items);
-
-}
-
-
-int
-atsc_field_sync_mux::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_data_segment *in = (const atsc_data_segment *) input_items[0];
- atsc_data_segment *out = (atsc_data_segment *) output_items[0];
-
- unsigned int index = 0;
- for (int outdex = 0; outdex < noutput_items; outdex++){
-
- assert (in[index].pli.regular_seg_p ());
-
- if (!in[index].pli.first_regular_seg_p ()){
- out[outdex] = in[index]; // just copy in to out
-
- if (last_regular_seg_p (in[index].pli))
- save_last_symbols (d_saved_symbols, in[index]);
-
- index++;
- }
- else { // first_regular_seg_p
- if (!d_already_output_field_sync){
- // write out field sync...
- atsc_data_segment field_sync;
-
- if (in[index].pli.in_field1_p ())
- init_field_sync_1 (&field_sync, d_saved_symbols);
- else
- init_field_sync_2 (&field_sync, d_saved_symbols);
-
- // note that index doesn't advance in this branch
- out[outdex] = field_sync;
- d_already_output_field_sync = true;
- }
- else {
- // already output field sync, now output first regular segment
- out[outdex] = in[index];
- index++;
- d_already_output_field_sync = false;
- }
- }
- }
-
- d_current_index += index;
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_field_sync_mux.h b/gr-atsc/src/lib/atsc_field_sync_mux.h
deleted file mode 100644
index ce4514e9c..000000000
--- a/gr-atsc/src/lib/atsc_field_sync_mux.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_FIELD_SYNC_MUX_H
-#define INCLUDED_ATSC_FIELD_SYNC_MUX_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsc_types.h>
-
-class atsc_field_sync_mux;
-typedef boost::shared_ptr<atsc_field_sync_mux> atsc_field_sync_mux_sptr;
-
-ATSC_API atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
-
-/*!
- * \brief Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment)
- * \ingroup atsc
- *
- * input: atsc_data_segment; output: atsc_data_segment
- */
-class ATSC_API atsc_field_sync_mux : public gr_sync_block
-{
- friend ATSC_API atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
-
- atsc_field_sync_mux();
-
-public:
- void forecast (int noutput_items, gr_vector_int &ninput_items_required);
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
-
- static const int N_SAVED_SYMBOLS = 12;
-
- void reset() { /* nop */ }
-
-protected:
- gr_uint64 d_current_index;
- bool d_already_output_field_sync;
- unsigned char d_saved_symbols[N_SAVED_SYMBOLS];
-};
-
-
-#endif /* INCLUDED_ATSC_FIELD_SYNC_MUX_H */
diff --git a/gr-atsc/src/lib/atsc_fpll.cc b/gr-atsc/src/lib/atsc_fpll.cc
deleted file mode 100644
index c8d62c415..000000000
--- a/gr-atsc/src/lib/atsc_fpll.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_fpll.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-#include <algorithm>
-#include "fpll_btloop_coupling.h"
-#include <gr_math.h>
-
-atsc_fpll_sptr
-atsc_make_fpll()
-{
- return gnuradio::get_initial_sptr(new atsc_fpll());
-}
-
-
-/*
- * I strongly suggest that you not mess with these...
- *
- * They are strongly coupled into the symbol timing code and
- * their value also sets the level of the symbols going
- * into the equalizer and viterbi decoder.
- */
-static const float FPLL_AGC_REFERENCE = 2.5 * FPLL_BTLOOP_COUPLING_CONST;
-static const float FPLL_AGC_RATE = 0.25e-6;
-
-
-
-atsc_fpll::atsc_fpll()
- : gr_sync_block("atsc_fpll",
- gr_make_io_signature(1, 1, sizeof(float)),
- gr_make_io_signature(1, 1, sizeof(float))),
- initial_phase(0)
-{
- initial_freq = 5.75e6 - 3e6 + 0.31e6 + 5e3; // a_initial_freq;
- agc.set_rate (FPLL_AGC_RATE);
- agc.set_reference (FPLL_AGC_REFERENCE);
- initialize();
-}
-
-
-void
-atsc_fpll::initialize ()
-{
- float Fs = 19.2e6;
-
- float alpha = 1 - exp(-1.0 / Fs / 5e-6);
-
- afci.set_taps (alpha);
- afcq.set_taps (alpha);
-
- printf("Setting initial_freq: %f\n",initial_freq);
- nco.set_freq (initial_freq / Fs * 2 * M_PI);
- nco.set_phase (initial_phase);
-}
-
-
-int
-atsc_fpll::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const float *in = (const float *) input_items[0];
- float *out = (float *) output_items[0];
-
- for (int k = 0; k < noutput_items; k++){
-
- float a_cos, a_sin;
-
- float input = agc.scale (in[k]);
-
- nco.step (); // increment phase
- nco.sincos (&a_sin, &a_cos); // compute cos and sin
-
- float I = input * a_sin;
- float Q = input * a_cos;
-
- out[k] = I;
-
- float filtered_I = afci.filter (I);
- float filtered_Q = afcq.filter (Q);
-
- // phase detector
-
- // float x = atan2 (filtered_Q, filtered_I);
- float x = gr_fast_atan2f(filtered_Q, filtered_I);
-
- // avoid slamming filter with big transitions
-
- static const float limit = M_PI / 2;
-
- if (x > limit)
- x = limit;
- else if (x < -limit)
- x = -limit;
-
- // static const float alpha = 0.037; // Max value
- // static const float alpha = 0.005; // takes about 5k samples to pull in, stddev = 323
- // static const float alpha = 0.002; // takes about 15k samples to pull in, stddev = 69
- // or about 120k samples on noisy data,
- static const float alpha = 0.001;
- static const float beta = alpha * alpha / 4;
-
- nco.adjust_phase (alpha * x);
- nco.adjust_freq (beta * x);
-
- }
-
- return noutput_items;
-}
-
-
-
diff --git a/gr-atsc/src/lib/atsc_fpll.h b/gr-atsc/src/lib/atsc_fpll.h
deleted file mode 100644
index 0474b8f76..000000000
--- a/gr-atsc/src/lib/atsc_fpll.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_FPLL_H
-#define INCLUDED_ATSC_FPLL_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <gr_nco.h>
-#include <gr_single_pole_iir.h>
-#include <gri_agc_ff.h>
-#include <stdio.h>
-#include <atsci_diag_output.h>
-
-class atsc_fpll;
-typedef boost::shared_ptr<atsc_fpll> atsc_fpll_sptr;
-
-ATSC_API atsc_fpll_sptr atsc_make_fpll();
-
-/*!
- * \brief ATSC FPLL (2nd Version)
- * \ingroup atsc
- *
- * A/D --> GrFIRfilterFFF ----> GrAtscFPLL ---->
- *
- * We use GrFIRfilterFFF to bandpass filter the signal of interest.
- *
- * This class accepts a single real input and produces a single real output
- */
-
-class ATSC_API atsc_fpll : public gr_sync_block
-{
- friend ATSC_API atsc_fpll_sptr atsc_make_fpll();
-
- atsc_fpll();
-
-public:
-
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-
- void initialize () ;
-
- protected:
-
- double initial_freq;
- double initial_phase;
- bool debug_no_update;
- gr_nco<float,float> nco;
- gri_agc_ff agc; // automatic gain control
- gr_single_pole_iir<float,float,float> afci;
- gr_single_pole_iir<float,float,float> afcq;
-
-
-};
-
-
-#endif /* INCLUDED_ATSC_FPLL_H */
diff --git a/gr-atsc/src/lib/atsc_fs_checker.cc b/gr-atsc/src/lib/atsc_fs_checker.cc
deleted file mode 100644
index f8c4e43d5..000000000
--- a/gr-atsc/src/lib/atsc_fs_checker.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_fs_checker.h>
-#include <create_atsci_fs_checker.h>
-#include <atsci_fs_checker.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-#include <atsci_syminfo.h>
-
-
-atsc_fs_checker_sptr
-atsc_make_fs_checker()
-{
- return gnuradio::get_initial_sptr(new atsc_fs_checker());
-}
-
-atsc_fs_checker::atsc_fs_checker()
- : gr_sync_block("atsc_fs_checker",
- gr_make_io_signature(2, 2, sizeof(float)),
- gr_make_io_signature(2, 2, sizeof(float)))
-{
- d_fsc = create_atsci_fs_checker();
-}
-
-
-atsc_fs_checker::~atsc_fs_checker ()
-{
- // Anything that isn't automatically cleaned up...
-
- delete d_fsc;
-}
-
-
-int
-atsc_fs_checker::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const float *in = (const float *) input_items[0];
- const atsc::syminfo *tag_in = (const atsc::syminfo *) input_items[1];
- float *out = (float *) output_items[0];
- atsc::syminfo *tag_out = (atsc::syminfo *) output_items[1];
-
- assert(sizeof(float) == sizeof(atsc::syminfo));
-
-
- for (int i = 0; i < noutput_items; i++)
- d_fsc->filter (in[i], tag_in[i], &out[i], &tag_out[i]);
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_fs_checker.h b/gr-atsc/src/lib/atsc_fs_checker.h
deleted file mode 100644
index d034fdd28..000000000
--- a/gr-atsc/src/lib/atsc_fs_checker.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_FS_CHECKER_H
-#define INCLUDED_ATSC_FS_CHECKER_H
-
-#include <atsc_api.h>
-#include <atsci_fs_checker.h>
-#include <gr_sync_block.h>
-
-class atsc_fs_checker;
-typedef boost::shared_ptr<atsc_fs_checker> atsc_fs_checker_sptr;
-
-ATSC_API atsc_fs_checker_sptr atsc_make_fs_checker();
-
-/*!
- * \brief ATSC field sync checker (float,syminfo --> float,syminfo)
- * \ingroup atsc
- *
- * first output is delayed version of input.
- * second output is set of tags, one-for-one with first output.
- */
-
-class ATSC_API atsc_fs_checker : public gr_sync_block
-{
- friend ATSC_API atsc_fs_checker_sptr atsc_make_fs_checker();
-
- atsc_fs_checker();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-
- ~atsc_fs_checker ();
-
-protected:
- atsci_fs_checker *d_fsc;
-
-};
-
-
-#endif /* INCLUDED_ATSC_FS_CHECKER_H */
diff --git a/gr-atsc/src/lib/atsc_interleaver.cc b/gr-atsc/src/lib/atsc_interleaver.cc
deleted file mode 100644
index fff5b2fa6..000000000
--- a/gr-atsc/src/lib/atsc_interleaver.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_interleaver.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_interleaver_sptr
-atsc_make_interleaver()
-{
- return gnuradio::get_initial_sptr(new atsc_interleaver());
-}
-
-atsc_interleaver::atsc_interleaver()
- : gr_sync_block("atsc_interleaver",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)))
-{
- reset();
-}
-
-int
-atsc_interleaver::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet_rs_encoded *in = (const atsc_mpeg_packet_rs_encoded *) input_items[0];
- atsc_mpeg_packet_rs_encoded *out = (atsc_mpeg_packet_rs_encoded *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
- d_interleaver.interleave (out[i], in[i]);
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_interleaver.h b/gr-atsc/src/lib/atsc_interleaver.h
deleted file mode 100644
index 3090d49de..000000000
--- a/gr-atsc/src/lib/atsc_interleaver.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_INTERLEAVER_H
-#define INCLUDED_ATSC_INTERLEAVER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_data_interleaver.h>
-
-class atsc_interleaver;
-typedef boost::shared_ptr<atsc_interleaver> atsc_interleaver_sptr;
-
-ATSC_API atsc_interleaver_sptr atsc_make_interleaver();
-
-/*! \brief Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)*
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded
- */
-class ATSC_API atsc_interleaver : public gr_sync_block
-{
- friend ATSC_API atsc_interleaver_sptr atsc_make_interleaver();
-
- atsci_data_interleaver d_interleaver;
-
- atsc_interleaver();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_INTERLEAVER_H */
diff --git a/gr-atsc/src/lib/atsc_pad.cc b/gr-atsc/src/lib/atsc_pad.cc
deleted file mode 100644
index 317b16aca..000000000
--- a/gr-atsc/src/lib/atsc_pad.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_pad.h>
-#include <gr_io_signature.h>
-#include <atsc_types.h>
-
-static const int INTR = ATSC_MPEG_PKT_LENGTH;
-
-atsc_pad_sptr
-atsc_make_pad()
-{
- return gnuradio::get_initial_sptr(new atsc_pad());
-}
-
-atsc_pad::atsc_pad()
- : gr_sync_decimator("atsc_pad",
- gr_make_io_signature(1, 1, sizeof(unsigned char)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet)),
- INTR)
-{
- reset();
-}
-
-void
-atsc_pad::forecast (int noutput_items, gr_vector_int &ninput_items_required)
-{
- unsigned ninputs = ninput_items_required.size();
- for (unsigned i = 0; i < ninputs; i++)
- ninput_items_required[i] = noutput_items * ATSC_MPEG_PKT_LENGTH;
-}
-
-
-int
-atsc_pad::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const unsigned char *in = (const unsigned char *) input_items[0];
- atsc_mpeg_packet *out = (atsc_mpeg_packet *) output_items[0];
-
- int i;
-
- for (i = 0; i < noutput_items; i++){
- for (int j = 0; j < ATSC_MPEG_PKT_LENGTH; j++)
- out[i].data[j] = in[i * ATSC_MPEG_PKT_LENGTH + j];
-
- }
-
- return noutput_items;
-}
-
-
-
-
diff --git a/gr-atsc/src/lib/atsc_pad.h b/gr-atsc/src/lib/atsc_pad.h
deleted file mode 100644
index 139d951a6..000000000
--- a/gr-atsc/src/lib/atsc_pad.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_PAD_H
-#define INCLUDED_ATSC_PAD_H
-
-#include <atsc_api.h>
-#include <gr_sync_decimator.h>
-
-class atsc_pad;
-typedef boost::shared_ptr<atsc_pad> atsc_pad_sptr;
-
-ATSC_API atsc_pad_sptr atsc_make_pad();
-
-/*!
- * \brief pad mpeg ts packets from 188 byte char to
- * to 256 byte atsc_mpeg_packet
- * \ingroup atsc
- *
- * input: unsigned char; output: atsc_mpeg_packet
- */
-class ATSC_API atsc_pad : public gr_sync_decimator
-{
- friend ATSC_API atsc_pad_sptr atsc_make_pad();
-
- atsc_pad();
-
-public:
- void forecast (int noutput_items, gr_vector_int &ninput_items_required);
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_PAD_H */
diff --git a/gr-atsc/src/lib/atsc_randomizer.cc b/gr-atsc/src/lib/atsc_randomizer.cc
deleted file mode 100644
index 73375e84c..000000000
--- a/gr-atsc/src/lib/atsc_randomizer.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_randomizer.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_randomizer_sptr
-atsc_make_randomizer()
-{
- return gnuradio::get_initial_sptr(new atsc_randomizer());
-}
-
-atsc_randomizer::atsc_randomizer()
- : gr_sync_block("atsc_randomizer",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_no_sync)))
-{
- reset();
-}
-
-void
-atsc_randomizer::reset()
-{
- d_rand.reset();
- d_field2 = false;
- d_segno = 0;
-}
-
-int
-atsc_randomizer::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet *in = (const atsc_mpeg_packet *) input_items[0];
- atsc_mpeg_packet_no_sync *out = (atsc_mpeg_packet_no_sync *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
-
- // sanity check incoming data.
- assert((in[i].data[0] == MPEG_SYNC_BYTE));
- assert((in[i].data[1] & MPEG_TRANSPORT_ERROR_BIT) == 0);
-
- // initialize plinfo for downstream
- //
- // We do this here because the randomizer is effectively
- // the head of the tx processing chain
- //
- out[i].pli.set_regular_seg(d_field2, d_segno);
- d_segno++;
- if (d_segno == 312){
- d_segno = 0;
- d_field2 = !d_field2;
- }
-
- if (out[i].pli.first_regular_seg_p())
- d_rand.reset();
-
- d_rand.randomize(out[i], in[i]);
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_randomizer.h b/gr-atsc/src/lib/atsc_randomizer.h
deleted file mode 100644
index 7d00efcf9..000000000
--- a/gr-atsc/src/lib/atsc_randomizer.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_RANDOMIZER_H
-#define INCLUDED_ATSC_RANDOMIZER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_randomizer.h>
-
-class atsc_randomizer;
-typedef boost::shared_ptr<atsc_randomizer> atsc_randomizer_sptr;
-
-ATSC_API atsc_randomizer_sptr atsc_make_randomizer();
-
-/*!
- * \brief "Whiten" incoming mpeg transport stream packets
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync
- */
-class ATSC_API atsc_randomizer : public gr_sync_block
-{
- friend ATSC_API atsc_randomizer_sptr atsc_make_randomizer();
-
- atsci_randomizer d_rand;
- bool d_field2; // user to init plinfo in output
- int d_segno; // likewise
-
- atsc_randomizer();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset();
-};
-
-
-#endif /* INCLUDED_ATSC_RANDOMIZER_H */
diff --git a/gr-atsc/src/lib/atsc_rs_decoder.cc b/gr-atsc/src/lib/atsc_rs_decoder.cc
deleted file mode 100644
index e4bb6e57a..000000000
--- a/gr-atsc/src/lib/atsc_rs_decoder.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_rs_decoder.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_rs_decoder_sptr
-atsc_make_rs_decoder()
-{
- return gnuradio::get_initial_sptr(new atsc_rs_decoder());
-}
-
-atsc_rs_decoder::atsc_rs_decoder()
- : gr_sync_block("atsc_rs_decoder",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_no_sync)))
-{
- reset();
-}
-
-int
-atsc_rs_decoder::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet_rs_encoded *in = (const atsc_mpeg_packet_rs_encoded *) input_items[0];
- atsc_mpeg_packet_no_sync *out = (atsc_mpeg_packet_no_sync *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
- assert(in[i].pli.regular_seg_p());
- out[i].pli = in[i].pli; // copy pipeline info...
-
- int nerrors_corrrected = d_rs_decoder.decode(out[i], in[i]);
- out[i].pli.set_transport_error(nerrors_corrrected == -1);
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_rs_decoder.h b/gr-atsc/src/lib/atsc_rs_decoder.h
deleted file mode 100644
index 9e4bf8d44..000000000
--- a/gr-atsc/src/lib/atsc_rs_decoder.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_RS_DECODER_H
-#define INCLUDED_ATSC_RS_DECODER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_reed_solomon.h>
-
-class atsc_rs_decoder;
-typedef boost::shared_ptr<atsc_rs_decoder> atsc_rs_decoder_sptr;
-
-ATSC_API atsc_rs_decoder_sptr atsc_make_rs_decoder();
-
-/*!
- * \brief Reed-Solomon decoder for ATSC
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync
- */
-class ATSC_API atsc_rs_decoder : public gr_sync_block
-{
- friend ATSC_API atsc_rs_decoder_sptr atsc_make_rs_decoder();
-
- atsci_reed_solomon d_rs_decoder;
-
- atsc_rs_decoder();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_RS_DECODER_H */
diff --git a/gr-atsc/src/lib/atsc_rs_encoder.cc b/gr-atsc/src/lib/atsc_rs_encoder.cc
deleted file mode 100644
index 7c4ec293b..000000000
--- a/gr-atsc/src/lib/atsc_rs_encoder.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_rs_encoder.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_rs_encoder_sptr
-atsc_make_rs_encoder()
-{
- return gnuradio::get_initial_sptr(new atsc_rs_encoder());
-}
-
-atsc_rs_encoder::atsc_rs_encoder()
- : gr_sync_block("atsc_rs_encoder",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_no_sync)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)))
-{
- reset();
-}
-
-int
-atsc_rs_encoder::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet_no_sync *in = (const atsc_mpeg_packet_no_sync *) input_items[0];
- atsc_mpeg_packet_rs_encoded *out = (atsc_mpeg_packet_rs_encoded *) output_items[0];
-
- for (int i = 0; i < noutput_items; i++){
-
- assert(in[i].pli.regular_seg_p());
- out[i].pli = in[i].pli; // copy pipeline info...
- d_rs_encoder.encode(out[i], in[i]);
- }
-
- return noutput_items;
-}
diff --git a/gr-atsc/src/lib/atsc_rs_encoder.h b/gr-atsc/src/lib/atsc_rs_encoder.h
deleted file mode 100644
index b0d69d95d..000000000
--- a/gr-atsc/src/lib/atsc_rs_encoder.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_RS_ENCODER_H
-#define INCLUDED_ATSC_RS_ENCODER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_reed_solomon.h>
-
-class atsc_rs_encoder;
-typedef boost::shared_ptr<atsc_rs_encoder> atsc_rs_encoder_sptr;
-
-ATSC_API atsc_rs_encoder_sptr atsc_make_rs_encoder();
-
-/*!
- * \brief Reed-Solomon encoder for ATSC
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded
- */
-class ATSC_API atsc_rs_encoder : public gr_sync_block
-{
- friend ATSC_API atsc_rs_encoder_sptr atsc_make_rs_encoder();
-
- atsci_reed_solomon d_rs_encoder;
-
- atsc_rs_encoder();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_RS_ENCODER_H */
diff --git a/gr-atsc/src/lib/atsc_trellis_encoder.cc b/gr-atsc/src/lib/atsc_trellis_encoder.cc
deleted file mode 100644
index fa0a889aa..000000000
--- a/gr-atsc/src/lib/atsc_trellis_encoder.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_trellis_encoder.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-
-
-atsc_trellis_encoder_sptr
-atsc_make_trellis_encoder()
-{
- return gnuradio::get_initial_sptr(new atsc_trellis_encoder());
-}
-
-atsc_trellis_encoder::atsc_trellis_encoder()
- : gr_sync_block("atsc_trellis_encoder",
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded)),
- gr_make_io_signature(1, 1, sizeof(atsc_data_segment)))
-{
- set_output_multiple(atsci_trellis_encoder::NCODERS);
- reset();
-}
-
-int
-atsc_trellis_encoder::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_mpeg_packet_rs_encoded *in = (const atsc_mpeg_packet_rs_encoded *) input_items[0];
- atsc_data_segment *out = (atsc_data_segment *) output_items[0];
-
- for (int i = 0; i < atsci_trellis_encoder::NCODERS; i += atsci_trellis_encoder::NCODERS){
- d_trellis_encoder.encode(&out[i], &in[i]);
- }
- return atsci_trellis_encoder::NCODERS;
-}
-
diff --git a/gr-atsc/src/lib/atsc_trellis_encoder.h b/gr-atsc/src/lib/atsc_trellis_encoder.h
deleted file mode 100644
index da51f633d..000000000
--- a/gr-atsc/src/lib/atsc_trellis_encoder.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_TRELLIS_ENCODER_H
-#define INCLUDED_ATSC_TRELLIS_ENCODER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_trellis_encoder.h>
-
-class atsc_trellis_encoder;
-typedef boost::shared_ptr<atsc_trellis_encoder> atsc_trellis_encoder_sptr;
-
-ATSC_API atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
-
-/*!
- * \brief ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment)
- * \ingroup atsc
- *
- * input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment
- */
-class ATSC_API atsc_trellis_encoder : public gr_sync_block
-{
- friend ATSC_API atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
-
- atsci_trellis_encoder d_trellis_encoder;
-
- atsc_trellis_encoder();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-};
-
-
-#endif /* INCLUDED_ATSC_TRELLIS_ENCODER_H */
diff --git a/gr-atsc/src/lib/atsc_types.h b/gr-atsc/src/lib/atsc_types.h
deleted file mode 100644
index ed4dedace..000000000
--- a/gr-atsc/src/lib/atsc_types.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2001,2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_TYPES_H_
-#define _ATSC_TYPES_H_
-
-#include <atsc_consts.h>
-#include <cstring>
-#include <cassert>
-
-
-/*!
- * \brief pipeline info that flows with data
- *
- * Not all modules need all the info
- */
-class plinfo {
-public:
- plinfo () : _flags (0), _segno (0) { }
-
- // accessors
-
- bool field_sync1_p () const { return (_flags & fl_field_sync1) != 0; }
- bool field_sync2_p () const { return (_flags & fl_field_sync2) != 0; }
- bool field_sync_p () const { return field_sync1_p () || field_sync2_p (); }
-
- bool regular_seg_p () const { return (_flags & fl_regular_seg) != 0; }
-
- bool in_field1_p () const { return (_flags & fl_field2) == 0; }
- bool in_field2_p () const { return (_flags & fl_field2) != 0; }
-
- bool first_regular_seg_p () const { return (_flags & fl_first_regular_seg) != 0; }
-
- bool transport_error_p () const { return (_flags & fl_transport_error) != 0; }
-
- unsigned int segno () const { return _segno; }
- unsigned int flags () const { return _flags; }
-
- // setters
-
- void set_field_sync1 ()
- {
- _segno = 0;
- _flags = fl_field_sync1;
- }
-
- void set_field_sync2 ()
- {
- _segno = 0;
- _flags = fl_field_sync2 | fl_field2;
- }
-
- void set_regular_seg (bool field2, int segno)
- {
- assert (0 <= segno && segno < ATSC_DSEGS_PER_FIELD);
- _segno = segno;
- _flags = fl_regular_seg;
- if (segno == 0)
- _flags |= fl_first_regular_seg;
- if (segno >= ATSC_DSEGS_PER_FIELD)
- _flags |= fl_transport_error;
- if (field2)
- _flags |= fl_field2;
- }
-
- void set_transport_error (bool error){
- if (error)
- _flags |= fl_transport_error;
- else
- _flags &= ~fl_transport_error;
- }
-
- // overload equality operator
- bool operator== (const plinfo &other) const {
- return (_flags == other._flags && _segno == other._segno);
- }
-
- bool operator!= (const plinfo &other) const {
- return !(_flags == other._flags && _segno == other._segno);
- }
-
- /*!
- * Set \p OUT such that it reflects a \p NSEGS_OF_DELAY
- * pipeline delay from \p IN.
- */
- static void delay (plinfo &out, const plinfo &in, int nsegs_of_delay);
-
- /*!
- * confirm that \p X is plausible
- */
- static void sanity_check (const plinfo &in);
-
-
-protected:
- unsigned short _flags; // bitmask
- unsigned short _segno; // segment number [0,311]
-
- // these three are mutually exclusive
- // This is a regular data segment.
- static const int fl_regular_seg = 0x0001;
- // This is a field sync segment, for 1st half of a field.
- static const int fl_field_sync1 = 0x0002;
- // This is a field sync segment, for 2nd half of a field.
- static const int fl_field_sync2 = 0x0004;
-
- // This bit is on ONLY when fl_regular_seg is set AND when this is
- // the first regular data segment AFTER a field sync segment. This
- // segment causes various processing modules to reset.
- static const int fl_first_regular_seg = 0x0008;
-
- // which field are we in?
- static const int fl_field2 = 0x0010; // else field 1
-
- // This bit is set when Reed-Solomon decoding detects an error that it
- // can't correct. Note that other error detection (e.g. Viterbi) do not
- // set it, since Reed-Solomon will correct many of those. This bit is
- // then copied into the final Transport Stream packet so that MPEG
- // software can see that the 188-byte data segment has been corrupted.
- static const int fl_transport_error = 0x0020;
-};
-
-
-
-
-class atsc_mpeg_packet {
- public:
- static const int NPAD = 68;
- unsigned char data[ATSC_MPEG_DATA_LENGTH + 1]; // first byte is sync
- unsigned char _pad_[NPAD]; // pad to power of 2 (256)
-
- // overload equality operator
- bool operator== (const atsc_mpeg_packet &other) const {
- return std::memcmp (data, other.data, sizeof (data)) == 0;
- };
-
- bool operator!= (const atsc_mpeg_packet &other) const {
- return !(std::memcmp (data, other.data, sizeof (data)) == 0);
- };
-};
-
-class atsc_mpeg_packet_no_sync {
- public:
- static const int NPAD = 65;
- plinfo pli;
- unsigned char data[ATSC_MPEG_DATA_LENGTH];
- unsigned char _pad_[NPAD]; // pad to power of 2 (256)
-
- // overload equality operator
- bool operator== (const atsc_mpeg_packet_no_sync &other) const {
- return std::memcmp (data, other.data, sizeof (data)) == 0;
- }
-
- bool operator!= (const atsc_mpeg_packet_no_sync &other) const {
- return !(std::memcmp (data, other.data, sizeof (data)) == 0);
- }
-};
-
-class atsc_mpeg_packet_rs_encoded {
- public:
- static const int NPAD = 45;
- plinfo pli;
- unsigned char data[ATSC_MPEG_RS_ENCODED_LENGTH];
- unsigned char _pad_[NPAD]; // pad to power of 2 (256)
-
- // overload equality operator
- bool operator== (const atsc_mpeg_packet_rs_encoded &other) const {
- return std::memcmp (data, other.data, sizeof (data)) == 0;
- }
-
- bool operator!= (const atsc_mpeg_packet_rs_encoded &other) const {
- return !(std::memcmp (data, other.data, sizeof (data)) == 0);
- }
-};
-
-
-//! contains 832 3 bit symbols. The low 3 bits in the byte hold the symbol.
-
-class atsc_data_segment {
- public:
- static const int NPAD = 188;
- plinfo pli;
- unsigned char data[ATSC_DATA_SEGMENT_LENGTH];
- unsigned char _pad_[NPAD]; // pad to power of 2 (1024)
-
- // overload equality operator
- bool operator== (const atsc_data_segment &other) const {
- return std::memcmp (data, other.data, sizeof (data)) == 0;
- }
-
- bool operator!= (const atsc_data_segment &other) const {
- return !(std::memcmp (data, other.data, sizeof (data)) == 0);
- }
-};
-
-/*!
- * Contains 832 bipolar floating point symbols.
- * Nominal values are +/- {1, 3, 5, 7}.
- * This data type represents the input to the viterbi decoder.
- */
-
-class atsc_soft_data_segment {
- public:
- static const int NPAD = 764;
- plinfo pli;
- float data[ATSC_DATA_SEGMENT_LENGTH];
- unsigned char _pad_[NPAD]; // pad to power of 2 (4096)
-
- // overload equality operator
- bool operator== (const atsc_data_segment &other) const {
- return std::memcmp (data, other.data, sizeof (data)) == 0;
- }
-
- bool operator!= (const atsc_data_segment &other) const {
- return !(std::memcmp (data, other.data, sizeof (data)) == 0);
- }
-};
-
-
-#endif /* _ATSC_TYPES_H_ */
diff --git a/gr-atsc/src/lib/atsc_viterbi_decoder.cc b/gr-atsc/src/lib/atsc_viterbi_decoder.cc
deleted file mode 100644
index 72b9a965b..000000000
--- a/gr-atsc/src/lib/atsc_viterbi_decoder.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <atsc_viterbi_decoder.h>
-#include <gr_io_signature.h>
-#include <atsc_consts.h>
-#include <iostream>
-
-using std::cerr;
-using std::endl;
-
-atsc_viterbi_decoder_sptr
-atsc_make_viterbi_decoder()
-{
- return gnuradio::get_initial_sptr(new atsc_viterbi_decoder());
-}
-
-atsc_viterbi_decoder::atsc_viterbi_decoder()
- : gr_sync_block("atsc_viterbi_decoder",
- gr_make_io_signature(1, 1, sizeof(atsc_soft_data_segment)),
- gr_make_io_signature(1, 1, sizeof(atsc_mpeg_packet_rs_encoded))),
- last_start(-1)
-{
- set_output_multiple(atsci_viterbi_decoder::NCODERS);
- reset();
-}
-
-int
-atsc_viterbi_decoder::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const atsc_soft_data_segment *in = (const atsc_soft_data_segment *) input_items[0];
- atsc_mpeg_packet_rs_encoded *out = (atsc_mpeg_packet_rs_encoded *) output_items[0];
-
- assert (noutput_items % atsci_viterbi_decoder::NCODERS == 0);
-
- // find the first mod 12 boundary to begin decoding
- int start;
- for (start = 0; start < atsci_viterbi_decoder::NCODERS; start++){
- assert (in[start].pli.regular_seg_p ());
- if ((in[start].pli.segno () % atsci_viterbi_decoder::NCODERS) == 0)
- break;
- }
-
- if (start == atsci_viterbi_decoder::NCODERS){
- // we didn't find a mod 12 boundary. There's some kind of problem
- // upstream of us (not yet sync'd??)
- cerr << "!!!atsc_viterbi_decoder: no mod-12 boundary found\7\n";
- start = 0;
- }
- else if (start != last_start){
- cerr << "atsc_viterbi_decoder: new starting offset = " << start
- << endl;
- last_start = start;
- }
-
- for (int i = 0; i < atsci_viterbi_decoder::NCODERS; i += atsci_viterbi_decoder::NCODERS){
- d_viterbi_decoder.decode(&out[i], &in[i + start]);
- }
- return atsci_viterbi_decoder::NCODERS;
-}
-
diff --git a/gr-atsc/src/lib/atsc_viterbi_decoder.h b/gr-atsc/src/lib/atsc_viterbi_decoder.h
deleted file mode 100644
index de571db33..000000000
--- a/gr-atsc/src/lib/atsc_viterbi_decoder.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_ATSC_VITERBI_DECODER_H
-#define INCLUDED_ATSC_VITERBI_DECODER_H
-
-#include <atsc_api.h>
-#include <gr_sync_block.h>
-#include <atsci_viterbi_decoder.h>
-
-class atsc_viterbi_decoder;
-typedef boost::shared_ptr<atsc_viterbi_decoder> atsc_viterbi_decoder_sptr;
-
-ATSC_API atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
-
-/*!
- * \brief ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded)
- * \ingroup atsc
- *
- * input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded
- */
-class ATSC_API atsc_viterbi_decoder : public gr_sync_block
-{
- friend ATSC_API atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
-
- atsci_viterbi_decoder d_viterbi_decoder;
-
- atsc_viterbi_decoder();
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- void reset() { /* nop */ }
-
-protected:
- int last_start;
-
-};
-
-
-#endif /* INCLUDED_ATSC_VITERBI_DECODER_H */
diff --git a/gr-atsc/src/lib/atsci_basic_trellis_encoder.cc b/gr-atsc/src/lib/atsci_basic_trellis_encoder.cc
deleted file mode 100644
index 2ae481cbc..000000000
--- a/gr-atsc/src/lib/atsci_basic_trellis_encoder.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_basic_trellis_encoder.h>
-#include <assert.h>
-
-const unsigned char atsci_basic_trellis_encoder::next_state[32] = {
- 0,1,4,5,
- 2,3,6,7,
- 1,0,5,4,
- 3,2,7,6,
- 4,5,0,1,
- 6,7,2,3,
- 5,4,1,0,
- 7,6,3,2
-};
-
-const unsigned char atsci_basic_trellis_encoder::out_symbol[32] = {
- 0,2,4,6,
- 1,3,5,7,
- 0,2,4,6,
- 1,3,5,7,
- 4,6,0,2,
- 5,7,1,3,
- 4,6,0,2,
- 5,7,1,3
-};
-
-
-/*!
- * Encode two bit INPUT into 3 bit return value. Domain is [0,3],
- * Range is [0,7]. The mapping to bipolar levels is not done.
- */
-
-int
-atsci_basic_trellis_encoder::encode (unsigned int input)
-{
- assert (input < 4);
- int index = (state << 2) + input;
- state = next_state[index];
- return out_symbol[index];
-}
-
diff --git a/gr-atsc/src/lib/atsci_basic_trellis_encoder.h b/gr-atsc/src/lib/atsci_basic_trellis_encoder.h
deleted file mode 100644
index a1bbbf5a0..000000000
--- a/gr-atsc/src/lib/atsci_basic_trellis_encoder.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_BASIC_TRELLIS_ENCODER_H_
-#define _ATSC_BASIC_TRELLIS_ENCODER_H_
-
-#include <atsc_api.h>
-#include <assert.h>
-
-/*!
- * \brief ATSC trellis encoder building block.
- *
- * Note this is NOT the 12x interleaved interface.
- *
- * This implements a single instance of the ATSC trellis encoder.
- * This is a rate 2/3 encoder (really a constraint length 3, rate 1/2
- * encoder with the top bit passed through unencoded. This does not
- * implement the "precoding" of the top bit, because the NTSC rejection
- * filter is not supported.
- */
-
-class ATSC_API atsci_basic_trellis_encoder {
-
-private:
- int state; // two bit state;
-
-public:
- atsci_basic_trellis_encoder () : state (0) {}
-
- /*!
- * Encode two bit INPUT into 3 bit return value. Domain is [0,3],
- * Range is [0,7]. The mapping to bipolar levels is not done.
- */
- int encode (unsigned int input);
-
- //! reset encoder state
- void reset () { state = 0; }
-
- static const unsigned char next_state[32];
- static const unsigned char out_symbol[32];
-};
-
-#endif /* _ATSC_BASIC_TRELLIS_ENCODER_H_ */
diff --git a/gr-atsc/src/lib/atsci_data_interleaver.cc b/gr-atsc/src/lib/atsci_data_interleaver.cc
deleted file mode 100644
index a2eef0fea..000000000
--- a/gr-atsc/src/lib/atsci_data_interleaver.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_data_interleaver.h>
-
-void
-atsci_data_interleaver::interleave (atsc_mpeg_packet_rs_encoded &out,
- const atsc_mpeg_packet_rs_encoded &in)
-{
- assert (in.pli.regular_seg_p ());
- plinfo::sanity_check (in.pli);
-
- out.pli = in.pli; // copy pipeline info
- if (in.pli.first_regular_seg_p ()) // reset commutator if required
- sync ();
-
- transform (out.data, in.data, sizeof (in.data));
-}
-
-
-void
-atsci_data_deinterleaver::deinterleave (atsc_mpeg_packet_rs_encoded &out,
- const atsc_mpeg_packet_rs_encoded &in)
-{
- assert (in.pli.regular_seg_p ());
- plinfo::sanity_check (in.pli);
-
- // reset commutator if required using INPUT pipeline info
- if (in.pli.first_regular_seg_p ())
- sync ();
-
- // remap OUTPUT pipeline info to reflect 52 data segment end-to-end delay
-
- plinfo::delay (out.pli, in.pli, 52);
-
- // now do the actual deinterleaving
-
- for (unsigned int i = 0; i < sizeof (in.data); i++){
- out.data[i] = alignment_fifo.stuff (transform (in.data[i]));
- }
-}
-
diff --git a/gr-atsc/src/lib/atsci_data_interleaver.h b/gr-atsc/src/lib/atsci_data_interleaver.h
deleted file mode 100644
index 290607ea3..000000000
--- a/gr-atsc/src/lib/atsci_data_interleaver.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_DATA_INTERLEAVER_H_
-#define _ATSC_DATA_INTERLEAVER_H_
-
-#include <atsc_api.h>
-#include <atsc_types.h>
-#include <convolutional_interleaver.h>
-
-/*!
- * \brief atsc convolutional data interleaver
- */
-class ATSC_API atsci_data_interleaver : public convolutional_interleaver<unsigned char> {
- public:
- atsci_data_interleaver () : convolutional_interleaver<unsigned char>(true, 52, 4) {}
-
- void interleave (atsc_mpeg_packet_rs_encoded &out,
- const atsc_mpeg_packet_rs_encoded &in);
-};
-
-/*!
- * \brief atsc convolutional data deinterleaver
- */
-class ATSC_API atsci_data_deinterleaver : public convolutional_interleaver<unsigned char> {
- public:
- atsci_data_deinterleaver () :
- convolutional_interleaver<unsigned char>(false, 52, 4), alignment_fifo (156) {}
-
- void deinterleave (atsc_mpeg_packet_rs_encoded &out,
- const atsc_mpeg_packet_rs_encoded &in);
-
-private:
- /*!
- * Note: The use of the alignment_fifo keeps the encoder and decoder
- * aligned if both are synced to a field boundary. There may be other
- * ways to implement this function. This is a best guess as to how
- * this should behave, as we have no test vectors for either the
- * interleaver or deinterleaver.
- */
- interleaver_fifo<unsigned char> alignment_fifo;
-
- static void remap_pli (plinfo &out, const plinfo &in);
-};
-
-#endif /* _ATSC_DATA_INTERLEAVER_H_ */
diff --git a/gr-atsc/src/lib/atsci_diag_output.h b/gr-atsc/src/lib/atsci_diag_output.h
deleted file mode 100644
index 09fd763d6..000000000
--- a/gr-atsc/src/lib/atsci_diag_output.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-/*
- * single place to control all compile time diagnostic output options
- */
-
-#define _BT_DIAG_OUTPUT_ 0
-#define _FPLL_DIAG_OUTPUT_ 0
-#define _SSSR_DIAG_OUTPUT_ 0
diff --git a/gr-atsc/src/lib/atsci_equalizer.cc b/gr-atsc/src/lib/atsci_equalizer.cc
deleted file mode 100644
index 4aec47495..000000000
--- a/gr-atsc/src/lib/atsci_equalizer.cc
+++ /dev/null
@@ -1,248 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_equalizer.h>
-#include <algorithm>
-#include <iostream>
-#include <atsc_types.h>
-
-using std::cerr;
-using std::endl;
-using std::min;
-
-
-// total number of symbols (including field sync) / field
-static const int SYMBOLS_PER_FIELD =
- (ATSC_DSEGS_PER_FIELD + 1) * ATSC_DATA_SEGMENT_LENGTH;
-
-
-atsci_equalizer::atsci_equalizer ()
-{
- d_locked_p = false;
- d_offset_from_last_field_sync = 0;
- d_current_field = 0;
-}
-
-atsci_equalizer::~atsci_equalizer ()
-{
-}
-
-void
-atsci_equalizer::reset ()
-{
- d_locked_p = false;
- d_offset_from_last_field_sync = 0;
- d_current_field = 0;
-}
-
-/*
- * Errrr.... Define to 1 if compiler handles tail recursion without pushing
- * unnecessary stack frames, else define to 0 for lame compilers.
- */
-#define WINNING_COMPILER 0
-
-
-/*
- * divide and conquer...
- *
- * Note that this could be refactored to take advantage of the
- * symbol_num that is contained in the input_tags. Then we wouldn't
- * have to be counting here.
- *
- * Today's strategy: get it working.
- */
-
-void
-atsci_equalizer::filter (const float *input_samples,
- const atsc::syminfo *input_tags,
- float *output_samples,
- int nsamples)
-{
- lame_compiler_kludge:
-
- if (!d_locked_p){
-
- // look for a field sync
-
- int i;
- for (i = 0; i < nsamples; i++){
- if (atsc::tag_is_start_field_sync (input_tags[i]))
- break;
- }
-
- // whether we found one or not, everything up to it should
- // be run through the normal path
-
- if (i != 0)
- filter_normal (input_samples, output_samples, i);
-
- if (i == nsamples) // no field sync found, still not locked.
- return;
-
- // OK, we've just transitioned to the locked state.
-
- d_locked_p = true;
- d_offset_from_last_field_sync = 0;
-
- // handle locked case recursively
-
- if (WINNING_COMPILER)
- filter (&input_samples[i], &input_tags[i],
- &output_samples[i], nsamples - i);
- else {
- input_samples += i;
- input_tags += i;
- output_samples += i;
- nsamples -= i;
- goto lame_compiler_kludge;
- }
-
- return;
- }
-
- // We're in the locked state.
- //
- // Figure out where we are with respect to a data segment boundary
- // and do the right thing. Note that in the interested of performance,
- // we don't scan all the tags looking for trouble. We only check
- // them where we expect them to be non-NORMAL. Worst case, it'll take
- // us a field to notice that something went wrong...
-
- if (d_offset_from_last_field_sync % SYMBOLS_PER_FIELD == 0){ // we should be looking
- // at a field sync
- if (atsc::tag_is_start_field_sync_1 (input_tags[0]))
- d_current_field = 0;
-
- else if (atsc::tag_is_start_field_sync_2 (input_tags[0]))
- d_current_field = 1;
-
- else { // we're lost... no field sync where we expected it
-
- cerr << "!!! atsci_equalizer: expected field sync, didn't find one\n";
-
- d_locked_p = false;
- d_offset_from_last_field_sync = 0;
-
- if (WINNING_COMPILER)
- filter (input_samples, input_tags, output_samples, nsamples);
- else
- goto lame_compiler_kludge;
-
- return;
- }
-
- // OK, everything's cool. We're looking at a field sync.
-
- int n = min (ATSC_DATA_SEGMENT_LENGTH, nsamples);
-
- filter_field_sync (input_samples, output_samples, n, 0, d_current_field);
-
- d_offset_from_last_field_sync = n;
- nsamples -= n;
-
- if (nsamples > 0){
- if (WINNING_COMPILER)
- filter (&input_samples[n], &input_tags[n],
- &output_samples[n], nsamples);
- else {
- input_samples += n;
- input_tags += n;
- output_samples += n;
- goto lame_compiler_kludge;
- }
- }
- return;
- }
-
- if (d_offset_from_last_field_sync < ATSC_DATA_SEGMENT_LENGTH){ // we're in the middle of a field sync
- int n = min (ATSC_DATA_SEGMENT_LENGTH - d_offset_from_last_field_sync, nsamples);
-
- filter_field_sync (input_samples, output_samples, n,
- d_offset_from_last_field_sync, d_current_field);
-
- d_offset_from_last_field_sync += n;
- nsamples -= n;
-
- if (nsamples > 0){
- if (WINNING_COMPILER)
- filter (&input_samples[n], &input_tags[n],
- &output_samples[n], nsamples);
- else {
- input_samples += n;
- input_tags += n;
- output_samples += n;
- goto lame_compiler_kludge;
- }
- }
- return;
- }
-
- // OK, we're not in a field sync. We're either in a data segment sync or in the clear...
-
- int seg_offset = d_offset_from_last_field_sync % ATSC_DATA_SEGMENT_LENGTH;
-
- assert (seg_offset >= 0);
-
- if (seg_offset < 4){ // somewhere in a data seg sync.
- int n = min (4 - seg_offset, nsamples);
-
- filter_data_seg_sync (input_samples, output_samples, n, seg_offset);
-
- d_offset_from_last_field_sync += n;
- nsamples -= n;
-
- if (nsamples > 0){
- if (WINNING_COMPILER)
- filter (&input_samples[n], &input_tags[n],
- &output_samples[n], nsamples);
- else {
- input_samples += n;
- input_tags += n;
- output_samples += n;
- goto lame_compiler_kludge;
- }
- }
- return;
- }
-
- // otherwise... we're in the normal zone
-
- int n = min (ATSC_DATA_SEGMENT_LENGTH - seg_offset, nsamples);
-
- filter_normal (input_samples, output_samples, n);
-
- d_offset_from_last_field_sync += n;
- nsamples -= n;
-
- if (nsamples <= 0)
- return;
-
- if (WINNING_COMPILER)
- filter (&input_samples[n], &input_tags[n],
- &output_samples[n], nsamples);
- else {
- input_samples += n;
- input_tags += n;
- output_samples += n;
- goto lame_compiler_kludge;
- }
-}
diff --git a/gr-atsc/src/lib/atsci_equalizer.h b/gr-atsc/src/lib/atsci_equalizer.h
deleted file mode 100644
index b0c243b51..000000000
--- a/gr-atsc/src/lib/atsci_equalizer.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_EQUALIZER_H_
-#define _ATSC_EQUALIZER_H_
-
-#include <atsc_api.h>
-#include <atsci_syminfo.h>
-#include <vector>
-
-/*!
- * \brief abstract base class for ATSC equalizer
- */
-class ATSC_API atsci_equalizer {
-
-private:
-
- /*
- * have we seen a field sync since the last reset or problem?
- */
- bool d_locked_p;
-
- /*
- * sample offset from the beginning of the last field sync we saw
- * to the beginning of our current input stream. When we're locked
- * this will be in [0, 313*832] i.e., [0, 260416]
- */
- int d_offset_from_last_field_sync;
-
- int d_current_field; // [0,1]
-
-
-public:
-
- // CREATORS
- atsci_equalizer ();
- virtual ~atsci_equalizer ();
-
- virtual std::vector<double> taps () {
- return std::vector<double>();
- }
-
- // MANIPULATORS
-
- /*!
- * \brief reset state (e.g., on channel change)
- *
- * Note, subclasses must invoke the superclass's method too!
- */
- virtual void reset ();
-
- /*!
- * \brief produce \p nsamples of output from given inputs and tags
- *
- * This is the main entry point. It examines the input_tags
- * and local state and invokes the appropriate virtual function
- * to handle each sub-segment of the input data.
- *
- * \p input_samples must have (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] are
- * referenced to compute the output values.
- *
- * \p input_tags must have nsamples valid entries.
- * input_tags[0] .. input_tags[nsamples - 1] are referenced to
- * compute the output values.
- */
- virtual void filter (const float *input_samples,
- const atsc::syminfo *input_tags,
- float *output_samples,
- int nsamples);
-
- // ACCESSORS
-
- /*!
- * \brief how much history the input data stream requires.
- *
- * This must return a value >= 1. Think of this as the number
- * of samples you need to look at to compute a single output sample.
- */
- virtual int ntaps () const = 0;
-
- /*!
- * \brief how many taps are "in the future".
- *
- * This allows us to handle what the ATSC folks call "pre-ghosts".
- * What it really does is allow the caller to jack with the offset
- * between the tags and the data so that everything magically works out.
- *
- * npretaps () must return a value between 0 and ntaps() - 1.
- *
- * If npretaps () returns 0, this means that the equalizer will only handle
- * multipath "in the past." I suspect that a good value would be something
- * like 15% - 20% of ntaps ().
- */
- virtual int npretaps () const = 0;
-
-
-protected:
-
- /*!
- * Input range is known NOT TO CONTAIN data segment syncs
- * or field syncs. This should be the fast path. In the
- * non decicion directed case, this just runs the input
- * through the filter without adapting it.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
- virtual void filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples) = 0;
-
- /*!
- * Input range is known to consist of only a data segment sync or a
- * portion of a data segment sync. \p nsamples will be in [1,4].
- * \p offset will be in [0,3]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
- virtual void filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset) = 0;
-
- /*!
- * Input range is known to consist of only a field sync segment or a
- * portion of a field sync segment. \p nsamples will be in [1,832].
- * \p offset will be in [0,831]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern. We consider the
- * 4 symbols of the immediately preceding data segment sync to be the
- * first symbols of the field sync segment. \p which_field is in [0,1]
- * and specifies which field (duh).
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
- virtual void filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field) = 0;
-};
-
-
-#endif /* _ATSC_EQUALIZER_H_ */
diff --git a/gr-atsc/src/lib/atsci_equalizer_lms.cc b/gr-atsc/src/lib/atsci_equalizer_lms.cc
deleted file mode 100644
index bab962e32..000000000
--- a/gr-atsc/src/lib/atsci_equalizer_lms.cc
+++ /dev/null
@@ -1,307 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_equalizer_lms.h>
-#include <assert.h>
-#include <algorithm>
-#include <atsci_pnXXX.h>
-
-#include <stdio.h>
-
-using std::min;
-using std::max;
-
-static const int NTAPS = 256;
-static const int NPRETAPS = (int) (NTAPS * 0.8); // probably should be either .2 or .8
-
-
-// the length of the field sync pattern that we know unequivocally
-static const int KNOWN_FIELD_SYNC_LENGTH = 4 + 511 + 3 * 63;
-
-// static const float *get_data_seg_sync_training_sequence (int offset);
-static int get_field_sync_training_sequence_length (int offset);
-static const float *get_field_sync_training_sequence (int which_field, int offset);
-
-
-atsci_equalizer_lms::atsci_equalizer_lms () : d_taps (NTAPS)
-{
- for (int i = 0; i < NTAPS; i++) {
- d_taps[i] = 0.0;
- }
- trainingfile=fopen("taps.txt","w");
-}
-
-atsci_equalizer_lms::~atsci_equalizer_lms ()
-{
-}
-
-void
-atsci_equalizer_lms::reset ()
-{
- atsci_equalizer::reset (); // invoke superclass
-
- for (int i = 0; i < NTAPS; i++) {
- d_taps[i] = 0.0;
- }
-}
-
-int
-atsci_equalizer_lms::ntaps () const
-{
- return NTAPS;
-}
-
-int
-atsci_equalizer_lms::npretaps () const
-{
- return NPRETAPS;
-}
-
-/*!
- * Input range is known NOT TO CONTAIN data segment syncs
- * or field syncs. This should be the fast path. In the
- * non decicion directed case, this just runs the input
- * through the filter without adapting it.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_lms::filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples)
-{
- // handle data
- filterN (input_samples, output_samples, nsamples);
-}
-
-
-/*!
- * Input range is known to consist of only a data segment sync or a
- * portion of a data segment sync. \p nsamples will be in [1,4].
- * \p offset will be in [0,3]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_lms::filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset)
-{
- // handle data
- // adaptN (input_samples, get_data_seg_sync_training_sequence (offset),
- // output_samples, nsamples);
- filterN (input_samples, output_samples, nsamples);
-
- // cerr << "Seg Sync: offset " << offset << "\tnsamples\t" << nsamples << "\t pre, 5 -5 -5 5\t" <<
- // output_samples[0] << "\t" << output_samples[1] << "\t" << output_samples[2] << "\t" << output_samples[3] << endl;
-
-}
-
-
-/*!
- * Input range is known to consist of only a field sync segment or a
- * portion of a field sync segment. \p nsamples will be in [1,832].
- * \p offset will be in [0,831]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern. We consider the
- * 4 symbols of the immediately preceding data segment sync to be the
- * first symbols of the field sync segment. \p which_field is in [0,1]
- * and specifies which field (duh).
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_lms::filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field)
-{
- // Only the first 4 + 511 + 3 * 63 symbols are completely defined.
- // Those after that the symbols are bilevel, so we could use decision feedback and use
- // that to train, but for now, don't train on them.
-
- int n = min (nsamples, get_field_sync_training_sequence_length (offset));
-
- // handle known training sequence
- adaptN (input_samples, get_field_sync_training_sequence (which_field, offset),
- output_samples, n);
-
- // just filter any unknown portion
- if (nsamples > n)
- filterN (&input_samples[n], &output_samples[n], nsamples - n);
-
- if (offset == 0 && nsamples > 0){
- for (int i = 0; i < NTAPS; i++)
- fprintf(trainingfile,"%f ",d_taps[i]);
-
- fprintf (trainingfile,"\n");
- }
-
-}
-
-// ----------------------------------------------------------------
-
-//
-// filter a single output
-//
-float
-atsci_equalizer_lms::filter1 (const float input[])
-{
- static const int N_UNROLL = 4;
-
- float acc0 = 0;
- float acc1 = 0;
- float acc2 = 0;
- float acc3 = 0;
-
-
- unsigned i = 0;
- unsigned n = (NTAPS / N_UNROLL) * N_UNROLL;
-
- for (i = 0; i < n; i += N_UNROLL){
- acc0 += d_taps[i + 0] * input[i + 0];
- acc1 += d_taps[i + 1] * input[i + 1];
- acc2 += d_taps[i + 2] * input[i + 2];
- acc3 += d_taps[i + 3] * input[i + 3];
- }
-
- for (; i < (unsigned) NTAPS; i++)
- acc0 += d_taps[i] * input[i];
-
- return (acc0 + acc1 + acc2 + acc3);
-}
-
-//
-// filter and adapt a single output
-//
-float
-atsci_equalizer_lms::adapt1 (const float input[], float ideal_output)
-{
- static const double BETA = 0.00005; // FIXME figure out what this ought to be
- // FIXME add gear-shifting
-
- double y = filter1 (input);
- double e = y - ideal_output;
-
- // update taps...
- for (int i = 0; i < NTAPS; i++){
- d_taps[i] = d_taps[i] - BETA * e * (double)(input[i]);
- }
-
- return y;
-}
-
-void
-atsci_equalizer_lms::filterN (const float *input_samples,
- float *output_samples,
- int nsamples)
-{
- for (int i = 0; i < nsamples; i++)
- output_samples[i] = filter1 (&input_samples[i]);
-}
-
-
-void
-atsci_equalizer_lms::adaptN (const float *input_samples,
- const float *training_pattern,
- float *output_samples,
- int nsamples)
-{
- for (int i = 0; i < nsamples; i++)
- output_samples[i] = adapt1 (&input_samples[i], training_pattern[i]);
-}
-
-// ----------------------------------------------------------------
-
-static float
-bin_map (int bit)
-{
- return bit ? +5 : -5;
-}
-
-static void
-init_field_sync_common (float *p, int mask)
-
-{
- int i = 0;
-
- p[i++] = bin_map (1); // data segment sync pulse
- p[i++] = bin_map (0);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
-
- for (int j = 0; j < 511; j++) // PN511
- p[i++] = bin_map (atsc_pn511[j]);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map (atsc_pn63[j]);
-
- for (int j = 0; j < 63; j++) // PN63, toggled on field 2
- p[i++] = bin_map (atsc_pn63[j] ^ mask);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map (atsc_pn63[j]);
-
- assert (i == KNOWN_FIELD_SYNC_LENGTH);
-}
-
-#if 0
-static const float *
-get_data_seg_sync_training_sequence (int offset)
-{
- static const float training_data[4] = { +5, -5, -5, +5 };
- return &training_data[offset];
-}
-#endif
-
-static int
-get_field_sync_training_sequence_length (int offset)
-{
- return max (0, KNOWN_FIELD_SYNC_LENGTH - offset);
-}
-
-static const float *
-get_field_sync_training_sequence (int which_field, int offset)
-{
- static float *field_1 = 0;
- static float *field_2 = 0;
-
- if (field_1 == 0){
- field_1 = new float[KNOWN_FIELD_SYNC_LENGTH];
- field_2 = new float[KNOWN_FIELD_SYNC_LENGTH];
- init_field_sync_common (field_1, 0);
- init_field_sync_common (field_2, 1);
- }
-
- if (which_field == 0)
- return &field_1[offset];
- else
- return &field_2[offset];
-}
diff --git a/gr-atsc/src/lib/atsci_equalizer_lms.h b/gr-atsc/src/lib/atsci_equalizer_lms.h
deleted file mode 100644
index eac72f75b..000000000
--- a/gr-atsc/src/lib/atsci_equalizer_lms.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_EQUALIZER_LMS_H_
-#define _ATSC_EQUALIZER_LMS_H_
-
-#include <atsc_api.h>
-#include <atsci_equalizer.h>
-#include <vector>
-#include <stdio.h>
-
-class ATSC_API atsci_equalizer_lms : public atsci_equalizer
-{
-public:
- atsci_equalizer_lms ();
- virtual ~atsci_equalizer_lms ();
-
- virtual void reset ();
- virtual int ntaps () const;
- virtual int npretaps () const;
- std::vector<double> taps () {
- return d_taps;
- }
-
-protected:
- FILE *trainingfile;
- virtual void filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples);
-
- virtual void filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset);
-
- virtual void filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field);
-
-private:
- std::vector<double> d_taps;
-
- void filterN (const float *input_samples,
- float *output_samples,
- int nsamples);
-
- void adaptN (const float *input_samples,
- const float *training_pattern,
- float *output_samples,
- int nsamples);
-
- float filter1 (const float input[]);
- float adapt1 (const float input[], float ideal_output);
-
-};
-
-
-#endif /* _ATSC_EQUALIZER_LMS_H_ */
diff --git a/gr-atsc/src/lib/atsci_equalizer_lms2.cc b/gr-atsc/src/lib/atsci_equalizer_lms2.cc
deleted file mode 100644
index 2825aad50..000000000
--- a/gr-atsc/src/lib/atsci_equalizer_lms2.cc
+++ /dev/null
@@ -1,375 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_equalizer_lms2.h>
-#include <assert.h>
-#include <algorithm>
-#include <atsci_pnXXX.h>
-#include <cmath>
-#include <stdlib.h>
-#include <gr_math.h>
-#include <stdio.h>
-#include <boost/math/special_functions/fpclassify.hpp>
-
-using std::min;
-using std::max;
-
-static const int NFFTAPS = 64;
-static const int NFBTAPS = 192;
-
-// the length of the field sync pattern that we know unequivocally
-static const int KNOWN_FIELD_SYNC_LENGTH = 4 + 511 + 3 * 63;
-
-// static const float *get_data_seg_sync_training_sequence (int offset);
-static int get_field_sync_training_sequence_length (int offset);
-static const float *get_field_sync_training_sequence (int which_field, int offset);
-
-static inline int
-wrap (int d)
-{
- assert (d >= 0 && d <= (2 * NFBTAPS));
-
- if(d >= NFBTAPS)
- return d - NFBTAPS;
- return d;
-}
-
-static inline float
-slice (float d)
-{
- if (boost::math::isnan (d))
- return 0.0;
-
- if (d >= 0.0){
- if (d >= 4.0){
- if (d >= 6.0)
- return 7.0;
- else
- return 5.0;
- }
- if (d >= 2.0)
- return 3.0;
- return 1.0;
- }
- else
- return -slice (-d);
-}
-
-atsci_equalizer_lms2::atsci_equalizer_lms2 ()
- : d_taps_ff (NFFTAPS), d_taps_fb (NFBTAPS), d_old_output (NFBTAPS)
-{
- for (int i = 0; i < NFFTAPS; i++) {
- d_taps_ff[i] = 0.0;
- }
- for (int i = 0; i < NFBTAPS; i++) {
- d_taps_fb[i] = 0.0;
- d_old_output[i] = 0.0;
- }
- d_output_ptr = 0;
- trainingfile=fopen("taps.txt","w");
-}
-
-atsci_equalizer_lms2::~atsci_equalizer_lms2 ()
-{
-}
-
-void
-atsci_equalizer_lms2::reset ()
-{
- atsci_equalizer::reset (); // invoke superclass
- for (int i = 0; i < NFFTAPS; i++) {
- d_taps_ff[i] = 0.0;
- }
- for (int i = 0; i < NFBTAPS; i++) {
- d_taps_fb[i] = 0.0;
- d_old_output[i] = 0.0;
- }
- d_output_ptr = 0;
-}
-
-
-int
-atsci_equalizer_lms2::ntaps () const
-{
- return NFFTAPS + NFBTAPS;
-}
-
-int
-atsci_equalizer_lms2::npretaps () const
-{
- return NFFTAPS;
-}
-
-/*!
- * Input range is known NOT TO CONTAIN data segment syncs
- * or field syncs. This should be the fast path. In the
- * non decicion directed case, this just runs the input
- * through the filter without adapting it.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_lms2::filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples)
-{
- // handle data
- filterN (input_samples, output_samples, nsamples);
-}
-
-
-/*!
- * Input range is known to consist of only a data segment sync or a
- * portion of a data segment sync. \p nsamples will be in [1,4].
- * \p offset will be in [0,3]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_lms2::filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset)
-{
- // handle data
- // adaptN (input_samples, get_data_seg_sync_training_sequence (offset),
- // output_samples, nsamples);
- filterN (input_samples, output_samples, nsamples);
-
- // cerr << "Seg Sync: offset " << offset << "\tnsamples\t" << nsamples << "\t pre, 5 -5 -5 5\t" <<
- // output_samples[0] << "\t" << output_samples[1] << "\t" << output_samples[2] << "\t" << output_samples[3] << endl;
-
-}
-
-
-/*!
- * Input range is known to consist of only a field sync segment or a
- * portion of a field sync segment. \p nsamples will be in [1,832].
- * \p offset will be in [0,831]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern. We consider the
- * 4 symbols of the immediately preceding data segment sync to be the
- * first symbols of the field sync segment. \p which_field is in [0,1]
- * and specifies which field (duh).
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_lms2::filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field)
-{
- // Only the first 4 + 511 + 3 * 63 symbols are completely defined.
- // Those after that the symbols are bilevel, so we could use decision feedback and use
- // that to train, but for now, don't train on them.
-
- int n = min (nsamples, get_field_sync_training_sequence_length (offset));
-
- // handle known training sequence
- adaptN (input_samples, get_field_sync_training_sequence (which_field, offset),
- output_samples, n);
-
- // just filter any unknown portion
- if (nsamples > n)
- filterN (&input_samples[n], &output_samples[n], nsamples - n);
-
- if (offset == 0 && nsamples > 0){
- for (int i = 0; i < NFFTAPS; i++)
- fprintf(trainingfile,"%f ",d_taps_ff[i]);
- for (int i = 0; i < NFBTAPS; i++)
- fprintf(trainingfile,"%f ",d_taps_fb[i]);
- fprintf (trainingfile,"\n");
- }
-
-}
-
-// ----------------------------------------------------------------
-
-//
-// filter a single output
-//
-float
-atsci_equalizer_lms2::filter1 (const float input[])
-{
- static const int N_UNROLL = 4;
-
- float acc0 = 0;
- float acc1 = 0;
- float acc2 = 0;
- float acc3 = 0;
- float acc = 0;
-
-
- unsigned i = 0;
- unsigned n = (NFFTAPS / N_UNROLL) * N_UNROLL;
-
- for (i = 0; i < n; i += N_UNROLL){
- acc0 += d_taps_ff[i + 0] * input[i + 0];
- acc1 += d_taps_ff[i + 1] * input[i + 1];
- acc2 += d_taps_ff[i + 2] * input[i + 2];
- acc3 += d_taps_ff[i + 3] * input[i + 3];
- }
-
- for (; i < (unsigned) NFFTAPS; i++)
- acc0 += d_taps_ff[i] * input[i];
-
- acc = (acc0 + acc1 + acc2 + acc3);
-
- d_output_ptr = wrap (d_output_ptr + 1);
-
- for (int i = 0; i < NFBTAPS; i++) {
- acc -= d_taps_fb[i] * d_old_output[wrap(i + d_output_ptr)];
- }
-
- if (boost::math::isnan (acc)){
- abort ();
- }
-
- d_old_output[d_output_ptr] = slice (acc);
- return acc;
-}
-
-//
-// filter and adapt a single output
-//
-float kludge ()
-{
- return 0.0;
-}
-
-float
-atsci_equalizer_lms2::adapt1 (const float input[], float ideal_output)
-{
- static const double BETA = 0.00005; // FIXME figure out what this ought to be
- // FIXME add gear-shifting
-
- double y = filter1 (input);
- double e = y - ideal_output;
-
- // update taps...
- for (int i = 0; i < NFFTAPS; i++){
- d_taps_ff[i] = d_taps_ff[i] - BETA * e * (double)(input[i]);
- }
-
- for (int i = 0; i < NFBTAPS; i++){
- // d_taps_fb[i] = d_taps_fb[i] - BETA * e * (double)d_old_output[wrap(i+d_output_ptr)];
- d_taps_fb[i] = d_taps_fb[i] - kludge() * e * (double)d_old_output[wrap(i+d_output_ptr)];
- }
-
- return y;
-}
-
-void
-atsci_equalizer_lms2::filterN (const float *input_samples,
- float *output_samples,
- int nsamples)
-{
- for (int i = 0; i < nsamples; i++)
- output_samples[i] = filter1 (&input_samples[i]);
-}
-
-
-void
-atsci_equalizer_lms2::adaptN (const float *input_samples,
- const float *training_pattern,
- float *output_samples,
- int nsamples)
-{
- for (int i = 0; i < nsamples; i++)
- output_samples[i] = adapt1 (&input_samples[i], training_pattern[i]);
-}
-
-// ----------------------------------------------------------------
-
-static float
-bin_map (int bit)
-{
- return bit ? +5 : -5;
-}
-
-static void
-init_field_sync_common (float *p, int mask)
-
-{
- int i = 0;
-
- p[i++] = bin_map (1); // data segment sync pulse
- p[i++] = bin_map (0);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
-
- for (int j = 0; j < 511; j++) // PN511
- p[i++] = bin_map (atsc_pn511[j]);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map (atsc_pn63[j]);
-
- for (int j = 0; j < 63; j++) // PN63, toggled on field 2
- p[i++] = bin_map (atsc_pn63[j] ^ mask);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map (atsc_pn63[j]);
-
- assert (i == KNOWN_FIELD_SYNC_LENGTH);
-}
-
-#if 0
-static const float *
-get_data_seg_sync_training_sequence (int offset)
-{
- static const float training_data[4] = { +5, -5, -5, +5 };
- return &training_data[offset];
-}
-#endif
-
-static int
-get_field_sync_training_sequence_length (int offset)
-{
- return max (0, KNOWN_FIELD_SYNC_LENGTH - offset);
-}
-
-static const float *
-get_field_sync_training_sequence (int which_field, int offset)
-{
- static float *field_1 = 0;
- static float *field_2 = 0;
-
- if (field_1 == 0){
- field_1 = new float[KNOWN_FIELD_SYNC_LENGTH];
- field_2 = new float[KNOWN_FIELD_SYNC_LENGTH];
- init_field_sync_common (field_1, 0);
- init_field_sync_common (field_2, 1);
- }
-
- if (which_field == 0)
- return &field_1[offset];
- else
- return &field_2[offset];
-}
diff --git a/gr-atsc/src/lib/atsci_equalizer_lms2.h b/gr-atsc/src/lib/atsci_equalizer_lms2.h
deleted file mode 100644
index d0f2660d5..000000000
--- a/gr-atsc/src/lib/atsci_equalizer_lms2.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_EQUALIZER_LMS2_H_
-#define _ATSC_EQUALIZER_LMS2_H_
-
-#include <atsc_api.h>
-#include <atsci_equalizer.h>
-#include <vector>
-#include <stdio.h>
-
-class ATSC_API atsci_equalizer_lms2 : public atsci_equalizer
-{
-public:
- atsci_equalizer_lms2 ();
- virtual ~atsci_equalizer_lms2 ();
-
- virtual void reset ();
- virtual int ntaps () const;
- virtual int npretaps () const;
-
-protected:
- FILE *trainingfile;
- virtual void filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples);
-
- virtual void filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset);
-
- virtual void filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field);
-
-private:
- std::vector<double> d_taps_ff;
- std::vector<double> d_taps_fb;
- std::vector<float> d_old_output;
-
- int d_output_ptr;
-
- void filterN (const float *input_samples,
- float *output_samples,
- int nsamples);
-
- void adaptN (const float *input_samples,
- const float *training_pattern,
- float *output_samples,
- int nsamples);
-
- float filter1 (const float input[]);
- float adapt1 (const float input[], float ideal_output);
-
-};
-
-
-#endif /* _ATSC_EQUALIZER_LMS2_H_ */
diff --git a/gr-atsc/src/lib/atsci_equalizer_nop.cc b/gr-atsc/src/lib/atsci_equalizer_nop.cc
deleted file mode 100644
index 5af2cc4e7..000000000
--- a/gr-atsc/src/lib/atsci_equalizer_nop.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_equalizer_nop.h>
-#include <atsci_sync_tag.h>
-#include <assert.h>
-
-atsci_equalizer_nop::atsci_equalizer_nop ()
-{
-}
-
-atsci_equalizer_nop::~atsci_equalizer_nop ()
-{
-}
-
-void
-atsci_equalizer_nop::reset ()
-{
- atsci_equalizer::reset (); // invoke superclass
-}
-
-int
-atsci_equalizer_nop::ntaps () const
-{
- return 1;
-}
-
-int
-atsci_equalizer_nop::npretaps () const
-{
- return 0;
-}
-
-/*!
- * Input range is known NOT TO CONTAIN data segment syncs
- * or field syncs. This should be the fast path. In the
- * non decicion directed case, this just runs the input
- * through the filter without adapting it.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_nop::filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples)
-{
- for (int i = 0; i < nsamples; i++){
- output_samples[i] = scale (input_samples[i]);
- }
-}
-
-
-/*!
- * Input range is known to consist of only a data segment sync or a
- * portion of a data segment sync. \p nsamples will be in [1,4].
- * \p offset will be in [0,3]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern.
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_nop::filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset)
-{
- for (int i = 0; i < nsamples; i++){
- output_samples[i] = scale_and_train (input_samples[i]);
- }
-}
-
-
-/*!
- * Input range is known to consist of only a field sync segment or a
- * portion of a field sync segment. \p nsamples will be in [1,832].
- * \p offset will be in [0,831]. \p offset is the offset of the input
- * from the beginning of the data segment sync pattern. We consider the
- * 4 symbols of the immediately preceding data segment sync to be the
- * first symbols of the field sync segment. \p which_field is in [0,1]
- * and specifies which field (duh).
- *
- * \p input_samples has (nsamples + ntaps() - 1) valid entries.
- * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be
- * referenced to compute the output values.
- */
-void
-atsci_equalizer_nop::filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field)
-{
- int i = 0;
-
- if (offset == 0 && nsamples > 0){
- output_samples[0] = scale_and_train (input_samples[0]);
- i++;
- }
-
- for (; i < nsamples; i++){
- output_samples[i] = scale_and_train (input_samples[i]);
- }
-}
-
-
-float
-atsci_equalizer_nop::scale_and_train (float input)
-{
- return input;
-}
diff --git a/gr-atsc/src/lib/atsci_equalizer_nop.h b/gr-atsc/src/lib/atsci_equalizer_nop.h
deleted file mode 100644
index d29fded64..000000000
--- a/gr-atsc/src/lib/atsci_equalizer_nop.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_EQUALIZER_NOP_H_
-#define _ATSC_EQUALIZER_NOP_H_
-
-#include <atsc_api.h>
-#include <atsci_equalizer.h>
-
-class ATSC_API atsci_equalizer_nop : public atsci_equalizer
-{
-private:
- float scale (float input) { return input; }
-
- float scale_and_train (float input);
-
-
-public:
- atsci_equalizer_nop ();
- virtual ~atsci_equalizer_nop ();
-
- virtual void reset ();
- virtual int ntaps () const;
- virtual int npretaps () const;
-
-protected:
- virtual void filter_normal (const float *input_samples,
- float *output_samples,
- int nsamples);
-
- virtual void filter_data_seg_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset);
-
- virtual void filter_field_sync (const float *input_samples,
- float *output_samples,
- int nsamples,
- int offset,
- int which_field);
-};
-
-
-#endif /* _ATSC_EQUALIZER_NOP_H_ */
diff --git a/gr-atsc/src/lib/atsci_exp2_lp.cc b/gr-atsc/src/lib/atsci_exp2_lp.cc
deleted file mode 100644
index 8f411977e..000000000
--- a/gr-atsc/src/lib/atsci_exp2_lp.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsc_consts.h>
-#include <atsci_exp2_lp.h>
-#include <stdexcept>
-#include <cmath>
-#include <iostream>
-
-using std::vector;
-using std::cerr;
-using std::endl;
-
-/*
- * FILTER SPECIFICATION FILE
- * FILTER TYPE:LOW PASS 1H
- * PASSBAND RIPPLE IN -dB -.0100
- * STOPBAND RIPPLE IN -dB -66.0000
- * PASSBAND CUTOFF FREQUENCY 5.69000 HERTZ
- * STOPBAND CUTOFF FREQUENCY 6.12000 HERTZ
- * SAMPLING FREQUENCY 21.5200 HERTZ
- */
-static const float atsci_exp2_lp2x[] = {
-#include "atsci_exp2_lp2x.dat"
-};
-
-/*
- * FILTER SPECIFICATION FILE
- * FILTER TYPE:LOW PASS 1H
- * PASSBAND RIPPLE IN -dB -.0100
- * STOPBAND RIPPLE IN -dB -66.0000
- * PASSBAND CUTOFF FREQUENCY 5.69000 HERTZ
- * STOPBAND CUTOFF FREQUENCY 6.12000 HERTZ
- * SAMPLING FREQUENCY 20.0000 HERTZ
- */
-static const float atsci_exp2_lp20[] = {
-#include "atsci_exp2_lp20.dat"
-};
-
-
-#define NELEM(x) (sizeof (x) / sizeof ((x)[0]))
-
-// is A within 5% of TARGET?
-
-static bool
-close_enough_p (double a, double target)
-{
- double delta = fabs (target * 0.05); // 5 percent
-
- return fabs (target - a) <= delta;
-}
-
-vector<float>
-atsci_exp2_lp::taps (double sampling_freq)
-{
- if (close_enough_p (sampling_freq, 20e6)){
- return vector<float>(&atsci_exp2_lp20[0], &atsci_exp2_lp20[NELEM(atsci_exp2_lp20)]);
- }
- if (close_enough_p (sampling_freq, 2 * ATSC_SYMBOL_RATE)){
- return vector<float>(&atsci_exp2_lp2x[0], &atsci_exp2_lp2x[NELEM(atsci_exp2_lp2x)]);
- }
- else
- throw std::out_of_range (
- "atsci_exp2_lp: no pre-designed filter close enough");
-}
diff --git a/gr-atsc/src/lib/atsci_exp2_lp.h b/gr-atsc/src/lib/atsci_exp2_lp.h
deleted file mode 100644
index e04c42528..000000000
--- a/gr-atsc/src/lib/atsci_exp2_lp.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_EXP2_LP_H_
-#define _ATSC_EXP2_LP_H_
-
-#include <atsc_api.h>
-#include <gr_fir_builder.h>
-
-class ATSC_API atsci_exp2_lp : public gr_fir_builder
-{
-public:
- virtual std::vector<float> taps (double sampling_freq);
-};
-
-#endif /* _ATSC_EXP2_LP_H_ */
diff --git a/gr-atsc/src/lib/atsci_exp2_lp20.dat b/gr-atsc/src/lib/atsci_exp2_lp20.dat
deleted file mode 100644
index d09c5aca2..000000000
--- a/gr-atsc/src/lib/atsci_exp2_lp20.dat
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * FILTER SPECIFICATION FILE
- * FILTER TYPE:LOW PASS 1H
- * PASSBAND RIPPLE IN -dB -.0100
- * STOPBAND RIPPLE IN -dB -66.0000
- * PASSBAND CUTOFF FREQUENCY 5.69000 HERTZ
- * STOPBAND CUTOFF FREQUENCY 6.12000 HERTZ
- * SAMPLING FREQUENCY 20.0000 HERTZ
- */
- -.3137849271297455e-03,
- -.6755953654646874e-04,
- .2326252870261669e-03,
- -.1614624634385109e-03,
- -.1158984377980232e-03,
- .2114051021635532e-03,
- .6828224286437035e-04,
- -.3522797487676144e-03,
- .1759170554578304e-03,
- .2849949523806572e-03,
- -.3568925894796848e-03,
- -.1521380618214607e-03,
- .5445396527647972e-03,
- -.1707794144749641e-03,
- -.5257474258542061e-03,
- .5062967538833618e-03,
- .3262492828071117e-03,
- -.8037807419896126e-03,
- .1136297360062599e-03,
- .8607362397015095e-03,
- -.6433278322219849e-03,
- -.6174184381961823e-03,
- .1120670232921839e-02,
- .3442214801907539e-04,
- -.1305819023400545e-02,
- .7387576624751091e-03,
- .1056550536304712e-02,
- -.1477979123592377e-02,
- -.3192713484168053e-03,
- .1870564185082912e-02,
- -.7502869702875614e-03,
- -.1675266306847334e-02,
- .1847642473876476e-02,
- .7931739091873169e-03,
- -.2555002458393574e-02,
- .6227688863873482e-03,
- .2505954820662737e-02,
- -.2186967991292477e-02,
- -.1515555195510387e-02,
- .3349546808749437e-02,
- -.2860687673091888e-03,
- -.3578922711312771e-02,
- .2438103780150414e-02,
- .2555412705987692e-02,
- -.4232846200466156e-02,
- -.3483905456960201e-03,
- .4926202818751335e-02,
- -.2523601986467838e-02,
- -.3997647203505039e-02,
- .5173782818019390e-02,
- .1395780127495527e-02,
- -.6588382180780172e-02,
- .2339247148483992e-02,
- .5959283560514450e-02,
- -.6131949834525585e-02,
- -.3020572476089001e-02,
- .8632841985672712e-02,
- -.1736589241772890e-02,
- -.8627892937511206e-02,
- .7060498464852572e-02,
- .5489445291459560e-02,
- -.1119629153981805e-01,
- .4754690453410149e-03,
- .1235919492319226e-01,
- -.7909852080047131e-02,
- -.9316097479313612e-02,
- .1459939032793045e-01,
- .1910720951855183e-02,
- -.1796151325106621e-01,
- .8631225209683180e-02,
- .1572139468044043e-01,
- -.1972115319222212e-01,
- -.6601144559681416e-02,
- .2775513892993331e-01,
- -.9181375615298748e-02,
- -.2863558568060398e-01,
- .2976502152159810e-01,
- .1806837785989046e-01,
- -.5192282795906067e-01,
- .9526194538921118e-02,
- .7172224065288901e-01,
- -.6965141417458654e-01,
- -.8541030902415514e-01,
- .3052920936606824e+00,
- .5900069065392017e+00,
- .3052920936606824e+00,
- -.8541030902415514e-01,
- -.6965141417458654e-01,
- .7172224065288901e-01,
- .9526194538921118e-02,
- -.5192282795906067e-01,
- .1806837785989046e-01,
- .2976502152159810e-01,
- -.2863558568060398e-01,
- -.9181375615298748e-02,
- .2775513892993331e-01,
- -.6601144559681416e-02,
- -.1972115319222212e-01,
- .1572139468044043e-01,
- .8631225209683180e-02,
- -.1796151325106621e-01,
- .1910720951855183e-02,
- .1459939032793045e-01,
- -.9316097479313612e-02,
- -.7909852080047131e-02,
- .1235919492319226e-01,
- .4754690453410149e-03,
- -.1119629153981805e-01,
- .5489445291459560e-02,
- .7060498464852572e-02,
- -.8627892937511206e-02,
- -.1736589241772890e-02,
- .8632841985672712e-02,
- -.3020572476089001e-02,
- -.6131949834525585e-02,
- .5959283560514450e-02,
- .2339247148483992e-02,
- -.6588382180780172e-02,
- .1395780127495527e-02,
- .5173782818019390e-02,
- -.3997647203505039e-02,
- -.2523601986467838e-02,
- .4926202818751335e-02,
- -.3483905456960201e-03,
- -.4232846200466156e-02,
- .2555412705987692e-02,
- .2438103780150414e-02,
- -.3578922711312771e-02,
- -.2860687673091888e-03,
- .3349546808749437e-02,
- -.1515555195510387e-02,
- -.2186967991292477e-02,
- .2505954820662737e-02,
- .6227688863873482e-03,
- -.2555002458393574e-02,
- .7931739091873169e-03,
- .1847642473876476e-02,
- -.1675266306847334e-02,
- -.7502869702875614e-03,
- .1870564185082912e-02,
- -.3192713484168053e-03,
- -.1477979123592377e-02,
- .1056550536304712e-02,
- .7387576624751091e-03,
- -.1305819023400545e-02,
- .3442214801907539e-04,
- .1120670232921839e-02,
- -.6174184381961823e-03,
- -.6433278322219849e-03,
- .8607362397015095e-03,
- .1136297360062599e-03,
- -.8037807419896126e-03,
- .3262492828071117e-03,
- .5062967538833618e-03,
- -.5257474258542061e-03,
- -.1707794144749641e-03,
- .5445396527647972e-03,
- -.1521380618214607e-03,
- -.3568925894796848e-03,
- .2849949523806572e-03,
- .1759170554578304e-03,
- -.3522797487676144e-03,
- .6828224286437035e-04,
- .2114051021635532e-03,
- -.1158984377980232e-03,
- -.1614624634385109e-03,
- .2326252870261669e-03,
- -.6755953654646874e-04,
- -.3137849271297455e-03
diff --git a/gr-atsc/src/lib/atsci_exp2_lp2x.dat b/gr-atsc/src/lib/atsci_exp2_lp2x.dat
deleted file mode 100644
index 67dd204cb..000000000
--- a/gr-atsc/src/lib/atsci_exp2_lp2x.dat
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * FILTER SPECIFICATION FILE
- * FILTER TYPE:LOW PASS 1H
- * PASSBAND RIPPLE IN -dB -.0100
- * STOPBAND RIPPLE IN -dB -66.0000
- * PASSBAND CUTOFF FREQUENCY 5.69000 HERTZ
- * STOPBAND CUTOFF FREQUENCY 6.12000 HERTZ
- * SAMPLING FREQUENCY 21.5200 HERTZ
- */
-
-/*
- * probably total overkill...
-*/
- -.8815620094537735E-04,
- -.3356961533427239E-03,
- .1227599568665028E-03,
- .1281457953155041E-03,
- -.1479196362197399E-03,
- -.1201131381094456E-03,
- .2271742559969425E-03,
- .6969040259718895E-04,
- -.3000237047672272E-03,
- .1565506681799889E-04,
- .3562141209840775E-03,
- -.1368308439850807E-03,
- -.3795824013650417E-03,
- .2876669168472290E-03,
- .3540110774338245E-03,
- -.4550744779407978E-03,
- -.2659554593265057E-03,
- .6190738640725613E-03,
- .1072990708053112E-03,
- -.7539116777479649E-03,
- .1217066310346127E-03,
- .8306214585900307E-03,
- -.4104166291654110E-03,
- -.8203103207051754E-03,
- .7365280762314796E-03,
- .6983750499784946E-03,
- -.1066216267645359E-02,
- -.4491899162530899E-03,
- .1356074586510658E-02,
- .7050111889839172E-04,
- -.1556793693453074E-02,
- .4230584017932415E-03,
- .1618413720279932E-02,
- -.9978362359106541E-03,
- -.1497142482548952E-02,
- .1601643394678831E-02,
- .1162088476121426E-02,
- -.2165937330573797E-02,
- -.6025419570505619E-03,
- .2611500211060047E-02,
- -.1667905598878861E-03,
- -.2855417784303427E-02,
- .1101639121770859E-02,
- .2821092493832111E-02,
- -.2127973828464747E-02,
- -.2448682673275471E-02,
- .3145063761621714E-02,
- .1706911250948906E-02,
- -.4030079115182161E-02,
- -.5993186496198177E-03,
- .4651836119592190E-02,
- -.8259965106844902E-03,
- -.4880243912339211E-02,
- .2475241199135780E-02,
- .4603198729455471E-02,
- -.4209769889712334E-02,
- -.3741886932402849E-02,
- .5853117443621159E-02,
- .2264967188239098E-02,
- -.7202429696917534E-02,
- -.2001645043492317E-03,
- .8043776731938124E-02,
- -.2357403747737408E-02,
- -.8171265944838524E-02,
- .5242727231234312E-02,
- .7407441269606352E-02,
- -.8224328979849815E-02,
- -.5622585304081440E-02,
- .1101253507658839E-01,
- .2751644235104322E-02,
- -.1327139046043158E-01,
- .1191724557429552E-02,
- .1463502133265138E-01,
- -.6110311951488257E-02,
- -.1471871789544821E-01,
- .1182264182716608E-01,
- .1312375022098422E-01,
- -.1807126961648464E-01,
- -.9420783724635840E-02,
- .2453883877024055E-01,
- .3084233496338129E-02,
- -.3086851537227631E-01,
- .6689148955047131E-02,
- .3669126378372312E-01,
- -.2150753932073712E-01,
- -.4165294021368027E-01,
- .4559329804033041E-01,
- .4544338863343000E-01,
- -.9483475470915437E-01,
- -.4782041534781456E-01,
- .3143207929097116E+00,
- .5483355415053666E+00,
- .3143207929097116E+00,
- -.4782041534781456E-01,
- -.9483475470915437E-01,
- .4544338863343000E-01,
- .4559329804033041E-01,
- -.4165294021368027E-01,
- -.2150753932073712E-01,
- .3669126378372312E-01,
- .6689148955047131E-02,
- -.3086851537227631E-01,
- .3084233496338129E-02,
- .2453883877024055E-01,
- -.9420783724635840E-02,
- -.1807126961648464E-01,
- .1312375022098422E-01,
- .1182264182716608E-01,
- -.1471871789544821E-01,
- -.6110311951488257E-02,
- .1463502133265138E-01,
- .1191724557429552E-02,
- -.1327139046043158E-01,
- .2751644235104322E-02,
- .1101253507658839E-01,
- -.5622585304081440E-02,
- -.8224328979849815E-02,
- .7407441269606352E-02,
- .5242727231234312E-02,
- -.8171265944838524E-02,
- -.2357403747737408E-02,
- .8043776731938124E-02,
- -.2001645043492317E-03,
- -.7202429696917534E-02,
- .2264967188239098E-02,
- .5853117443621159E-02,
- -.3741886932402849E-02,
- -.4209769889712334E-02,
- .4603198729455471E-02,
- .2475241199135780E-02,
- -.4880243912339211E-02,
- -.8259965106844902E-03,
- .4651836119592190E-02,
- -.5993186496198177E-03,
- -.4030079115182161E-02,
- .1706911250948906E-02,
- .3145063761621714E-02,
- -.2448682673275471E-02,
- -.2127973828464747E-02,
- .2821092493832111E-02,
- .1101639121770859E-02,
- -.2855417784303427E-02,
- -.1667905598878861E-03,
- .2611500211060047E-02,
- -.6025419570505619E-03,
- -.2165937330573797E-02,
- .1162088476121426E-02,
- .1601643394678831E-02,
- -.1497142482548952E-02,
- -.9978362359106541E-03,
- .1618413720279932E-02,
- .4230584017932415E-03,
- -.1556793693453074E-02,
- .7050111889839172E-04,
- .1356074586510658E-02,
- -.4491899162530899E-03,
- -.1066216267645359E-02,
- .6983750499784946E-03,
- .7365280762314796E-03,
- -.8203103207051754E-03,
- -.4104166291654110E-03,
- .8306214585900307E-03,
- .1217066310346127E-03,
- -.7539116777479649E-03,
- .1072990708053112E-03,
- .6190738640725613E-03,
- -.2659554593265057E-03,
- -.4550744779407978E-03,
- .3540110774338245E-03,
- .2876669168472290E-03,
- -.3795824013650417E-03,
- -.1368308439850807E-03,
- .3562141209840775E-03,
- .1565506681799889E-04,
- -.3000237047672272E-03,
- .6969040259718895E-04,
- .2271742559969425E-03,
- -.1201131381094456E-03,
- -.1479196362197399E-03,
- .1281457953155041E-03,
- .1227599568665028E-03,
- -.3356961533427239E-03,
- -.8815620094537735E-04
diff --git a/gr-atsc/src/lib/atsci_fake_single_viterbi.cc b/gr-atsc/src/lib/atsci_fake_single_viterbi.cc
deleted file mode 100644
index 6246a9050..000000000
--- a/gr-atsc/src/lib/atsci_fake_single_viterbi.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <math.h>
-#include <atsci_fake_single_viterbi.h>
-#include <iostream>
-#include <algorithm>
-
-using std::cerr;
-using std::cout;
-
-void
-atsci_fake_single_viterbi::reset()
-{
- post_coder_state = 0;
-}
-
-atsci_fake_single_viterbi::atsci_fake_single_viterbi()
-{
- reset();
-}
-
-/*
- * implement simple slicer and post coder
- */
-char
-atsci_fake_single_viterbi::decode (float input)
-{
- int y2, y1;
-
- if (input < -4){
- y2 = 0;
- y1 = 0;
- }
- else if (input < 0){
- y2 = 0;
- y1 = 1;
- }
- else if (input < 4){
- y2 = 1;
- y1 = 0;
- }
- else {
- y2 = 1;
- y1 = 1;
- }
-
- int x1 = y1;
- int x2 = y2 ^ post_coder_state;
- post_coder_state = y2;
-
- return (x2 << 1) | x1;
-}
diff --git a/gr-atsc/src/lib/atsci_fake_single_viterbi.h b/gr-atsc/src/lib/atsci_fake_single_viterbi.h
deleted file mode 100644
index 561afb3d3..000000000
--- a/gr-atsc/src/lib/atsci_fake_single_viterbi.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSCFAKESINGLEVITERBI_H_
-#define _ATSCFAKESINGLEVITERBI_H_
-
-#include <atsc_api.h>
-
-/*!
- * \brief single channel viterbi decoder
- */
-class ATSC_API atsci_fake_single_viterbi
-{
-
-public:
- atsci_fake_single_viterbi ();
-
- /*!
- * \p INPUT ideally takes on the values +/- 1,3,5,7
- * return is decoded dibit in the range [0, 3]
- */
- char decode (float input);
-
- void reset ();
-
- //! internal delay of decoder
- int delay () { return 0; }
-
-protected:
- int post_coder_state;
-};
-
-#endif
diff --git a/gr-atsc/src/lib/atsci_fs_checker.cc b/gr-atsc/src/lib/atsci_fs_checker.cc
deleted file mode 100644
index 7d321307c..000000000
--- a/gr-atsc/src/lib/atsci_fs_checker.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_fs_checker.h>
-
-// empty constructor
-atsci_fs_checker::atsci_fs_checker ()
-{
-}
-
-// empty virtual destructor
-atsci_fs_checker::~atsci_fs_checker ()
-{
-}
diff --git a/gr-atsc/src/lib/atsci_fs_checker.h b/gr-atsc/src/lib/atsci_fs_checker.h
deleted file mode 100644
index 7a426b742..000000000
--- a/gr-atsc/src/lib/atsci_fs_checker.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_FS_CHECKER_H_
-#define _ATSC_FS_CHECKER_H_
-
-#include <atsc_api.h>
-#include <atsci_syminfo.h>
-
-/*!
- * \brief abstract base class for ATSC field sync checker
- *
- * Processes input samples one at a time looking for
- * an occurence of either the field sync 1 or field sync 2 pattern.
- *
- * Note that unlike atsci_fs_correlator, this class uses the symbol_num in
- * input_tag to avoid having to test each symbol position.
- *
- * For each sample processed, an output sample and an output tag are produced.
- * The output samples are identical to the input samples but are delayed by
- * a number of samples given by \p delay(). The output tag associated with
- * the the given output sample indicates whether this sample is the beginning
- * of one of the field syncs or is an ordinary sample. The tags are defined in
- * atsci_sync_tag.h.
- *
- * For ease of use, the field sync patterns are defined to begin with the
- * first symbol of the 4 symbol data segment sync pattern that immediately
- * proceeds the actual PN 511 code. This makes it easier for downstream code
- * to determine the location of data segment syncs merely by counting. They'll
- * occur every 832 samples assuming everything is working.
- */
-
-class ATSC_API atsci_fs_checker {
-
-public:
-
- // CREATORS
- atsci_fs_checker ();
- virtual ~atsci_fs_checker () = 0;
-
- // MANIPULATORS
- virtual void reset () = 0;
- virtual void filter (float input_sample, atsc::syminfo input_tag,
- float *output_sample, atsc::syminfo *output_tag) = 0;
-
- // ACCESSORS
-
- //! return delay in samples from input to output
- virtual int delay () const = 0;
-};
-
-#endif /* _ATSC_FS_CHECKER_H_ */
diff --git a/gr-atsc/src/lib/atsci_fs_checker_naive.cc b/gr-atsc/src/lib/atsci_fs_checker_naive.cc
deleted file mode 100644
index f14472aa2..000000000
--- a/gr-atsc/src/lib/atsci_fs_checker_naive.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_fs_checker_naive.h>
-#include <atsci_syminfo.h>
-#include <atsci_pnXXX.h>
-#include <iostream>
-#include <cstring>
-
-using std::cerr;
-using std::endl;
-
-static const int PN511_ERROR_LIMIT = 20; // max number of bits wrong
-static const int PN63_ERROR_LIMIT = 5;
-
-unsigned char atsci_fs_checker_naive::s_511[LENGTH_511];
-unsigned char atsci_fs_checker_naive::s_63[LENGTH_2ND_63];
-
-static void
-init_s_511 (unsigned char *p)
-{
- *p++ = 1; // data segment sync pattern
- *p++ = 0;
- *p++ = 0;
- *p++ = 1;
-
- for (int i = 0; i < 511; i++){
- p[i] = atsc_pn511[i];
- }
-}
-
-static void
-init_s_63 (unsigned char *p)
-{
- for (int i = 0; i < 63; i++){
- p[i] = atsc_pn63[i];
- }
-}
-
-atsci_fs_checker_naive::atsci_fs_checker_naive ()
-{
- init_s_511 (s_511);
- init_s_63 (s_63);
- reset ();
-}
-
-atsci_fs_checker_naive::~atsci_fs_checker_naive ()
-{
-}
-
-void
-atsci_fs_checker_naive::reset ()
-{
- d_index = 0;
- memset (d_sample_sr, 0, sizeof (d_sample_sr));
- memset (d_tag_sr, 0, sizeof (d_tag_sr));
- memset (d_bit_sr, 0, sizeof (d_bit_sr));
- d_field_num = 0;
- d_segment_num = 0;
-}
-
-void
-atsci_fs_checker_naive::filter (float input_sample, atsc::syminfo input_tag,
- float *output_sample, atsc::syminfo *output_tag)
-{
- atsc::syminfo proto_tag = d_tag_sr[d_index]; // oldest tag in the queue
-
- if (proto_tag.symbol_num == 0){ // check for field sync pattern
-
- d_segment_num = (d_segment_num + 1) & atsc::SI_SEGMENT_NUM_MASK; // increment
-
- // check for a hit on the PN 511 pattern
- int errors = 0;
- int start = wrap (d_index + OFFSET_511);
-
- for (int i = 0; i < LENGTH_511 && errors < PN511_ERROR_LIMIT; i++)
- errors += d_bit_sr[wrap (start + i)] ^ s_511[i];
-
- if (errors < PN511_ERROR_LIMIT){ // 511 pattern is good.
- // determine if this is field 1 or field 2
- errors = 0;
- start = wrap (d_index + OFFSET_2ND_63);
- for (int i = 0; i < LENGTH_2ND_63; i++)
- errors += d_bit_sr[wrap (start + i)] ^ s_63[i];
-
- // we should have either field 1 (== PN63) or field 2 (== ~PN63)
-
- if (errors <= PN63_ERROR_LIMIT){
- d_segment_num = atsc::SI_FIELD_SYNC_SEGMENT_NUM; // this is FIELD_SYNC_1
- d_field_num = 0;
- }
- else if (errors >= (LENGTH_2ND_63 - PN63_ERROR_LIMIT)){
- d_segment_num = atsc::SI_FIELD_SYNC_SEGMENT_NUM; // this is FIELD_SYNC_2
- d_field_num = 1;
- }
- else {
- // should be extremely rare.
- cerr << "!!! atsci_fs_checker_naive: PN63 error count = " << errors << endl;
- }
- }
- }
-
- proto_tag.segment_num = d_segment_num; // fill in segment number and field number
- proto_tag.field_num = d_field_num;
-
- // return oldest sample
- *output_sample = d_sample_sr[d_index];
- *output_tag = proto_tag;
-
- // overwrite with newest sample;
- d_sample_sr[d_index] = input_sample;
- d_bit_sr[d_index] = input_sample < 0 ? 0 : 1;
- d_tag_sr[d_index] = input_tag;
- d_index = incr (d_index);
-}
-
-int
-atsci_fs_checker_naive::delay () const
-{
- return SRSIZE;
-}
diff --git a/gr-atsc/src/lib/atsci_fs_checker_naive.h b/gr-atsc/src/lib/atsci_fs_checker_naive.h
deleted file mode 100644
index 21c628a1d..000000000
--- a/gr-atsc/src/lib/atsci_fs_checker_naive.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_FS_CHECKER_NAIVE_H_
-#define _ATSC_FS_CHECKER_NAIVE_H_
-
-#include <atsc_api.h>
-#include <atsci_fs_checker.h>
-
-/*!
- * \brief Naive concrete implementation of field sync checker
- */
-class ATSC_API atsci_fs_checker_naive : public atsci_fs_checker {
-
- private:
- static const int SRSIZE = 1024; // must be power of two
- int d_index; // points at oldest sample
- float d_sample_sr[SRSIZE]; // sample shift register
- atsc::syminfo d_tag_sr[SRSIZE]; // tag shift register
- unsigned char d_bit_sr[SRSIZE]; // binary decision shift register
- int d_field_num;
- int d_segment_num;
-
- static const int OFFSET_511 = 0; // offset to PN 511 pattern
- static const int LENGTH_511 = 511 + 4; // length of PN 511 pattern (+ 4 seg sync)
- static const int OFFSET_2ND_63 = 578; // offset to second PN 63 pattern
- static const int LENGTH_2ND_63 = 63; // length of PN 63 pattern
-
- static unsigned char s_511[LENGTH_511]; // PN 511 pattern
- static unsigned char s_63[LENGTH_2ND_63]; // PN 63 pattern
-
- inline static int wrap (int index){ return index & (SRSIZE - 1); }
- inline static int incr (int index){ return wrap (index + 1); }
- inline static int decr (int index){ return wrap (index - 1); }
-
- public:
-
- // CREATORS
- atsci_fs_checker_naive ();
- ~atsci_fs_checker_naive ();
-
- // MANIPULATORS
- virtual void reset ();
- void filter (float input_sample, atsc::syminfo input_tag,
- float *output_sample, atsc::syminfo *output_tag);
-
- // ACCESSORS
-
- //! return delay in samples from input to output
- int delay () const;
-
-};
-
-
-#endif /* _ATSC_FS_CHECKER_NAIVE_H_ */
diff --git a/gr-atsc/src/lib/atsci_fs_correlator.cc b/gr-atsc/src/lib/atsci_fs_correlator.cc
deleted file mode 100644
index efeb35176..000000000
--- a/gr-atsc/src/lib/atsci_fs_correlator.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_fs_correlator.h>
-
-// empty constructor
-atsci_fs_correlator::atsci_fs_correlator ()
-{
-}
-
-// empty virtual destructor
-atsci_fs_correlator::~atsci_fs_correlator ()
-{
-}
diff --git a/gr-atsc/src/lib/atsci_fs_correlator.h b/gr-atsc/src/lib/atsci_fs_correlator.h
deleted file mode 100644
index ff70245c9..000000000
--- a/gr-atsc/src/lib/atsci_fs_correlator.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_FS_CORRELATOR_H_
-#define _ATSC_FS_CORRELATOR_H_
-
-#include <atsc_api.h>
-
-/*!
- * \brief abstract base class for ATSC field sync correlator
- *
- * Processes input samples one at a time looking for
- * an occurence of either the field sync 1 or field sync 2 pattern.
- *
- * For each sample processed, an output sample and an output tag are produced.
- * The output samples are identical to the input samples but are delayed by
- * a number of samples given by \p delay(). The output tag associated with
- * the the given output sample indicates whether this sample is the beginning
- * of one of the field syncs or is an ordinary sample. The tags are defined in
- * atsci_sync_tag.h.
- *
- * For ease of use, the field sync patterns are defined to begin with the
- * first symbol of the 4 symbol data segment sync pattern that immediately
- * proceeds the actual PN 511 code. This makes it easier for downstream code
- * to determine the location of data segment syncs merely by counting. They'll
- * occur every 832 samples assuming everything is working.
- */
-
-class ATSC_API atsci_fs_correlator {
-
-public:
-
- // CREATORS
- atsci_fs_correlator ();
- virtual ~atsci_fs_correlator () = 0;
-
- // MANIPULATORS
- virtual void reset () = 0;
- virtual void filter (float input_sample, float *output_sample, float *output_tag) = 0;
-
- // ACCESSORS
-
- //! return delay in samples from input to output
- virtual int delay () const = 0;
-};
-
-#endif /* _ATSC_FS_CORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/atsci_fs_correlator_naive.cc b/gr-atsc/src/lib/atsci_fs_correlator_naive.cc
deleted file mode 100644
index ccf903531..000000000
--- a/gr-atsc/src/lib/atsci_fs_correlator_naive.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_fs_correlator_naive.h>
-#include <atsci_sync_tag.h>
-#include <atsci_pnXXX.h>
-#include <iostream>
-#include <cstring>
-
-using std::cerr;
-using std::endl;
-
-static const int PN511_ERROR_LIMIT = 20; // max number of bits wrong
-static const int PN63_ERROR_LIMIT = 5;
-
-unsigned char atsci_fs_correlator_naive::s_511[LENGTH_511];
-unsigned char atsci_fs_correlator_naive::s_63[LENGTH_2ND_63];
-
-static void
-init_s_511 (unsigned char *p)
-{
- *p++ = 1; // data segment sync pattern
- *p++ = 0;
- *p++ = 0;
- *p++ = 1;
-
- for (int i = 0; i < 511; i++){
- p[i] = atsc_pn511[i];
- }
-}
-
-static void
-init_s_63 (unsigned char *p)
-{
- for (int i = 0; i < 63; i++){
- p[i] = atsc_pn63[i];
- }
-}
-
-atsci_fs_correlator_naive::atsci_fs_correlator_naive ()
-{
- init_s_511 (s_511);
- init_s_63 (s_63);
- reset ();
-}
-
-atsci_fs_correlator_naive::~atsci_fs_correlator_naive ()
-{
-}
-
-void
-atsci_fs_correlator_naive::reset ()
-{
- d_index = 0;
- memset (d_sample_sr, 0, sizeof (d_sample_sr));
- memset (d_bit_sr, 0, sizeof (d_bit_sr));
-}
-
-void
-atsci_fs_correlator_naive::filter (float input_sample,
- float *output_sample, float *output_tag)
-{
- // check for a hit on the PN 511 pattern
- int errors = 0;
- int start = wrap (d_index + OFFSET_511);
-
- for (int i = 0; i < LENGTH_511 && errors < PN511_ERROR_LIMIT; i++)
- errors += d_bit_sr[wrap (start + i)] ^ s_511[i];
-
- if (errors >= PN511_ERROR_LIMIT)
- *output_tag = atsc_sync_tag::NORMAL;
-
- else { // 511 pattern is good. determine if this is field 1 or field 2
- errors = 0;
- start = wrap (d_index + OFFSET_2ND_63);
- for (int i = 0; i < LENGTH_2ND_63; i++)
- errors += d_bit_sr[wrap (start + i)] ^ s_63[i];
-
- // we should have either field 1 (== PN63) or field 2 (== ~PN63)
- if (errors <= PN63_ERROR_LIMIT)
- *output_tag = atsc_sync_tag::START_FIELD_SYNC_1;
-
- else if (errors >= (LENGTH_2ND_63 - PN63_ERROR_LIMIT))
- *output_tag = atsc_sync_tag::START_FIELD_SYNC_2;
-
- else {
- // should be extremely rare.
- cerr << "!!! atsci_fs_correlator_naive: PN63 error count = " << errors << endl;
- *output_tag = atsc_sync_tag::NORMAL;
- }
- }
-
- // return oldest sample
- *output_sample = d_sample_sr[d_index];
-
- // overwrite with newest sample;
- d_sample_sr[d_index] = input_sample;
- d_bit_sr[d_index] = input_sample < 0 ? 0 : 1;
- d_index = incr (d_index);
-}
-
-int
-atsci_fs_correlator_naive::delay () const
-{
- return SRSIZE;
-}
diff --git a/gr-atsc/src/lib/atsci_fs_correlator_naive.h b/gr-atsc/src/lib/atsci_fs_correlator_naive.h
deleted file mode 100644
index d8afc2ca6..000000000
--- a/gr-atsc/src/lib/atsci_fs_correlator_naive.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_FS_CORRELATOR_NAIVE_H_
-#define _ATSC_FS_CORRELATOR_NAIVE_H_
-
-#include <atsc_api.h>
-#include <atsci_fs_correlator.h>
-
-/*!
- * \brief Naive concrete implementation of field sync correlator
- */
-class ATSC_API atsci_fs_correlator_naive : public atsci_fs_correlator {
-
- private:
- static const int SRSIZE = 1024; // must be power of two
- int d_index; // points at oldest sample
- float d_sample_sr[SRSIZE]; // sample shift register
- unsigned char d_bit_sr[SRSIZE]; // binary decision shift register
-
- static const int OFFSET_511 = 0; // offset to PN 511 pattern
- static const int LENGTH_511 = 511 + 4; // length of PN 511 pattern (+ 4 seg sync)
- static const int OFFSET_2ND_63 = 578; // offset to second PN 63 pattern
- static const int LENGTH_2ND_63 = 63; // length of PN 63 pattern
-
- static unsigned char s_511[LENGTH_511]; // PN 511 pattern
- static unsigned char s_63[LENGTH_2ND_63]; // PN 63 pattern
-
- inline static int wrap (int index){ return index & (SRSIZE - 1); }
- inline static int incr (int index){ return wrap (index + 1); }
- inline static int decr (int index){ return wrap (index - 1); }
-
- public:
-
- // CREATORS
- atsci_fs_correlator_naive ();
- ~atsci_fs_correlator_naive ();
-
- // MANIPULATORS
- virtual void reset ();
- void filter (float input_sample, float *output_sample, float *output_tag);
-
- // ACCESSORS
-
- //! return delay in samples from input to output
- int delay () const;
-
-};
-
-
-#endif /* _ATSC_FS_CORRELATOR_NAIVE_H_ */
diff --git a/gr-atsc/src/lib/atsci_pnXXX.cc b/gr-atsc/src/lib/atsci_pnXXX.cc
deleted file mode 100644
index 128582d2d..000000000
--- a/gr-atsc/src/lib/atsci_pnXXX.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_pnXXX.h>
-
-const unsigned char atsc_pn511[511] = {
- 0,0,0,0, 0,0,0,1, 0,1,1,1, 1,1,1,1, 1,1,0,0, 1,0,1,0, 1,0,1,0, 1,1,1,0,
- 0,1,1,0, 0,1,1,0, 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,1,1,0, 0,0,0,1, 1,1,0,1,
-
- 0,1,1,1, 1,1,0,1, 0,0,1,1, 0,1,0,1, 0,0,1,1, 1,0,1,1, 0,0,1,1, 1,0,1,0,
- 0,1,0,0, 0,1,0,1, 1,0,0,0, 1,1,1,1, 0,0,1,0, 0,0,0,1, 0,1,0,0, 0,1,1,1,
-
- 1,1,0,0, 1,1,1,1, 0,1,0,1, 0,0,0,1, 0,1,0,0, 1,1,0,0, 0,0,1,1, 0,0,0,1,
- 0,0,0,0, 0,1,0,0, 0,0,1,1, 1,1,1,1, 0,0,0,0, 0,1,0,1, 0,1,0,0, 0,0,0,0,
-
- 1,1,0,0, 1,1,1,1, 1,1,1,0, 1,1,1,0, 1,0,1,0, 1,0,0,1, 0,1,1,0, 0,1,1,0,
- 0,0,1,1, 0,1,1,1, 0,1,1,1, 1,0,1,1, 0,1,0,0, 1,0,1,0, 0,1,0,0, 1,1,1,0,
-
- 0,1,1,1, 0,0,0,1, 0,1,1,1, 0,1,0,0, 0,0,1,1, 0,1,0,0, 1,1,1,1, 1,0,1,1,
- 0,0,0,1, 0,1,0,1, 1,0,1,1, 1,1,0,0, 1,1,0,1, 1,0,1,0, 1,1,1,0, 1,1,0,1,
-
- 1,0,0,1, 0,1,1,0, 1,1,0,1, 1,1,0,0, 1,0,0,1, 0,0,1,0, 1,1,1,0, 0,0,1,1,
- 1,0,0,1, 0,1,1,1, 1,0,1,0, 0,0,1,1, 0,1,0,1, 1,0,0,0, 0,1,0,0, 1,1,0,1,
-
- 1,1,1,1, 0,0,0,1, 0,0,1,0, 1,0,1,1, 1,1,0,0, 0,1,1,0, 0,1,0,1, 0,0,0,0,
- 1,0,0,0, 1,1,0,0, 0,0,0,1, 1,1,1,0, 1,1,1,1, 1,1,0,1, 0,1,1,0, 1,0,1,0,
-
- 1,1,0,0, 1,0,0,1, 1,0,0,1, 0,0,0,1, 1,1,0,1, 1,1,0,0, 0,0,1,0, 1,1,0,1,
- 0,0,0,0, 0,1,1,0, 1,1,0,0, 0,0,0,0, 1,0,0,1, 0,0,0,0, 0,0,0,1, 1,1,0
-};
-
-const unsigned char atsc_pn63[63] = {
- 1,1,1,0, 0,1,0,0, 1,0,1,1, 0,1,1,1, 0,1,1,0, 0,1,1,0, 1,0,1,0, 1,1,1,1,
- 1,1,0,0, 0,0,0,1, 0,0,0,0, 1,1,0,0, 0,1,0,1, 0,0,1,1, 1,1,0,1, 0,0,0
-};
-
diff --git a/gr-atsc/src/lib/atsci_pnXXX.h b/gr-atsc/src/lib/atsci_pnXXX.h
deleted file mode 100644
index 612ed2034..000000000
--- a/gr-atsc/src/lib/atsci_pnXXX.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsc_api.h>
-
-ATSC_API extern const unsigned char atsc_pn511[];
-ATSC_API extern const unsigned char atsc_pn63[];
diff --git a/gr-atsc/src/lib/atsci_randomizer.cc b/gr-atsc/src/lib/atsci_randomizer.cc
deleted file mode 100644
index 8766bbef0..000000000
--- a/gr-atsc/src/lib/atsci_randomizer.cc
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_randomizer.h>
-#include <assert.h>
-
-unsigned char atsci_randomizer::s_output_map[1 << 14];
-bool atsci_randomizer::s_output_map_initialized_p = false;
-
-atsci_randomizer::atsci_randomizer ()
-{
- d_state = PRELOAD_VALUE;
-
- if (!s_output_map_initialized_p)
- initialize_output_map ();
-}
-
-/*!
- * \brief Generate the table used in the fast_output_map function.
- *
- * The table has 16K byte entries, but because of how is is used, only
- * 256 entries end up being resident in the cache. This seems
- * like a good use of memory. We can get away with a 16K table
- * because the low two bits of the state do not affect the output
- * function. By shifting right those two bits we shrink the table,
- * and also get better cache line utilization.
- */
-void
-atsci_randomizer::initialize_output_map ()
-{
- s_output_map_initialized_p = true;
-
- for (int i = 0; i < (1 << 14); i++)
- s_output_map[i] = slow_output_map (i << 2);
-}
-
-
-void
-atsci_randomizer::reset ()
-{
- d_state = PRELOAD_VALUE;
-}
-
-void
-atsci_randomizer::randomize (atsc_mpeg_packet_no_sync &out, const atsc_mpeg_packet &in)
-{
- assert (in.data[0] == MPEG_SYNC_BYTE); // confirm it's there, then drop
-
- for (int i = 0; i < ATSC_MPEG_DATA_LENGTH; i++)
- out.data[i] = in.data[i + 1] ^ output_and_clk ();
-}
-
-void
-atsci_randomizer::derandomize (atsc_mpeg_packet &out, const atsc_mpeg_packet_no_sync &in)
-{
- out.data[0] = MPEG_SYNC_BYTE; // add sync byte to beginning of packet
-
- for (int i = 0; i < ATSC_MPEG_DATA_LENGTH; i++)
- out.data[i + 1] = in.data[i] ^ output_and_clk ();
-}
-
-
-unsigned char
-atsci_randomizer::slow_output_map (int st)
-{
- int output = 0;
-
- if (st & 0x8000)
- output |= 0x01;
-
- if (st & 0x2000)
- output |= 0x02;
-
- if (st & 0x1000)
- output |= 0x04;
-
- if (st & 0x0200)
- output |= 0x08;
-
- if (st & 0x0020)
- output |= 0x10;
-
- if (st & 0x0010)
- output |= 0x20;
-
- if (st & 0x0008)
- output |= 0x40;
-
- if (st & 0x0004)
- output |= 0x80;
-
- return output;
-}
diff --git a/gr-atsc/src/lib/atsci_randomizer.h b/gr-atsc/src/lib/atsci_randomizer.h
deleted file mode 100644
index aedd0d808..000000000
--- a/gr-atsc/src/lib/atsci_randomizer.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2001 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_RANDOMIZER_H_
-#define _ATSC_RANDOMIZER_H_
-
-#include <atsc_api.h>
-#include <atsc_types.h>
-
-/*!
- * \brief ATSC data "whitener"
- *
- * The data randomizer described in ATSC standard A/53B.
- * See figure D4 on page 54.
- */
-
-class ATSC_API atsci_randomizer {
- friend class qa_atsci_randomizer;
-
- public:
- atsci_randomizer();
-
- /*! \brief reset randomizer LFSR
- *
- * must be called during the Data Segment Sync interval prior to the
- * first data segment. I.e., the LFSR is reset prior to the first
- * field of each VSB data frame.
- */
- void reset ();
-
- //! randomize (whiten) mpeg packet and remove leading MPEG-2 sync byte
- void randomize (atsc_mpeg_packet_no_sync &out, const atsc_mpeg_packet &in);
-
- //! derandomize (de-whiten) mpeg packet and add leading MPEG-2 sync byte
- void derandomize (atsc_mpeg_packet &out, const atsc_mpeg_packet_no_sync &in);
-
- unsigned int state() const { return d_state; }
-
- private:
- static void initialize_output_map ();
- static unsigned char slow_output_map (int st);
-
- static unsigned char fast_output_map (int st){
- return s_output_map[(st & 0xb23c) >> 2]; // Magic const with 8 bits set improves cache
- // utilization. The bits correspond to the taps
- // used in output calculation. Others may be
- // safely ignored.
- }
-
- //! return current output value
- unsigned char output (){
- return fast_output_map (d_state);
- }
-
- //! clock LFSR; advance to next state.
- void clk (){
- if (d_state & 0x1)
- d_state = ((d_state ^ MASK) >> 1) | 0x8000;
- else
- d_state = d_state >> 1;
- }
-
- //! return current output value and advance to next state
- unsigned char output_and_clk (){
- unsigned char r = output ();
- clk ();
- return r;
- }
-
- unsigned int d_state;
-
- static const unsigned int PRELOAD_VALUE = 0x018f; /* 0xf180 bit reversed */
- static const unsigned int MASK = 0xa638;
- static unsigned char s_output_map[1 << 14];
- static bool s_output_map_initialized_p;
-};
-
-#endif /* _ATSC_RANDOMIZER_H_ */
diff --git a/gr-atsc/src/lib/atsci_reed_solomon.cc b/gr-atsc/src/lib/atsci_reed_solomon.cc
deleted file mode 100644
index a4a40e3f1..000000000
--- a/gr-atsc/src/lib/atsci_reed_solomon.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_reed_solomon.h>
-#include <assert.h>
-#include <string.h>
-
-extern "C" {
-#include "rs.h"
-}
-
-static const int rs_init_symsize = 8;
-static const int rs_init_gfpoly = 0x11d;
-static const int rs_init_fcr = 0; // first consecutive root
-static const int rs_init_prim = 1; // primitive is 1 (alpha)
-static const int rs_init_nroots = 20;
-
-static const int N = (1 << rs_init_symsize) - 1; // 255
-static const int K = N - rs_init_nroots; // 235
-
-static const int amount_of_pad = N - ATSC_MPEG_RS_ENCODED_LENGTH; // 48
-
-atsci_reed_solomon::atsci_reed_solomon ()
-{
- d_rs = init_rs_char (rs_init_symsize, rs_init_gfpoly,
- rs_init_fcr, rs_init_prim, rs_init_nroots);
-
- assert (d_rs != 0);
-}
-
-atsci_reed_solomon::~atsci_reed_solomon ()
-{
- if (d_rs)
- free_rs_char (d_rs);
- d_rs = 0;
-}
-
-void
-atsci_reed_solomon::encode (atsc_mpeg_packet_rs_encoded &out, const atsc_mpeg_packet_no_sync &in)
-{
- unsigned char tmp[K];
-
- assert ((int)(amount_of_pad + sizeof (in.data)) == K);
-
- // add missing prefix zero padding to message
- memset (tmp, 0, amount_of_pad);
- memcpy (&tmp[amount_of_pad], in.data, sizeof (in.data));
-
- // copy message portion to output packet
- memcpy (out.data, in.data, sizeof (in.data));
-
- // now compute parity bytes and add them to tail end of output packet
- encode_rs_char (d_rs, tmp, &out.data[sizeof (in.data)]);
-}
-
-int
-atsci_reed_solomon::decode (atsc_mpeg_packet_no_sync &out, const atsc_mpeg_packet_rs_encoded &in)
-{
- unsigned char tmp[N];
- int ncorrections;
-
- assert ((int)(amount_of_pad + sizeof (in.data)) == N);
-
- // add missing prefix zero padding to message
- memset (tmp, 0, amount_of_pad);
- memcpy (&tmp[amount_of_pad], in.data, sizeof (in.data));
-
- // correct message...
- ncorrections = decode_rs_char (d_rs, tmp, 0, 0);
-
- // copy corrected message to output, skipping prefix zero padding
- memcpy (out.data, &tmp[amount_of_pad], sizeof (out.data));
-
- return ncorrections;
-}
diff --git a/gr-atsc/src/lib/atsci_reed_solomon.h b/gr-atsc/src/lib/atsci_reed_solomon.h
deleted file mode 100644
index 8f6e26426..000000000
--- a/gr-atsc/src/lib/atsci_reed_solomon.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_REED_SOLOMON_H_
-#define _ATSC_REED_SOLOMON_H_
-
-#include <atsc_api.h>
-#include <atsc_types.h>
-
-/*!
- * \brief ATSC Reed-Solomon encoder / decoder
- *
- * The t=10 (207,187) code described in ATSC standard A/53B.
- * See figure D5 on page 55.
- */
-
-class ATSC_API atsci_reed_solomon {
-
- public:
- atsci_reed_solomon();
- ~atsci_reed_solomon();
-
- /*!
- * \brief Add RS error correction encoding
- */
- void encode (atsc_mpeg_packet_rs_encoded &out, const atsc_mpeg_packet_no_sync &in);
-
- /*!
- * Decode RS encoded packet.
- * \returns a count of corrected symbols, or -1 if the block was uncorrectible.
- */
- int decode (atsc_mpeg_packet_no_sync &out, const atsc_mpeg_packet_rs_encoded &in);
-
- private:
- void *d_rs;
-};
-
-#endif /* _ATSC_REED_SOLOMON_H_ */
diff --git a/gr-atsc/src/lib/atsci_root_raised_cosine.cc b/gr-atsc/src/lib/atsci_root_raised_cosine.cc
deleted file mode 100644
index f555d90ac..000000000
--- a/gr-atsc/src/lib/atsci_root_raised_cosine.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsc_consts.h>
-#include <atsci_root_raised_cosine.h>
-#include <gr_firdes.h>
-
-vector<float>
-atsc_root_raised_cosine::taps (double sampling_rate)
-{
- static const double symbol_rate = ATSC_SYMBOL_RATE/2; // 1/2 as wide because we're designing lp filter
- // static const int NTAPS = 93; // good number
- // static const int NTAPS = 745; // better number
- static const int NTAPS = 279; // better number
-
- return gr_firdes::root_raised_cosine (1.0, sampling_rate, symbol_rate, .115, NTAPS);
-}
diff --git a/gr-atsc/src/lib/atsci_root_raised_cosine.h b/gr-atsc/src/lib/atsci_root_raised_cosine.h
deleted file mode 100644
index f24606992..000000000
--- a/gr-atsc/src/lib/atsci_root_raised_cosine.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_RRC_H_
-#define _ATSC_RRC_H_
-
-#include <atsc_api.h>
-#include <gr_fir_builder.h>
-
-class ATSC_API atsc_root_raised_cosine : public gr_fir_builder
-{
-public:
- virtual std::vector<float> taps (double sampling_freq);
-};
-
-
-#endif /* _ATSC_RRC_H_ */
diff --git a/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.cc b/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.cc
deleted file mode 100644
index f795a4166..000000000
--- a/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_root_raised_cosine_bandpass.h>
-#include <iostream>
-#include <cmath>
-
-using std::vector;
-using std::cerr;
-using std::endl;
-
-
-vector<float>
-atsc_root_raised_cosine_bandpass::taps (double sampling_freq)
-{
-
- vector<float> t = atsc_root_raised_cosine::taps (sampling_freq);
-
- cerr << "atsc_root_raised_cosine_bandpass::taps -- " << t.size () << endl;
-
- // heterodyne the low pass coefficients up to the specified bandpass
- // center frequency. Note that when we do this, the filter bandwidth
- // is effectively twice the low pass (2.69 * 2 = 5.38) and hence
- // matches the diagram in the ATSC spec.
-
- double arg = 2 * M_PI * _center_freq / sampling_freq;
- for (unsigned int i = 0; i < t.size (); i++)
- // the factor of 2 keeps the gain of the passband normalized to 1
- t[i] *= 2 * cos (arg * (double) i);
-
- return t;
-}
diff --git a/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h b/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h
deleted file mode 100644
index bdb33c28d..000000000
--- a/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_RRC_BANDPASS_H_
-#define _ATSC_RRC_BANDPASS_H_
-
-#include <atsc_api.h>
-#include <atsci_root_raised_cosine.h>
-
-class ATSC_API atsc_root_raised_cosine_bandpass : public atsc_root_raised_cosine
-{
-public:
- atsc_root_raised_cosine_bandpass (double center_freq) : _center_freq (center_freq) {}
- virtual std::vector<float> taps (double sampling_freq);
-
-protected:
- double _center_freq;
-};
-
-
-#endif /* _ATSC_RRC_BANDPASS_H_ */
diff --git a/gr-atsc/src/lib/atsci_single_viterbi.cc b/gr-atsc/src/lib/atsci_single_viterbi.cc
deleted file mode 100644
index a1bf2ea49..000000000
--- a/gr-atsc/src/lib/atsci_single_viterbi.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <math.h>
-#include <atsci_single_viterbi.h>
-#include <iostream>
-
-using std::cerr;
-using std::cout;
-
-const float atsci_single_viterbi::was_sent[32] = {
- -7,-3,-7,-3,-7,-3,-7,-3,
- -5,-1,-5,-1,-5,-1,-5,-1,
- 1,5,1,5,1,5,1,5,
- 3,7,3,7,3,7,3,7
-};
-
-const int atsci_single_viterbi::transition_table[32] = {
- 0,2,4,6,
- 2,0,6,4,
- 1,3,5,7,
- 3,1,7,5,
- 4,6,0,2,
- 6,4,2,0,
- 5,7,1,3,
- 7,5,3,1
-};
-
-void
-atsci_single_viterbi::reset()
-{
- for (unsigned int i = 0; i<2; i++)
- for (unsigned int j = 0; j<8; j++) {
- path_metrics[i][j] = 0;
- traceback[i][j] = 0;
- }
- phase = 0;
-}
-
-atsci_single_viterbi::atsci_single_viterbi()
-{
- reset();
-}
-
-char
-atsci_single_viterbi::decode(float input)
-{
- for (unsigned int next_state = 0; next_state < 8; next_state++) {
- unsigned int index = next_state << 2;
- int min_metric_symb = 0;
- float min_metric = fabs(input - was_sent[index + 0]) +
- path_metrics[phase][transition_table[index + 0]];
-
- for (unsigned int symbol_sent = 1; symbol_sent < 4; symbol_sent++)
- if( (fabs(input-was_sent[index+symbol_sent]) +
- path_metrics[phase][transition_table[index+symbol_sent]])
- < min_metric) {
- min_metric = fabs(input-was_sent[index+symbol_sent]) +
- path_metrics[phase][transition_table[index+symbol_sent]];
- min_metric_symb = symbol_sent;
- }
-
- path_metrics[phase^1][next_state] = min_metric;
- traceback[phase^1][next_state] = (((unsigned long long)min_metric_symb) << 62) |
- (traceback[phase][transition_table[index+min_metric_symb]] >> 2);
- }
- unsigned int best_state = 0;
- float best_state_metric = path_metrics[phase^1][0];
- for (unsigned int state = 1; state < 8; state++)
- if(path_metrics[phase^1][state] < best_state_metric) {
- best_state = state;
- best_state_metric = path_metrics[phase^1][state];
- }
- if(best_state_metric > 10000) {
- for(unsigned int state = 0; state < 8; state++)
- path_metrics[phase^1][state] -= best_state_metric;
- // cerr << "Resetting Path Metrics from " << best_state_metric << " to 0\n";
- }
- phase ^= 1;
- return (0x3 & traceback[phase][best_state]);
-}
diff --git a/gr-atsc/src/lib/atsci_single_viterbi.h b/gr-atsc/src/lib/atsci_single_viterbi.h
deleted file mode 100644
index 01b13fb25..000000000
--- a/gr-atsc/src/lib/atsci_single_viterbi.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSCSINGLEVITERBI_H_
-#define _ATSCSINGLEVITERBI_H_
-
-#include <atsc_api.h>
-
-/*!
- * \brief single channel viterbi decoder
- */
-class ATSC_API atsci_single_viterbi
-{
-
-public:
- atsci_single_viterbi ();
-
- static const unsigned int TB_LEN = 32;
-
- /*!
- * \p INPUT ideally takes on the values +/- 1,3,5,7
- * return is decoded dibit in the range [0, 3]
- */
- char decode (float input);
-
- void reset ();
-
- //! internal delay of decoder
- int delay () { return TB_LEN - 1; }
-
-protected:
- static const int transition_table[32];
- static const float was_sent[32];
- float path_metrics [2][8];
- unsigned long long traceback [2][8];
- unsigned char phase;
-};
-
-#endif
diff --git a/gr-atsc/src/lib/atsci_slicer_agc.h b/gr-atsc/src/lib/atsci_slicer_agc.h
deleted file mode 100644
index 8a3927b70..000000000
--- a/gr-atsc/src/lib/atsci_slicer_agc.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_SLICER_AGC_H_
-#define _ATSC_SLICER_AGC_H_
-
-#include <atsc_api.h>
-#include <math.h>
-#include <gr_single_pole_iir.h>
-
-/*!
- * \brief Automatic Gain Control class for atsc slicer
- *
- * Given perfect data, output values will be +/- {7, 5, 3, 1}
- */
-
-class ATSC_API atsci_slicer_agc {
-
- public:
- atsci_slicer_agc () : _gain(1), dc(0.0025) {};
-
-
- float gain () { return _gain; }
-
-#if 1
- float scale (float input){
- float t = input * _gain;
- float output = t - REFERENCE;
- float error = REFERENCE - dc.filter (t);
- _gain += error * RATE;
- return output;
- }
-#else
- float scale(float input){
- float avg = dc.filter(input);
- if(fabs(avg)<.1)avg=.1;
- _gain += _gain*.99 + .01* REFERENCE/avg;
- return input*_gain - REFERENCE;
- }
-#endif
-
- protected:
-
- static const float REFERENCE = 1.25; // pilot reference value
- static const float RATE = 1.0e-5; // adjustment rate
- float _gain; // current gain
- gr_single_pole_iir<float,float,float> dc;
-};
-
-#endif /* _ATSC_SLICER_AGC_H_ */
diff --git a/gr-atsc/src/lib/atsci_sliding_correlator.cc b/gr-atsc/src/lib/atsci_sliding_correlator.cc
deleted file mode 100644
index 877037db7..000000000
--- a/gr-atsc/src/lib/atsci_sliding_correlator.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_sliding_correlator.h>
-#include <atsci_pnXXX.h>
-
-// #define TRY_BACKWARDS
-
-/*
- * Return the number of 1's in v.
- * This magic code is explained wonderfully in the AMD Athlon
- * optimization guide, pg 136.
- */
-static inline int popcount32 (unsigned long v)
-{
- unsigned long w = v - ((v >> 1) & 0x55555555);
- unsigned long x = (w & 0x33333333) + ((w >> 2) & 0x33333333);
- unsigned long y = (x + (x >> 4)) & 0x0f0f0f0f;
- unsigned long z = (y * 0x01010101) >> 24;
-
- return z;
-}
-
-atsci_sliding_correlator::atsci_sliding_correlator ()
-{
-#if defined(TRY_BACKWARDS)
- for (int i = 511 - 1; i >= 0; i--)
- mask.shift_in (atsc_pn511[i]);
-#else
- for (unsigned i = 0; i < 511; i++)
- mask.shift_in (atsc_pn511[i]);
-#endif
-
- and_mask.shift_in (0);
- for (int i = 0; i < 511; i++)
- and_mask.shift_in (1);
-}
-
-/*
- * we shift in from the top of the register towards the bottom
- *
- * +-- bits enter here...
- * |
- * v
- * block 0 | block 1 | block 2 ... | block N-1
- * |
- * +--> ... and drop out here
- *
- */
-inline void
-atsci_sliding_correlator::shift_reg::shift_in (int bit)
-{
- for (int i = NSRBLOCKS - 1; i > 0; i--)
- d[i] = ((d[i-1] & 0x1) << (srblock_bitsize - 1)) | (d[i] >> 1);
-
- d[0] = (((srblock) bit) << (srblock_bitsize - 1)) | (d[0] >> 1);
-}
-
-int
-atsci_sliding_correlator::input_bit (int bit)
-{
- input.shift_in (bit);
-
- // can probably get a win by unrolling the loop, if we need to.
- int count = 0;
- for (int i = 0; i < NSRBLOCKS; i++)
- count += popcount32 ((input.d[i] ^ mask.d[i]) & and_mask.d[i]);
-
- return count;
-}
-
diff --git a/gr-atsc/src/lib/atsci_sliding_correlator.h b/gr-atsc/src/lib/atsci_sliding_correlator.h
deleted file mode 100644
index ffa2124ed..000000000
--- a/gr-atsc/src/lib/atsci_sliding_correlator.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_SLIDING_CORRELATOR_H_
-#define _ATSC_SLIDING_CORRELATOR_H_
-
-#include <atsc_api.h>
-#include <string.h>
-
-#include <atsci_pnXXX.h>
-//extern const unsigned char atsc_pn511[511];
-//extern const unsigned char atsc_pn63[63];
-
-/*!
- * \brief look for the PN 511 field sync pattern
- */
-class ATSC_API atsci_sliding_correlator {
- public:
-
- atsci_sliding_correlator ();
- ~atsci_sliding_correlator (){};
-
- //! input hard decision bit, return correlation (0,511)
- // Result is the number of wrong bits.
- // E.g., 0 -> perfect match; 511 -> all bits are wrong
-
- int input_bit (int bit);
-
- //! input sample, return correlation (0,511)
- // Result is the number of wrong bits.
- // E.g., 0 -> perfect match; 511 -> all bits are wrong
-
- int input_int (int sample){
- return input_bit (sample < 0 ? 0 : 1);
- }
-
- //! input sample, return correlation (0,511)
- // Result is the number of wrong bits.
- // E.g., 0 -> perfect match; 511 -> all bits are wrong
-
- int input_float (float sample){
- return input_bit (sample < 0 ? 0 : 1);
- }
-
- void reset () { input.reset (); }
-
- private:
-
- typedef unsigned long srblock;
- static const int bits_per_char = 8;
- static const int srblock_bitsize = sizeof (srblock) * bits_per_char;
- static const int NSRBLOCKS = (511 + srblock_bitsize - 1) / srblock_bitsize;
-
- class shift_reg {
- public:
- shift_reg () { reset (); }
- void reset () { memset (d, 0, sizeof (d)); }
- void shift_in (int bit);
- srblock d[NSRBLOCKS];
- };
-
- shift_reg mask; // pattern we're looking for
- shift_reg input; // current input window
- shift_reg and_mask; // bits to consider
-};
-
-#endif /* _ATSC_SLIDING_CORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/atsci_sssr.cc b/gr-atsc/src/lib/atsci_sssr.cc
deleted file mode 100644
index 56a0c6a00..000000000
--- a/gr-atsc/src/lib/atsci_sssr.cc
+++ /dev/null
@@ -1,297 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2008 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_sssr.h>
-#include <algorithm>
-#include <cmath>
-#include <cstdio>
-#include <assert.h>
-#include <atsci_diag_output.h>
-#include <gr_math.h>
-#include <stdio.h>
-#include <boost/math/special_functions/sign.hpp>
-#include <iostream>
-
-/*
- * ----------------------------------------------------------------
- * Segment Integrator Pre-Processor
- *
- * Compute weight passed to integrator based on
- * correlation result and ncorr_gain2
- */
-
-inline static int
-sipp (bool digcorr_output)
-{
- if (digcorr_output)
- return +2; // positive correlation
- else
- return -1; // no correlation
-}
-
-/*
- * ----------------------------------------------------------------
- * Segment Sync Integrator...
- */
-
-static const int SSI_MIN = -16;
-static const int SSI_MAX = 15;
-
-void
-sssr::seg_sync_integrator::reset ()
-{
- for (int i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++)
- d_integrator[i] = SSI_MIN;
-}
-
-int
-sssr::seg_sync_integrator::update (int weight, int index)
-{
- int t = d_integrator[index] + weight;
- t = std::max (t, SSI_MIN);
- t = std::min (t, SSI_MAX);
- d_integrator[index] = t;
-
- return t;
-}
-
-int
-sssr::seg_sync_integrator::find_max (int *v)
-{
- int best_value = d_integrator[0];
- int best_index = 0;
-
- for (int i = 1; i < ATSC_DATA_SEGMENT_LENGTH; i++)
- if (d_integrator[i] > best_value){
- best_value = d_integrator[i];
- best_index = i;
- }
-
- *v = best_value;
- return best_index;
-}
-
-/*
- * ----------------------------------------------------------------
- * Segment Sync and Symbol recovery
- */
-
-static const int SYMBOL_INDEX_OFFSET = 3;
-static const int MIN_SEG_LOCK_CORRELATION_VALUE = 5;
-
-atsci_sssr::atsci_sssr ()
- : d_debug_fp(0)
-{
- reset ();
-
- if (_SSSR_DIAG_OUTPUT_){
- const char *file = "sssr.ssout";
- if ((d_debug_fp = fopen (file, "wb")) == 0){
- perror (file);
- exit (1);
- }
- }
-}
-
-atsci_sssr::~atsci_sssr ()
-{
- if (d_debug_fp)
- fclose (d_debug_fp);
-}
-
-void
-atsci_sssr::reset ()
-{
- d_correlator.reset ();
- d_integrator.reset ();
- d_quad_filter.reset ();
-
- for (int i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++)
- d_quad_output[i] = 0;
-
- d_timing_adjust = 0;
- d_counter = 0;
- d_symbol_index = 0;
- d_seg_locked = false;
-}
-
-void
-atsci_sssr::update (sssr::sample_t sample_in, // input
- bool *seg_locked, // are we seeing segment syncs?
- int *symbol_index, // 0..831
- double *timing_adjust) // how much to adjust timing
-{
- double qo = d_quad_filter.update (sample_in);
- d_quad_output[d_counter] = qo;
-
- int bit = boost::math::signbit (sample_in);
- if (bit != 0)
- bit = 0;
- else
- bit = 1;
- int corr_out = d_correlator.update (bit);
- int weight = sipp (corr_out);
- int corr_value = d_integrator.update (weight, d_counter);
- int best_correlation_index = -1;
-
- incr_symbol_index ();
- if (incr_counter ()){ // counter just wrapped...
- int best_correlation_value;
- best_correlation_index = d_integrator.find_max (&best_correlation_value);
- d_seg_locked = best_correlation_value >= MIN_SEG_LOCK_CORRELATION_VALUE;
- //std::cout << "best = " << best_correlation_value << " min is " << MIN_SEG_LOCK_CORRELATION_VALUE << std::endl;
- d_timing_adjust = d_quad_output[best_correlation_index];
-
- d_symbol_index = SYMBOL_INDEX_OFFSET - 1 - best_correlation_index;
- if (d_symbol_index < 0)
- d_symbol_index += ATSC_DATA_SEGMENT_LENGTH;
- }
-
- *seg_locked = d_seg_locked;
- *symbol_index = d_symbol_index;
- *timing_adjust = d_timing_adjust;
-
- if (_SSSR_DIAG_OUTPUT_){
- float iodata[7];
- iodata[0] = bit;
- iodata[1] = corr_value;
- iodata[2] = qo;
- iodata[3] = d_counter;
- iodata[4] = d_symbol_index;
- iodata[5] = best_correlation_index;
- iodata[6] = d_timing_adjust;
-
- if (fwrite (iodata, sizeof (iodata), 1, d_debug_fp) != 1){
- perror ("fwrite: sssr");
- exit (1);
- }
- }
-
-}
-
-/*
- * ----------------------------------------------------------------
- * Interpolator control for Seg & Symbol Sync Recovery
- */
-
-static const double LOOP_FILTER_TAP = 0.00025; // 0.0005 works
-static const double ADJUSTMENT_GAIN = 1.0e-5 / (10 * ATSC_DATA_SEGMENT_LENGTH);
-
-atsci_interpolator::atsci_interpolator (double nominal_ratio_of_rx_clock_to_symbol_freq)
- : d_debug_fp(0)
-{
-// Tweaked ratio from 1.8 to 1.78 to support input rate of 19.2MHz
- assert (nominal_ratio_of_rx_clock_to_symbol_freq >= 1.78);
- d_nominal_ratio_of_rx_clock_to_symbol_freq =
- nominal_ratio_of_rx_clock_to_symbol_freq;
-
- d_loop.set_taps (LOOP_FILTER_TAP);
-
- reset ();
-
- if (_SSSR_DIAG_OUTPUT_){
- const char *file = "interp.ssout";
- if ((d_debug_fp = fopen (file, "wb")) == 0){
- perror (file);
- exit (1);
- }
- }
-
-}
-
-atsci_interpolator::~atsci_interpolator ()
-{
- if (d_debug_fp)
- fclose (d_debug_fp);
-}
-
-void
-atsci_interpolator::reset ()
-{
- d_w = d_nominal_ratio_of_rx_clock_to_symbol_freq;
- d_mu = 0.5;
- d_incr = 0;
- d_loop.reset ();
-}
-
-bool
-atsci_interpolator::update (
- const sssr::sample_t input_samples[], // I: vector of samples
- int nsamples, // I: total number of samples
- int *index, // I/O: current input index
- double timing_adjustment, // I: how much to bump timing
- sssr::sample_t *output_sample)
-{
- if (*index + (int) ntaps () > nsamples)
- return false;
-
- // FIXME Confirm that this is right. I think it is. It was (1-d_mu)
- *output_sample = d_interp.interpolate (&input_samples[*index], d_mu);
-
- double filter_out = 0;
-
-#if 0
-
- filter_out = d_loop.filter (timing_adjustment);
- d_w = d_w + ADJUSTMENT_GAIN * filter_out * 1e-3;
-
-#elif 1
-
- filter_out = d_loop.filter (timing_adjustment);
- d_mu = d_mu + ADJUSTMENT_GAIN * 10e3 * filter_out;
-
-#else
-
- static const double alpha = 0.01;
- static const double beta = alpha * alpha / 16;
-
- double x = ADJUSTMENT_GAIN * 10e3 * timing_adjustment;
-
- d_mu = d_mu + alpha * x; // conceptually "phase"
- d_w = d_w + beta * x; // conceptually "frequency"
-
-#endif
-
- double s = d_mu + d_w;
- double float_incr = floor (s);
- d_mu = s - float_incr;
- d_incr = (int) float_incr;
-
- assert (d_incr >= 1 && d_incr <= 3);
- *index += d_incr;
-
- if (_SSSR_DIAG_OUTPUT_){
- float iodata[6];
- iodata[0] = timing_adjustment;
- iodata[1] = filter_out;
- iodata[2] = d_w;
- iodata[3] = d_mu;
- iodata[4] = d_incr;
- iodata[5] = *output_sample;
- if (fwrite (iodata, sizeof (iodata), 1, d_debug_fp) != 1){
- perror ("fwrite: interpolate");
- exit (1);
- }
- }
-
- return true;
-}
diff --git a/gr-atsc/src/lib/atsci_sssr.h b/gr-atsc/src/lib/atsci_sssr.h
deleted file mode 100644
index f3b825b3c..000000000
--- a/gr-atsc/src/lib/atsci_sssr.h
+++ /dev/null
@@ -1,241 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-/*
- * --- ATSC Segment and Symbol Sync Recovery ---
- */
-
-#ifndef _ATSC_SSSR_H_
-#define _ATSC_SSSR_H_
-
-#include <atsc_api.h>
-#include <atsc_consts.h>
-#include <gri_mmse_fir_interpolator.h>
-#include <gr_single_pole_iir.h>
-#include <cstdio>
-
-/*
- * --- support classes for atsci_sssr ---
- */
-
-namespace sssr {
-
- typedef float sample_t;
-
- // ----------------------------------------------------------------
- //! digital correlator for 1001 and 0110 patterns
-
- class ATSC_API digital_correlator {
- int d_sr; // 4 bit shift register
-
- public:
-
- // Constructor
- digital_correlator () { reset (); }
-
- // Manipulators
-
- //! called on channel change
- void reset () { d_sr = 0; }
-
- //! clock bit in and return true if we've seen 1001
-
- bool update (int bit) {
- d_sr = ((bit & 1) << 3) | (d_sr >> 1);
-
- return (d_sr == 0x9); // 1001
- }
-
- };
-
-
- // ----------------------------------------------------------------
- //! segment sync integrator
-
- class ATSC_API seg_sync_integrator {
- signed char d_integrator[ATSC_DATA_SEGMENT_LENGTH];
-
- public:
-
- // Constructor
- seg_sync_integrator () { reset (); }
-
- // Manipulators
-
- //! called on channel change
- void reset ();
-
- //! update current tap with weight and return integrated correlation value
- int update (int weight, int index);
-
- //! return index of maximum correlation value
- int find_max (int *value);
-
- };
-
- // ----------------------------------------------------------------
- //! quad filter (used to compute timing error)
-
- class ATSC_API quad_filter {
- sample_t d_delay[4];
-
- public:
- // Constructor
- quad_filter () { reset (); }
-
- // Manipulators
-
- //! called on channel change
- void reset () { d_delay[0] = d_delay[1] = d_delay[2] = d_delay[3] = 0; }
-
- double update (sample_t sample){
- d_delay[3] = d_delay[2];
- d_delay[2] = d_delay[1];
- d_delay[1] = d_delay[0];
- d_delay[0] = sample;
-
- // the coefficients are -1,-1,+1,+1
- return d_delay[3] + d_delay[2] - d_delay[1] - d_delay[0];
- }
- };
-}
-
-// ----------------------------------------------------------------
-
-/*!
- * \brief ATSC Segment and Symbol Sync Recovery
- *
- * This class implements data segment sync tracking and symbol timing
- * using the method described in "ATSC/VSB Tutorial - Receiver Technology"
- * by Wayne E. Bretl of Zenith, pgs 41-45.
- */
-
-class ATSC_API atsci_sssr {
- sssr::digital_correlator d_correlator;
- sssr::seg_sync_integrator d_integrator;
- sssr::quad_filter d_quad_filter;
- double d_quad_output[ATSC_DATA_SEGMENT_LENGTH];
- double d_timing_adjust;
- int d_counter; // free running mod 832 counter
- int d_symbol_index;
- bool d_seg_locked;
- FILE *d_debug_fp;
-
-
- bool incr_counter () {
- d_counter++;
- if (d_counter >= ATSC_DATA_SEGMENT_LENGTH){
- d_counter = 0;
- return true;
- }
- return false;
- }
-
- void incr_symbol_index () {
- d_symbol_index++;
- if (d_symbol_index >= ATSC_DATA_SEGMENT_LENGTH)
- d_symbol_index = 0;
- }
-
-public:
-
- // Constructor
- atsci_sssr ();
- ~atsci_sssr ();
-
- // Manipulators
-
- //! call on channel change
- void reset ();
-
-
- /*!
- * \brief process a single sample at the ATSC symbol rate (~10.76 MSPS)
- *
- * This block computes an indication of our timing error and keeps
- * track of where the segment sync's occur. \p timing_adjust is
- * returned to indicate how the interpolator timing needs to be
- * adjusted to track the transmitter's symbol timing. If \p seg_locked
- * is true, then \p symbol_index is the index of this sample in
- * the current segment. The symbols are numbered from 0 to 831, where
- * symbols 0, 1, 2 and 3 correspond to the data segment sync pattern,
- * nominally +5, -5, -5, +5.
- */
-
- void update (sssr::sample_t sample_in, // input
- bool *seg_locked, // are we seeing segment syncs?
- int *symbol_index, // 0..831
- double *timing_adjust); // how much to adjust timing
-
-};
-
-// ----------------------------------------------------------------
-
-/*!
- * \brief interpolator control for segment and symbol sync recovery
- */
-
-class ATSC_API atsci_interpolator {
- gri_mmse_fir_interpolator d_interp;
- gr_single_pole_iir<float,float,float> d_loop; // ``VCO'' loop filter
- double d_nominal_ratio_of_rx_clock_to_symbol_freq; // FREQ
- double d_w; // ratio of PERIOD of Tx to Rx clocks
- double d_mu; // fractional delay [0,1]
- int d_incr; // diagnostic only
- FILE *d_debug_fp; // diagnostic only
-
-public:
- //! \p nominal_ratio_of_rx_clock_to_symbol_freq must be >= 1.8
- atsci_interpolator (double nominal_ratio_of_rx_clock_to_symbol_freq);
- ~atsci_interpolator ();
-
- // Manipulators
-
- //! call on channel change
- void reset ();
-
- /*!
- * \brief produce next sample referenced to Tx clock
- *
- * If there aren't enough input_samples left to produce
- * an output, return false, else true.
- */
-
- bool update (const sssr::sample_t input_samples[], // I: vector of samples
- int nsamples, // I: total number of samples
- int *index, // I/O: current input index
- double timing_adjustment, // I: how much to bump timing
- sssr::sample_t *output_sample); // O: the output sample
-
- // Accessors
-
- // how much history we require on our input
- unsigned ntaps () const { return d_interp.ntaps (); }
-
- // diagnostic accessors
- double mu () const { return d_mu; }
- double w () const { return d_w; }
- int incr () const { return d_incr; }
-
-};
-
-#endif /* _ATSC_SSSR_H_ */
diff --git a/gr-atsc/src/lib/atsci_syminfo.h b/gr-atsc/src/lib/atsci_syminfo.h
deleted file mode 100644
index 9f25e4902..000000000
--- a/gr-atsc/src/lib/atsci_syminfo.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_SYMINFO_H_
-#define _ATSC_SYMINFO_H_
-
-namespace atsc {
-
- static const unsigned int SI_SEGMENT_NUM_MASK = 0x1ff;
- static const unsigned int SI_FIELD_SYNC_SEGMENT_NUM = SI_SEGMENT_NUM_MASK; // conceptually -1
-
- struct syminfo {
- unsigned int symbol_num : 10; // 0..831
- unsigned int segment_num : 9; // 0..311 and SI_FIELD_SYNC_SEGMENT_NUM
- unsigned int field_num : 1; // 0..1
- unsigned int valid : 1; // contents are valid
- };
-
-
- static inline bool
- tag_is_start_field_sync (syminfo tag)
- {
- return tag.symbol_num == 0 && tag.segment_num == SI_FIELD_SYNC_SEGMENT_NUM && tag.valid;
- }
-
- static inline bool
- tag_is_start_field_sync_1 (syminfo tag)
- {
- return tag_is_start_field_sync (tag) && tag.field_num == 0;
- }
-
- static inline bool
- tag_is_start_field_sync_2 (syminfo tag)
- {
- return tag_is_start_field_sync (tag) && tag.field_num == 1;
- }
-
-}
-
-#endif /* _ATSC_SYMINFO_H_ */
diff --git a/gr-atsc/src/lib/atsci_sync_tag.h b/gr-atsc/src/lib/atsci_sync_tag.h
deleted file mode 100644
index bdb64c5d3..000000000
--- a/gr-atsc/src/lib/atsci_sync_tag.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _ATSC_SYNC_TAG_H_
-#define _ATSC_SYNC_TAG_H_
-
-/*
- * Constants used to communicate in the second stream passed between
- * GrAtscFSCorrelator, GrAtscEqualizer and GrAtscFieldSyncMux. The
- * second stream is sample-for-sample parallel with the streaming
- * floating point in the first stream. The second stream provides
- * information about alignment boundaries.
- *
- * These are in floating point because the current implementation
- * requires that for a given module, all input streams share the same
- * type and all output streams share the same type. We'd use unsigned
- * char otherwise.
- */
-
-namespace atsc_sync_tag {
-
- // Nothing special
- static const float NORMAL = 0.0;
-
- // The corresponding symbol is the first symbol of the
- // data segment sync sequence { +5, -5, -5, +5 }
- static const float START_SEG_SYNC = 1.0;
-
- // The corresponding symbol is the first symbol of the
- // field sync 1 PN511 pattern.
- static const float START_FIELD_SYNC_1 = 2.0;
-
- // The corresponding symbol is the first symbol of the
- // field sync 2 PN511 pattern.
- static const float START_FIELD_SYNC_2 = 3.0;
-};
-
-#endif /* _ATSC_SYNC_TAG_H_ */
diff --git a/gr-atsc/src/lib/atsci_trellis_encoder.cc b/gr-atsc/src/lib/atsci_trellis_encoder.cc
deleted file mode 100644
index 2b3e851bc..000000000
--- a/gr-atsc/src/lib/atsci_trellis_encoder.cc
+++ /dev/null
@@ -1,208 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_trellis_encoder.h>
-#include <assert.h>
-#include <stdio.h>
-#include <string.h>
-
-static const int DIBITS_PER_BYTE = 4;
-
-#define SEGOF(x) ( (x) / ((SEGMENT_SIZE+1) * DIBITS_PER_BYTE))
-#define SYMOF(x) (((x) % ((SEGMENT_SIZE+1) * DIBITS_PER_BYTE))-4)
-
-/* How many separate Trellis encoders / Viterbi decoders run in parallel */
-static const int NCODERS = 12;
-
-#define ENCODER_SEG_BUMP 4
-
-/* A Segment sync symbol is an 8VSB +5,-5,-5,+5 sequence that occurs at
- the start of each 207-byte segment (including field sync segments). */
-#define DSEG_SYNC_SYM1 0x06 /* +5 */
-#define DSEG_SYNC_SYM2 0x01 /* -5 */
-#define DSEG_SYNC_SYM3 0x01 /* -5 */
-#define DSEG_SYNC_SYM4 0x06 /* +5 */
-
-
-/* Shift counts to bit numbers (high order, low order); 9x entries unused */
-static const int bit1[8] = {1, 99, 3, 98, 5, 97, 7, 96};
-static const int bit2[8] = {0, 99, 2, 98, 4, 97, 6, 96};
-
-
-atsci_trellis_encoder::atsci_trellis_encoder ()
-{
- debug = false;
- reset ();
-}
-
-atsci_trellis_encoder::~atsci_trellis_encoder ()
-{
-}
-
-void
-atsci_trellis_encoder::reset ()
-{
- for (int i = 0; i < NCODERS; i++)
- enc[i].reset ();
-}
-
-void
-atsci_trellis_encoder::encode (atsc_data_segment out[NCODERS],
- const atsc_mpeg_packet_rs_encoded in[NCODERS])
-{
- unsigned char out_copy[OUTPUT_SIZE];
- unsigned char in_copy[INPUT_SIZE];
-
- assert (sizeof (in_copy) == sizeof (in[0].data) * NCODERS);
- assert (sizeof (out_copy) == sizeof (out[0].data) * NCODERS);
-
- // copy input into continguous temporary buffer
- for (int i = 0; i < NCODERS; i++){
- assert (in[i].pli.regular_seg_p ());
- plinfo::sanity_check (in[i].pli);
- memcpy (&in_copy[i * INPUT_SIZE/NCODERS],
- &in[i].data[0],
- ATSC_MPEG_RS_ENCODED_LENGTH * sizeof (in_copy[0]));
- }
-
- memset (out_copy, 0, sizeof (out_copy)); // FIXME, sanity check
-
- // do the deed...
- encode_helper (out_copy, in_copy);
-
- // copy output from contiguous temp buffer into final output
- for (int i = 0; i < NCODERS; i++){
- memcpy (&out[i].data[0],
- &out_copy[i * OUTPUT_SIZE/NCODERS],
- ATSC_DATA_SEGMENT_LENGTH * sizeof (out_copy[0]));
-
- // copy pipeline info
- out[i].pli = in[i].pli;
-
- plinfo::sanity_check (out[i].pli);
- assert (out[i].pli.regular_seg_p ());
- }
-}
-
-/*
- * This code expects contiguous arrrays. Use it as is, it computes
- * the correct answer. Maybe someday, when we've run out of better
- * things to do, rework to avoid the copying in encode.
- */
-void
-atsci_trellis_encoder::encode_helper (unsigned char output[OUTPUT_SIZE],
- const unsigned char input[INPUT_SIZE])
-{
- int i;
- int encoder;
- unsigned char trellis_buffer[NCODERS];
- int trellis_wherefrom[NCODERS];
- unsigned char *out, *next_out_seg;
- int chunk;
- int shift;
- unsigned char dibit;
- unsigned char symbol;
- int skip_encoder_bump;
-
- /* FIXME, we may want special processing here
- for a flag byte to keep track of which part of the field we're in? */
-
- encoder = NCODERS - ENCODER_SEG_BUMP;
- skip_encoder_bump = 0;
- out = output;
- next_out_seg = out;
-
- for (chunk = 0;
- chunk < INPUT_SIZE;
- chunk += NCODERS) {
- /* Load a new chunk of bytes into the Trellis encoder buffers.
- They get loaded in an order that depends on where we are in the
- segment sync progress (sigh).
- GRR! When the chunk reload happens at the same time as the
- segment boundary, we should bump the encoder NOW for the reload,
- rather than LATER during the bitshift transition!!! */
- if (out >= next_out_seg) {
- encoder = (encoder + ENCODER_SEG_BUMP) % NCODERS;
- skip_encoder_bump = 1;
- }
-
- for (i = 0; i < NCODERS; i++) {
- /* for debug */ trellis_wherefrom[encoder] = chunk+i;
- trellis_buffer[encoder] = input [chunk+i];
- encoder++;
- if (encoder >= NCODERS) encoder = 0;
- }
-
- for (shift = 6; shift >= 0; shift -= 2) {
-
- /* Segment boundaries happen to occur on some bitshift transitions. */
- if (out >= next_out_seg) {
- /* Segment transition. Output a data segment sync symbol, and
- mess with the trellis encoder mux. */
- *out++ = DSEG_SYNC_SYM1;
- *out++ = DSEG_SYNC_SYM2;
- *out++ = DSEG_SYNC_SYM3;
- *out++ = DSEG_SYNC_SYM4;
- if (debug) printf ("SYNC SYNC SYNC SYNC\n");
- next_out_seg = out + (SEGMENT_SIZE * DIBITS_PER_BYTE);
-
- if (!skip_encoder_bump)
- encoder = (encoder + ENCODER_SEG_BUMP) % NCODERS;
- skip_encoder_bump = 0;
- }
-
- /* Now run each of the 12 Trellis encoders to spit out 12 symbols.
- Each encoder takes input from the same byte of the chunk, but the
- outputs of the encoders come out in various orders.
- NOPE -- this is false. The encoders take input from various
- bytes of the chunk (which changes at segment sync time), AND
- they also come out in various orders. You really do have to
- keep separate track of: the input bytes, the encoders, and
- the output bytes -- because they're all moving with respect to
- each other!!! */
- for (i = 0; i < NCODERS; i++) {
- dibit = 0x03 & (trellis_buffer[encoder] >> shift);
- if (debug)
- printf ("Seg %ld Symb %3ld Trell %2d Byte %6d Bits %d-%d = dibit %d ",
- (long) SEGOF(out-output), (long) SYMOF(out-output),
- encoder, trellis_wherefrom[encoder],
- bit1[shift], bit2[shift], dibit);
- symbol = enc[encoder].encode (dibit);
- *out++ = symbol;
- encoder++; if (encoder >= NCODERS) encoder = 0;
- if (debug) printf ("sym %d\n", symbol);
- } /* Encoders */
- } /* Bit shifts */
- } /* Chunks */
-
- /* Check up on ourselves */
-#if 0
- assertIntsEqual (0, (INPUT_SIZE * DIBITS_PER_BYTE) % NCODERS, "not %");
- assertIntsEqual (OUTPUT_SIZE, out - output, "outptr");
- assertIntsEqual (NCODERS - ENCODER_SEG_BUMP, encoder, "mux sync");
-#else
- assert (0 == (INPUT_SIZE * DIBITS_PER_BYTE) % NCODERS);
- assert (OUTPUT_SIZE == out - output);
- assert (NCODERS - ENCODER_SEG_BUMP == encoder);
-#endif
-}
-
diff --git a/gr-atsc/src/lib/atsci_trellis_encoder.h b/gr-atsc/src/lib/atsci_trellis_encoder.h
deleted file mode 100644
index 294ad860f..000000000
--- a/gr-atsc/src/lib/atsci_trellis_encoder.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_TRELLIS_ENCODER_H_
-#define _ATSC_TRELLIS_ENCODER_H_
-
-#include <atsc_api.h>
-#include <atsci_basic_trellis_encoder.h>
-#include <atsc_types.h>
-
-/*!
- * \brief fancy, schmancy 12-way interleaved trellis encoder for ATSC
- */
-
-class ATSC_API atsci_trellis_encoder {
- public:
- static const int NCODERS = 12;
-
- atsci_trellis_encoder ();
- ~atsci_trellis_encoder ();
-
- //! reset all encoder states
- void reset ();
-
- /*!
- * Take 12 RS encoded, convolutionally interleaved segments and
- * produce 12 trellis coded data segments. We work in groups of 12
- * because that's the smallest number of segments that composes a
- * single full cycle of the encoder mux.
- */
- void encode (atsc_data_segment out[NCODERS],
- const atsc_mpeg_packet_rs_encoded in[NCODERS]);
-
-
- protected:
- static const int SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH; // 207
- static const int INPUT_SIZE = (SEGMENT_SIZE * 12);
- static const int OUTPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12);
-
- void encode_helper (unsigned char out[OUTPUT_SIZE],
- const unsigned char in[INPUT_SIZE]);
-
- atsci_basic_trellis_encoder enc[NCODERS];
- bool debug;
-};
-
-
-#endif /* _ATSC_TRELLIS_ENCODER_H_ */
diff --git a/gr-atsc/src/lib/atsci_viterbi_decoder.cc b/gr-atsc/src/lib/atsci_viterbi_decoder.cc
deleted file mode 100644
index 8804f6007..000000000
--- a/gr-atsc/src/lib/atsci_viterbi_decoder.cc
+++ /dev/null
@@ -1,176 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsci_viterbi_decoder.h>
-#include <assert.h>
-#include <stdio.h>
-#include <cmath>
-#include "atsci_viterbi_mux.cc"
-#include <string.h>
-
-
-/* How many separate Trellis encoders / Viterbi decoders run in parallel */
-static const int NCODERS = 12;
-
-static const float DSEG_SYNC_SYM1 = 5;
-static const float DSEG_SYNC_SYM2 = -5;
-static const float DSEG_SYNC_SYM3 = -5;
-static const float DSEG_SYNC_SYM4 = 5;
-
-atsci_viterbi_decoder::atsci_viterbi_decoder ()
-{
- debug = true;
-
- /*
- * These fifo's handle the alignment problem caused by the
- * inherent decoding delay of the individual viterbi decoders.
- * The net result is that this entire block has a pipeline latency
- * of 12 complete segments.
- *
- * If anybody cares, it is possible to do it with less delay, but
- * this approach is at least somewhat understandable...
- */
-
- // the -4 is for the 4 sync symbols
- int fifo_size = ATSC_DATA_SEGMENT_LENGTH - 4 - viterbi[0].delay ();
- for (int i = 0; i < NCODERS; i++)
- fifo[i] = new fifo_t(fifo_size);
-
- reset ();
-}
-
-atsci_viterbi_decoder::~atsci_viterbi_decoder ()
-{
- for (int i = 0; i < NCODERS; i++)
- delete fifo[i];
-}
-
-void
-atsci_viterbi_decoder::reset ()
-{
- for (int i = 0; i < NCODERS; i++){
- viterbi[i].reset ();
- fifo[i]->reset ();
- }
-}
-
-
-void
-atsci_viterbi_decoder::decode (atsc_mpeg_packet_rs_encoded out[NCODERS],
- const atsc_soft_data_segment in[NCODERS])
-{
- unsigned char out_copy[OUTPUT_SIZE];
- float in_copy[INPUT_SIZE];
-
- // copy input into continguous temporary buffer
- for (int i = 0; i < NCODERS; i++){
- assert (in[i].pli.regular_seg_p ());
- memcpy (&in_copy[i * INPUT_SIZE/NCODERS],
- &in[i].data[0],
- ATSC_DATA_SEGMENT_LENGTH * sizeof (in_copy[0]));
- }
-
- memset (out_copy, 0, sizeof (out_copy)); // sanity check
-
- // do the deed...
- decode_helper (out_copy, in_copy);
-
- // copy output from contiguous temp buffer into final output
- for (int i = 0; i < NCODERS; i++){
- memcpy (&out[i].data[0],
- &out_copy[i * OUTPUT_SIZE/NCODERS],
- ATSC_MPEG_RS_ENCODED_LENGTH * sizeof (out_copy[0]));
-
-
- // adjust pipeline info to reflect 12 segment delay
- plinfo::delay (out[i].pli, in[i].pli, NCODERS);
- }
-}
-
-void
-atsci_viterbi_decoder::decode_helper (unsigned char out[OUTPUT_SIZE],
- const float symbols_in[INPUT_SIZE])
-{
- int encoder;
- unsigned int i;
- int dbi;
- int dbwhere;
- int dbindex;
- int shift;
- unsigned char dibit;
- float symbol;
-
- /* Memset is not necessary if it's all working... */
- memset (out, 0, OUTPUT_SIZE);
-
-#define VERBOSE 0
-
-#if 1
- /* Check for sync symbols in the incoming data stream */
- /* For now, all we do is complain to stdout. FIXME, pass it back to
- caller as an error/quality signal. */
- for (i = 0; i < sync_symbol_indices_max; i++) {
- int j = sync_symbol_indices[i];
- if (fabsf (symbols_in[j] - DSEG_SYNC_SYM1) > 1.0)
- if (VERBOSE) fprintf (stderr, "** Missing dataseg sync 1 at %d, expect %g, got %g.\n",
- j, DSEG_SYNC_SYM1, symbols_in[j]);
- j++;
- if (fabsf (symbols_in[j] - DSEG_SYNC_SYM2) > 1.0)
- if (VERBOSE) fprintf (stderr, "** Missing dataseg sync 2 at %d, expect %g, got %g.\n",
- j, DSEG_SYNC_SYM2, symbols_in[j]);
- j++;
- if (fabsf (symbols_in[j] - DSEG_SYNC_SYM3) > 1.0)
- if (VERBOSE) fprintf (stderr, "** Missing dataseg sync 3 at %d, expect %g, got %g.\n",
- j, DSEG_SYNC_SYM3, symbols_in[j]);
- j++;
- if (fabsf (symbols_in[j] - DSEG_SYNC_SYM4) > 1.0)
- if (VERBOSE) fprintf (stderr, "** Missing dataseg sync 4 at %d, expect %g, got %g.\n",
- j, DSEG_SYNC_SYM4, symbols_in[j]);
- }
-#endif
-#undef VERBOSE
-
- // printf ("@@@ DIBITS @@@\n");
-
- /* Now run each of the 12 Trellis encoders over their subset of
- the input symbols */
- for (encoder = 0; encoder < NCODERS; encoder++) {
- dbi = 0; /* Reinitialize dibit index for new encoder */
- fifo_t *dibit_fifo = fifo[encoder];
-
- /* Feed all the incoming symbols into one encoder;
- pump them into the relevant dibits. */
- for (i = 0; i < enco_which_max; i++) {
- symbol = symbols_in[enco_which_syms[encoder][i]];
- dibit = dibit_fifo->stuff (viterbi[encoder].decode (symbol));
- // printf ("%d\n", dibit);
- /* Store the dibit into the output data segment */
- dbwhere = enco_which_dibits[encoder][dbi++];
- dbindex = dbwhere >> 3;
- shift = dbwhere & 0x7;
- out[dbindex] =
- (out[dbindex] & ~(0x03 << shift)) | (dibit << shift);
- } /* Symbols fed into one encoder */
- } /* Encoders */
-
- // fflush (stdout);
-}
diff --git a/gr-atsc/src/lib/atsci_viterbi_decoder.h b/gr-atsc/src/lib/atsci_viterbi_decoder.h
deleted file mode 100644
index f339ce79a..000000000
--- a/gr-atsc/src/lib/atsci_viterbi_decoder.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_VITERBI_DECODER_H_
-#define _ATSC_VITERBI_DECODER_H_
-
-#define USE_SIMPLE_SLICER 0
-
-#include <atsc_api.h>
-#include <atsc_types.h>
-#include <interleaver_fifo.h>
-
-#if (USE_SIMPLE_SLICER)
-#include <atsci_fake_single_viterbi.h>
-typedef atsci_fake_single_viterbi single_viterbi_t;
-#else
-#include <atsci_single_viterbi.h>
-typedef atsci_single_viterbi single_viterbi_t;
-#endif
-
-/*!
- * \brief fancy, schmancy 12-way interleaved viterbi decoder for ATSC
- */
-
-class ATSC_API atsci_viterbi_decoder {
-public:
- static const int NCODERS = 12;
-
- atsci_viterbi_decoder ();
- ~atsci_viterbi_decoder ();
-
- //! reset all decoder states
- void reset ();
-
- /*!
- * Take 12 data segments of soft decisions (floats) and
- * produce 12 RS encoded data segments. We work in groups of 12
- * because that's the smallest number of segments that composes a
- * single full cycle of the decoder mux.
- */
- void decode (atsc_mpeg_packet_rs_encoded out[NCODERS],
- const atsc_soft_data_segment in[NCODERS]);
-
-
-
- protected:
- typedef interleaver_fifo<unsigned char> fifo_t;
-
- static const int SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH; // 207
- static const int OUTPUT_SIZE = (SEGMENT_SIZE * 12);
- static const int INPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12);
-
- void decode_helper (unsigned char out[OUTPUT_SIZE],
- const float in[INPUT_SIZE]);
-
-
- single_viterbi_t viterbi[NCODERS];
- fifo_t *fifo[NCODERS];
- bool debug;
-
-};
-
-
-
-#endif /* _ATSC_VITERBI_DECODER_H_ */
diff --git a/gr-atsc/src/lib/atsci_viterbi_gen.cc b/gr-atsc/src/lib/atsci_viterbi_gen.cc
deleted file mode 100644
index bff3c4773..000000000
--- a/gr-atsc/src/lib/atsci_viterbi_gen.cc
+++ /dev/null
@@ -1,267 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <iostream>
-#include <stdio.h>
-
-using std::cerr;
-
-/*
- * Trellis-encode a whole pile of 12 data segments for ATSC.
- * This also includes scrambling the data among twelve Trellis encoders.
- *
- * Input is twelve 207-byte blocks of raw data (Reed-Solomon output that's
- * been scrambled up by interleaving with other blocks).
- *
- * Output is 12 x 208 x 4 bytes, each byte containing a 3-bit symbol.
- * The first 4 bytes are the segment sync symbol.
- *
- Got the first version of Trellis encoder coded. Compiles, but I
- didn't realize that each data segment contains an odd number of BITS!
- The second data segment in a field starts by pulling bits out of the
- middles of the bytes it's encoding. You actually have to read all the
- entries in that table on page 59 AND 60 to get it.
-
- There's a 4-segment asymmetric pattern of bit accesses.
- There's a 3-segment asymmetric pattern of muxing encoders.
-
- The result is there's a 12-segment pattern that repeats throughout
- the encoding of a field. So this routine now encodes 12 segments at once.
-
- This encoding system was either designed by a complete idiot or by
- a complete genius. It's highly complex when it could have been very
- simple. Now the question is whether
- this incredible complexity buys us anything subtle and important.
- */
-
-#define SEGMENT_SIZE 207
-#define INPUT_SIZE (SEGMENT_SIZE * 12)
-#define DIBITS_PER_BYTE 4
-#define EXTRAS (4 * 12) /* FIXME, sync symbols and such */
-#define SYMBOLS_OUT ((INPUT_SIZE * DIBITS_PER_BYTE) + EXTRAS)
-#define SEGOF(x) ( (x) / ((SEGMENT_SIZE+1) * DIBITS_PER_BYTE))
-#define SYMOF(x) (((x) % ((SEGMENT_SIZE+1) * DIBITS_PER_BYTE))-4)
-#define ENCODERS 12
-#define ENCODER_SEG_BUMP 4
-
-
-/* Shift counts to bit numbers (high order, low order); 9x entries unused */
-static const int bit1[8] = {1, 99, 3, 98, 5, 97, 7, 96};
-static const int bit2[8] = {0, 99, 2, 98, 4, 97, 6, 96};
-
-/* Detailed Debugging */
-int debug_dec = 0;
-
-/*
- * Build indirect data structures to say which symbols go into which
- * encoder, and then where the resulting dibits from the encoders go.
- */
-int
-build_decode_structures (char *fileout)
-{
- int retval = 0;
- int i;
- int encoder;
- int trellis_wheredata[ENCODERS];
- unsigned char *symp, *next_sym_seg;
- unsigned char symbols[SYMBOLS_OUT];
- int chunk;
- int shift;
- int skip_encoder_bump;
- int *enco_syms[ENCODERS];
- int *enco_dibits[ENCODERS];
- int j;
- /* The data structures we'll build and then spit out... */
- int sync_symbol_indices[1000];
- int sync_symbol_indices_max;
- int enco_which_syms[ENCODERS][INPUT_SIZE];
- int enco_which_dibits[ENCODERS][INPUT_SIZE];
- int enco_which_max;
- #define BIT_PTR(int,shif) (((int) << 3) | ((shif) & 0x7))
- /* Running indices into them as we build 'em... */
- int *syncsyms = sync_symbol_indices;
-
- /* Start our running pointers at the start of our per-encoder subarrays */
- for (i = 0; i < ENCODERS; i++) {
- enco_dibits[i] = enco_which_dibits[i];
- enco_syms[i] = enco_which_syms[i];
- }
-
- encoder = ENCODERS - ENCODER_SEG_BUMP;
- skip_encoder_bump = 0;
- symp = symbols;
- next_sym_seg = symp;
-
- for (chunk = 0;
- chunk < INPUT_SIZE;
- chunk += ENCODERS) {
- /* Associate data bytes with the Trellis encoders.
- They get loaded or stored in an order that depends on where we are in the
- segment sync progress (sigh).
- GRR! When the chunk reload happens at the same time as the
- segment boundary, we should bump the encoder NOW for the reload,
- rather than LATER during the bitshift transition!!! */
- if (symp >= next_sym_seg) {
- encoder = (encoder + ENCODER_SEG_BUMP) % ENCODERS;
- skip_encoder_bump = 1;
- }
-
- /* Remember where the data bytes are going to go, once we've
- accumulated them from the 12 interleaved decoders */
- for (i = 0; i < ENCODERS; i++) {
- trellis_wheredata[encoder] = chunk+i;
- encoder++;
- if (encoder >= ENCODERS) encoder = 0;
- }
-
- for (shift = 6; shift >= 0; shift -= 2) {
-
- /* Segment boundaries happen to occur on some bitshift transitions. */
- if (symp >= next_sym_seg) {
- /* Segment transition. Output a data segment sync symbol, and
- mess with the trellis encoder mux. */
- *syncsyms++ = symp - symbols;
- symp += 4;
- next_sym_seg = symp + (SEGMENT_SIZE * DIBITS_PER_BYTE);
-
- if (!skip_encoder_bump)
- encoder = (encoder + ENCODER_SEG_BUMP) % ENCODERS;
- skip_encoder_bump = 0;
- }
-
- /* Now run each of the 12 Trellis encoders to spit out 12 symbols.
- Each encoder takes input from the same byte of the chunk, but the
- outputs of the encoders come out in various orders.
- NOPE -- this is false. The encoders take input from various
- bytes of the chunk (which changes at segment sync time), AND
- they also come out in various orders. You really do have to
- keep separate track of: the datasegs bytes, the encoders, and
- the symbol bytes -- because they're all moving with respect to
- each other!!! */
- for (i = 0; i < ENCODERS; i++) {
- if (debug_dec)
- printf ("Seg %ld Symb %3ld Trell %2d Byte %6d Bits %d-%d = ",
- (long) SEGOF(symp-symbols), (long) SYMOF(symp-symbols),
- encoder, trellis_wheredata[encoder],
- bit1[shift], bit2[shift]);
-
- /* Decoding: Grab symbol, run through decoder, slice dibit into
- buffer. */
- /* This symbol goes into this encoder next */
- *(enco_syms[encoder]++) = symp - symbols;
- symp++;
- /* The next output from this encoder goes into these dibits */
- *(enco_dibits[encoder]++) = BIT_PTR(trellis_wheredata[encoder], shift);
-
- encoder++; if (encoder >= ENCODERS) encoder = 0;
- } /* Encoders */
- } /* Bit shifts */
-
-#if 0
- /* Now dump out the chunk of 12 data bytes that the twelve decoders have
- accumulated. */
- unsigned char trellis_buffer[ENCODERS];
- unsigned char dibit;
- unsigned char symbol;
- int save_state;
- for (i = 0; i < ENCODERS; i++) {
- datasegs [trellis_wheredata[encoder]] = trellis_buffer[encoder];
- encoder++;
- if (encoder >= ENCODERS) encoder = 0;
- } /* Dumping encoder bytes */
-#endif
- } /* Chunks */
-
- /* Now print the resulting data structures in C++ */
-
- if (!freopen(fileout, "w", stdout))
- return 2;
-
- printf ("/*\n\
- * atsc_viterbi_mux.cc\n\
- *\n\
- * Data structures for knowing which symbols are fed to which\n\
- * Viterbi decoders, and then where to put the resulting output dibits.\n\
- *\n\
- * Generated by 'atsc_viterbi_gen.cc'.\n\
- */\n\n");
- sync_symbol_indices_max = syncsyms - sync_symbol_indices;
- printf ("const unsigned int sync_symbol_indices_max = %d;\n",
- sync_symbol_indices_max);
- printf ("const unsigned int sync_symbol_indices[%d] = {\n ",
- sync_symbol_indices_max);
- for (i = 0; i < sync_symbol_indices_max; i++) {
- printf ("%d,%s", sync_symbol_indices[i], (7 == i%8)? "\n ": " ");
- }
- printf ("};\n\n");
-
- enco_which_max = enco_dibits[0] - enco_which_dibits[0];
- for (i = 0; i < ENCODERS; i++)
- if (enco_which_max != enco_dibits[i] - enco_which_dibits[i]) {
- cerr << "Encoder " << i << " has different max_dibits " <<
- enco_dibits[i] - enco_which_dibits[i] << " than " << enco_which_max;
- retval = 3;
- }
-
- printf ("const unsigned int enco_which_max = %d;\n" , enco_which_max);
-
- printf ("const unsigned int enco_which_syms[%d][%d] = {\n",
- ENCODERS, enco_which_max);
- for (i = 0; i < ENCODERS; i++) {
- printf (" /* %d */\n {", i);
- for (j = 0; j < enco_which_max; j++)
- printf ("%d,%s", enco_which_syms[i][j], (7 == j%8)? "\n ": " ");
- printf ("},\n");
- }
- printf ("};\n\n");
-
- printf ("const unsigned int enco_which_dibits[%d][%d] = {\n",
- ENCODERS, enco_which_max);
- for (i = 0; i < ENCODERS; i++) {
- printf (" /* %d */\n {", i);
- for (j = 0; j < enco_which_max; j++)
- printf ("%d,%s", enco_which_dibits[i][j], (7 == j%8)? "\n ": " ");
- printf ("},\n");
- }
- printf ("};\n\n");
- return retval;
-}
-
-int
-usage()
-{
- cerr << "atsc_viterbi_gen: Usage:\n";
- cerr << " ./atsc_viterbi_gen -o atsc_viterbi_mux.cc\n";
- cerr << "That's all, folks!\n";
- return 1;
-}
-
-
-int
-main(int argc, char **argv)
-{
- if (argc != 3) return usage();
- if (argv[1][0] != '-'
- || argv[1][1] != 'o'
- || argv[1][2] != 0 ) return usage();
- return build_decode_structures(argv[2]);
-}
diff --git a/gr-atsc/src/lib/atsci_vsbtx_lp.cc b/gr-atsc/src/lib/atsci_vsbtx_lp.cc
deleted file mode 100644
index 704cd00ca..000000000
--- a/gr-atsc/src/lib/atsci_vsbtx_lp.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsc_consts.h>
-#include <atsci_vsbtx_lp.h>
-#include <stdexcept>
-#include <cmath>
-#include <iostream>
-
-using std::vector;
-using std::cerr;
-using std::endl;
-
-// atsc root raised cosine filter, sampling rate = 21.52 MHz
-static const float atsc_vsbtx_lp2x[] = {
-#include "atsc_vsbtx_lp.dat"
-};
-
-#define NELEM(x) (sizeof (x) / sizeof ((x)[0]))
-
-// is a within 5% of target?
-
-static bool
-close_enough_p (double a, double target)
-{
- double delta = fabs (target * 0.05); // 5 percent
-
- return fabs (target - a) <= delta;
-}
-
-vector<float>
-atsc_vsbtx_lp::taps (double sampling_freq)
-{
- if (close_enough_p (sampling_freq, 2 * ATSC_SYMBOL_RATE)){
- return vector<float>(&atsc_vsbtx_lp2x[0], &atsc_vsbtx_lp2x[NELEM(atsc_vsbtx_lp2x)]);
- }
- else
- throw std::out_of_range (
- "atsc_vsbtx_lp: no pre-designed filter close enough");
-}
diff --git a/gr-atsc/src/lib/atsci_vsbtx_lp.dat b/gr-atsc/src/lib/atsci_vsbtx_lp.dat
deleted file mode 100644
index 0fa54d42b..000000000
--- a/gr-atsc/src/lib/atsci_vsbtx_lp.dat
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * FILTER SPECIFICATION FILE
- * FILTER TYPE:LOW PASS 1H
- * PASSBAND RIPPLE IN -dB -.0100
- * STOPBAND RIPPLE IN -dB -76.0000
- * PASSBAND CUTOFF FREQUENCY .250000 HERTZ
- * STOPBAND CUTOFF FREQUENCY .360000 HERTZ
- * SAMPLING FREQUENCY 1.00000 HERTZ
- */
-/*
- * gain of 2
- */
- 9.23312269151211e-04,
- 8.75200144946575e-04,
- -2.89211887866259e-03,
- 1.31580047309399e-04,
- 6.72745611518621e-03,
- -5.82943391054869e-03,
- -8.86140950024128e-03,
- 1.84674616903067e-02,
- 1.27039104700089e-03,
- -3.39064113795757e-02,
- 2.52537783235312e-02,
- 3.74889532104135e-02,
- -7.35438484698534e-02,
- -3.70154529809952e-03,
- 1.33745657280087e-01,
- -1.12098718993366e-01,
- -1.84760546311736e-01,
- 5.98605459555984e-01,
- 1.20420956425369e+00,
- 5.98605459555984e-01,
- -1.84760546311736e-01,
- -1.12098718993366e-01,
- 1.33745657280087e-01,
- -3.70154529809952e-03,
- -7.35438484698534e-02,
- 3.74889532104135e-02,
- 2.52537783235312e-02,
- -3.39064113795757e-02,
- 1.27039104700089e-03,
- 1.84674616903067e-02,
- -8.86140950024128e-03,
- -5.82943391054869e-03,
- 6.72745611518621e-03,
- 1.31580047309399e-04,
- -2.89211887866259e-03,
- 8.75200144946575e-04,
- 9.23312269151211e-04
diff --git a/gr-atsc/src/lib/atsci_vsbtx_lp.h b/gr-atsc/src/lib/atsci_vsbtx_lp.h
deleted file mode 100644
index b892641c9..000000000
--- a/gr-atsc/src/lib/atsci_vsbtx_lp.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _ATSC_VSBTX_LP_H_
-#define _ATSC_VSBTX_LP_H_
-
-#include <atsc_api.h>
-#include <gr_fir_builder.h>
-
-class ATSC_API atsc_vsbtx_lp : public gr_fir_builder
-{
-public:
- virtual std::vector<float> taps (double sampling_freq);
-};
-
-
-
-#endif /* _ATSC_VSBTX_LP_H_ */
diff --git a/gr-atsc/src/lib/convolutional_interleaver.h b/gr-atsc/src/lib/convolutional_interleaver.h
deleted file mode 100644
index 35a31d487..000000000
--- a/gr-atsc/src/lib/convolutional_interleaver.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _CONVOLUTIONAL_INTERLEAVER_H_
-#define _CONVOLUTIONAL_INTERLEAVER_H_
-
-#include <vector>
-#include <interleaver_fifo.h>
-#include <assert.h>
-
-/*!
- * \brief template class for generic convolutional interleaver
- */
-
-template<class symbol_type>
-class convolutional_interleaver {
- public:
-
- convolutional_interleaver (bool interleave_p, int nbanks, int fifo_size_incr);
- virtual ~convolutional_interleaver ();
-
- //! reset interleaver (flushes contents and resets commutator)
- void reset ();
-
- //! sync interleaver (resets commutator, but doesn't flush fifos)
- void sync () { m_commutator = 0; }
-
- //! return end to end delay in symbols (delay through concatenated interleaver / deinterleaver)
- int end_to_end_delay ();
-
- //! transform a single symbol
- symbol_type transform (symbol_type input){
- symbol_type retval = m_fifo[m_commutator]->stuff (input);
- m_commutator++;
- if (m_commutator >= m_nbanks)
- m_commutator = 0;
- return retval;
- }
-
- //! transform a bunch of symbols
- void transform (symbol_type *out, const symbol_type *in, int nsymbols);
-
-protected:
- int m_commutator;
- int m_nbanks;
- int m_fifo_size_incr;
- std::vector<interleaver_fifo<symbol_type> *> m_fifo;
-};
-
-template<class symbol_type>
-convolutional_interleaver<symbol_type>::convolutional_interleaver (
- bool interleave_p,
- int nbanks,
- int fifo_size_incr)
-{
- assert (nbanks >= 1);
- assert (fifo_size_incr >= 1);
-
- m_nbanks = nbanks;
- m_fifo_size_incr = fifo_size_incr;
-
- m_fifo.resize (nbanks);
-
- if (interleave_p){ // configure as interleaver
- for (int i = 0; i < nbanks; i++)
- m_fifo[i] = new interleaver_fifo<symbol_type>(i * fifo_size_incr);
- }
- else { // configure as de-interleaver
- for (int i = 0; i < nbanks; i++)
- m_fifo[nbanks - 1 - i] = new interleaver_fifo<symbol_type>(i * fifo_size_incr);
- }
- sync ();
-}
-
-template<class symbol_type>
-convolutional_interleaver<symbol_type>::~convolutional_interleaver ()
-{
- for (int i = 0; i < m_nbanks; i++)
- delete m_fifo[i];
-}
-
-template<class symbol_type> void
-convolutional_interleaver<symbol_type>::reset ()
-{
- sync ();
- for (int i = 0; i < m_nbanks; i++)
- m_fifo[i]->reset ();
-}
-
-template<class symbol_type> int
-convolutional_interleaver<symbol_type>::end_to_end_delay ()
-{
- int m = m_nbanks * m_fifo_size_incr;
- return m * (m_nbanks - 1);
-}
-
-template<class symbol_type> void
-convolutional_interleaver<symbol_type>::transform (symbol_type *out,
- const symbol_type *in,
- int nsymbols)
-{
- // we may want to unroll this a couple of times...
- for (int i = 0; i < nsymbols; i++)
- out[i] = transform (in[i]);
-}
-
-#endif /* _CONVOLUTIONAL_INTERLEAVER_H_ */
diff --git a/gr-atsc/src/lib/create_atsci_equalizer.cc b/gr-atsc/src/lib/create_atsci_equalizer.cc
deleted file mode 100644
index f784116d2..000000000
--- a/gr-atsc/src/lib/create_atsci_equalizer.cc
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <create_atsci_equalizer.h>
-#include <atsci_equalizer_nop.h>
-#include <atsci_equalizer_lms.h>
-#include <atsci_equalizer_lms2.h>
-
-atsci_equalizer *
-create_atsci_equalizer_nop ()
-{
- return new atsci_equalizer_nop ();
-}
-
-atsci_equalizer *
-create_atsci_equalizer_lms ()
-{
- return new atsci_equalizer_lms ();
-}
-
-atsci_equalizer *
-create_atsci_equalizer_lms2 ()
-{
- return new atsci_equalizer_lms2 ();
-}
diff --git a/gr-atsc/src/lib/create_atsci_equalizer.h b/gr-atsc/src/lib/create_atsci_equalizer.h
deleted file mode 100644
index b291e0bbd..000000000
--- a/gr-atsc/src/lib/create_atsci_equalizer.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _CREATE_ATSC_EQUALIZER_H_
-#define _CREATE_ATSC_EQUALIZER_H_
-
-#include <atsc_api.h>
-
-class atsci_equalizer;
-
-ATSC_API atsci_equalizer *create_atsci_equalizer_nop ();
-ATSC_API atsci_equalizer *create_atsci_equalizer_lms ();
-ATSC_API atsci_equalizer *create_atsci_equalizer_lms2 ();
-
-#endif /* _CREATE_ATSC_EQUALIZER_H_ */
diff --git a/gr-atsc/src/lib/create_atsci_fs_checker.cc b/gr-atsc/src/lib/create_atsci_fs_checker.cc
deleted file mode 100644
index 5b9a4092c..000000000
--- a/gr-atsc/src/lib/create_atsci_fs_checker.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <create_atsci_fs_checker.h>
-#include <atsci_fs_checker_naive.h>
-
-atsci_fs_checker *
-create_atsci_fs_checker ()
-{
- return new atsci_fs_checker_naive ();
-}
diff --git a/gr-atsc/src/lib/create_atsci_fs_checker.h b/gr-atsc/src/lib/create_atsci_fs_checker.h
deleted file mode 100644
index 42119a6d4..000000000
--- a/gr-atsc/src/lib/create_atsci_fs_checker.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _CREATE_ATSC_FS_CHECKER_H_
-#define _CREATE_ATSC_FS_CHECKER_H_
-
-#include <atsc_api.h>
-
-class atsci_fs_checker;
-
-/*!
- * Factory that creates appropriate atsci_fs_checker
- */
-ATSC_API atsci_fs_checker *create_atsci_fs_checker ();
-
-
-#endif /* _CREATE_ATSC_FS_CHECKER_H_ */
diff --git a/gr-atsc/src/lib/create_atsci_fs_correlator.cc b/gr-atsc/src/lib/create_atsci_fs_correlator.cc
deleted file mode 100644
index 414b2d7f4..000000000
--- a/gr-atsc/src/lib/create_atsci_fs_correlator.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <create_atsci_fs_correlator.h>
-#include <atsci_fs_correlator_naive.h>
-
-atsci_fs_correlator *
-create_atsci_fs_correlator ()
-{
- return new atsci_fs_correlator_naive ();
-}
diff --git a/gr-atsc/src/lib/create_atsci_fs_correlator.h b/gr-atsc/src/lib/create_atsci_fs_correlator.h
deleted file mode 100644
index b9b037403..000000000
--- a/gr-atsc/src/lib/create_atsci_fs_correlator.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _CREATE_ATSC_FS_CORRELATOR_H_
-#define _CREATE_ATSC_FS_CORRELATOR_H_
-
-#include <atsc_api.h>
-
-class atsci_fs_correlator;
-
-/*!
- * Factory that creates appropriate atsci_fs_correlator
- */
-ATSC_API atsci_fs_correlator *create_atsci_fs_correlator ();
-
-
-#endif /* _CREATE_ATSC_FS_CORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/fpll_btloop_coupling.h b/gr-atsc/src/lib/fpll_btloop_coupling.h
deleted file mode 100644
index 9a1a99d86..000000000
--- a/gr-atsc/src/lib/fpll_btloop_coupling.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _FPLL_BTLOOP_COUPLING_H_
-#define _FPLL_BTLOOP_COUPLING_H_
-
-/*!
- * Magic coupling constant between GrAtscFPLL and GrAtscBitTimingLoop.
- * Trust me, you don't want to mess with this.
- *
- * The agc block buried in the FPLL indirectly sets the level of the input
- * to the bit timing loop. The bit timing loop's convergence properties
- * depend on the the mean amplitude of it's input. This constant ties
- * them together such that you can tweak the input level of the bit timing loop
- * (somewhat) without screwing everything.
- */
-
-static const float FPLL_BTLOOP_COUPLING_CONST = 3.125;
-
-#endif /* _FPLL_BTLOOP_COUPLING_H_ */
diff --git a/gr-atsc/src/lib/gen_encoder.py b/gr-atsc/src/lib/gen_encoder.py
deleted file mode 100755
index 6c8fabf7a..000000000
--- a/gr-atsc/src/lib/gen_encoder.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright 2002 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-def output(input, state):
- x2 = (input >> 1) & 0x1
- x1 = (input >> 0) & 0x1
- s = (state >> 2) & 0x1
- t = (state >> 1) & 0x1
- u = (state >> 0) & 0x1
-
- z0 = u
- z1 = x1
- z2 = x2 ^ s
- return (z2 << 2) | (z1 << 1) | z0
-
-
-def next_state(input, state):
- x2 = (input >> 1) & 0x1
- x1 = (input >> 0) & 0x1
- s0 = (state >> 2) & 0x1
- t0 = (state >> 1) & 0x1
- u0 = (state >> 0) & 0x1
-
- s1 = x2 ^ s0
- t1 = u0
- u1 = t0 ^ x1
-
- return (s1 << 2) | (t1 << 1) | u1
-
-print "@@@ NEXT @@@"
-
-for i in range (32):
- state = (i >> 2) & 0x7
- input = i & 0x3
- print next_state (input, state)
-
-
-print "@@@ OUTPUT @@@"
-
-for i in range (32):
- state = (i >> 2) & 0x7
- input = i & 0x3
- print output (input, state)
-
diff --git a/gr-atsc/src/lib/interleaver_fifo.h b/gr-atsc/src/lib/interleaver_fifo.h
deleted file mode 100644
index cacac85a3..000000000
--- a/gr-atsc/src/lib/interleaver_fifo.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _INTERLEAVER_FIFO_H_
-#define _INTERLEAVER_FIFO_H_
-
-
-#include <interleaver_fifo.h>
-#include <string.h>
-
-/*!
- * \brief template class for interleaver fifo
- */
-
-template<class symbol_type>
-class interleaver_fifo {
- public:
-
- interleaver_fifo (unsigned int size);
- ~interleaver_fifo ();
-
- //! reset interleaver (flushes contents and resets commutator)
- void reset ();
-
- //! stuff a symbol into the fifo and return the oldest
- symbol_type stuff (symbol_type input){
- if (m_size == 0)
- return input;
-
- symbol_type retval = m_fifo[m_position];
- m_fifo[m_position] = input;
- m_position++;
- if (m_position >= m_size)
- m_position = 0;
-
- return retval;
- }
-
-protected:
- unsigned int m_size;
- unsigned int m_position;
- symbol_type *m_fifo;
-};
-
-template<class symbol_type>
-interleaver_fifo<symbol_type>::interleaver_fifo (unsigned int size)
-{
- m_size = size;
- m_position = 0;
- m_fifo = new symbol_type[size];
- memset (m_fifo, 0, m_size * sizeof (symbol_type));
-}
-
-template<class symbol_type>
-interleaver_fifo<symbol_type>::~interleaver_fifo ()
-{
- delete [] m_fifo;
-}
-
-template<class symbol_type> void
-interleaver_fifo<symbol_type>::reset ()
-{
- m_position = 0;
- memset (m_fifo, 0, m_size * sizeof (symbol_type));
-}
-
-#endif /* _INTERLEAVER_FIFO_H_ */
diff --git a/gr-atsc/src/lib/plinfo.cc b/gr-atsc/src/lib/plinfo.cc
deleted file mode 100644
index 30e192907..000000000
--- a/gr-atsc/src/lib/plinfo.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <atsc_types.h>
-#include <assert.h>
-
-void
-plinfo::delay (plinfo &out, const plinfo &in, int nsegs_of_delay)
-{
- assert (in.regular_seg_p ());
- assert (nsegs_of_delay >= 0);
-
- int s = in.segno ();
- if (in.in_field2_p ())
- s += ATSC_DSEGS_PER_FIELD;
-
- s -= nsegs_of_delay;
- if (s < 0)
- s += 2 * ATSC_DSEGS_PER_FIELD;
-
- assert (0 <= s && s < 2 * ATSC_DSEGS_PER_FIELD);
-
- if (s < ATSC_DSEGS_PER_FIELD)
- out.set_regular_seg (false, s); // field 1
- else
- out.set_regular_seg (true, s - ATSC_DSEGS_PER_FIELD); // field 2
-}
-
-void
-plinfo::sanity_check (const plinfo &x)
-{
- // basic sanity checks...
- assert (x.segno () >= 0);
- assert (x.segno () < (unsigned) ATSC_DSEGS_PER_FIELD);
- assert ((x.flags () & ~0x3f) == 0);
-
- assert (x.regular_seg_p () ^ x.field_sync_p ());
- assert ((x.segno () != 0) ^ x.first_regular_seg_p ());
-}
-
diff --git a/gr-atsc/src/lib/qa_atsci.cc b/gr-atsc/src/lib/qa_atsci.cc
deleted file mode 100644
index 8dc940bcb..000000000
--- a/gr-atsc/src/lib/qa_atsci.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-/*
- * This class gathers together all the test cases for the atsc
- * directory into a single test suite. As you create new test cases,
- * add them here.
- */
-
-#include <qa_atsci.h>
-#include <qa_atsci_randomizer.h>
-#include <qa_atsci_reed_solomon.h>
-#include <qa_interleaver_fifo.h>
-#include <qa_convolutional_interleaver.h>
-#include <qa_atsci_data_interleaver.h>
-#include <qa_atsci_basic_trellis_encoder.h>
-#include <qa_atsci_sliding_correlator.h>
-#include <qa_atsci_fake_single_viterbi.h>
-#include <qa_atsci_single_viterbi.h>
-#include <qa_atsci_trellis_encoder.h>
-#include <qa_atsci_viterbi_decoder.h>
-#include <qa_atsci_fs_correlator.h>
-#include <qa_atsci_equalizer_nop.h>
-
-CppUnit::TestSuite *
-qa_atsc::suite ()
-{
- CppUnit::TestSuite *s = new CppUnit::TestSuite ("atsc");
-
- s->addTest (qa_atsci_randomizer::suite ());
- s->addTest (qa_atsci_reed_solomon::suite ());
- s->addTest (qa_interleaver_fifo::suite ());
- s->addTest (qa_convolutional_interleaver::suite ());
- s->addTest (qa_atsci_data_interleaver::suite ());
- s->addTest (qa_atsci_basic_trellis_encoder::suite ());
- s->addTest (qa_atsci_sliding_correlator::suite ());
- s->addTest (qa_atsci_fake_single_viterbi::suite ());
- s->addTest (qa_atsci_single_viterbi::suite ());
- s->addTest (qa_atsci_trellis_encoder::suite ());
- s->addTest (qa_atsci_viterbi_decoder::suite ());
- s->addTest (qa_atsci_fs_correlator::suite ());
- s->addTest (qa_atsci_equalizer_nop::suite ());
-
- return s;
-}
diff --git a/gr-atsc/src/lib/qa_atsci.h b/gr-atsc/src/lib/qa_atsci.h
deleted file mode 100644
index 86aca2d32..000000000
--- a/gr-atsc/src/lib/qa_atsci.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_H_
-#define _QA_ATSC_H_
-
-#include <cppunit/TestSuite.h>
-
-//! collect all the tests for the dtv directory
-
-class qa_atsc {
- public:
- //! return suite of tests for all of dtv directory
- static CppUnit::TestSuite *suite ();
-};
-
-
-#endif /* _QA_ATSC_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.cc b/gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.cc
deleted file mode 100644
index 4a8137424..000000000
--- a/gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/TestAssert.h>
-#include <qa_atsci_basic_trellis_encoder.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-void
-qa_atsci_basic_trellis_encoder::t0 ()
-{
- const static unsigned char in[14] = {
- 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 2, 3
- };
-
- const static unsigned char expected_out[14] = {
- 0, 2, 3, 1, 1, 3, 0, 1, 2, 0, 0, 2, 5, 2
- };
-
- for (unsigned i = 0; i < sizeof (in); i++)
- CPPUNIT_ASSERT_EQUAL ((int) expected_out[i], enc.encode (in[i]));
-
- // reset encoder and test again.
-
- enc.reset ();
- for (unsigned i = 0; i < sizeof (in); i++)
- CPPUNIT_ASSERT_EQUAL ((int) expected_out[i], enc.encode (in[i]));
-}
-
-
-void
-qa_atsci_basic_trellis_encoder::t1 ()
-{
- // Print data to externally check distribution.
- // looks OK.
-#if 0
- srandom (27);
-
- for (int i = 0; i < 8192; i++){
- int t = (random () >> 10) & 0x3; // 2 random bits
- printf ("%d %d\n", t, enc.encode (t));
- }
-#endif
-}
diff --git a/gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.h b/gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.h
deleted file mode 100644
index e413d0d3d..000000000
--- a/gr-atsc/src/lib/qa_atsci_basic_trellis_encoder.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _QA_ATSC_BASIC_TRELLIS_ENCODER_H_
-#define _QA_ATSC_BASIC_TRELLIS_ENCODER_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <atsci_basic_trellis_encoder.h>
-
-class qa_atsci_basic_trellis_encoder : public CppUnit::TestCase {
-
- CPPUNIT_TEST_SUITE (qa_atsci_basic_trellis_encoder);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- atsci_basic_trellis_encoder enc;
-
- void t0 ();
- void t1 ();
-};
-
-#endif /* _QA_ATSC_BASIC_TRELLIS_ENCODER_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_data_interleaver.cc b/gr-atsc/src/lib/qa_atsci_data_interleaver.cc
deleted file mode 100644
index 6069e8680..000000000
--- a/gr-atsc/src/lib/qa_atsci_data_interleaver.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cppunit/TestAssert.h>
-#include <qa_atsci_data_interleaver.h>
-#include <string.h>
-
-
-/*!
- * write an easy to identify pattern into the packet
- */
-void
-qa_atsci_data_interleaver::init_test_packet (int counter,
- atsc_mpeg_packet_rs_encoded &out)
-{
- out.data[0] = 0xf0;
- out.data[1] = 0xff;
- out.data[2] = (counter >> 8) & 0xff;
- out.data[3] = counter & 0xff;
-
- for (int i = 4; i < 205; i++)
- out.data[i] = i;
-
- out.data[205] = 0xa0;
- out.data[206] = 0xaf;
-}
-
-void
-qa_atsci_data_interleaver::print_packet (FILE *fp,
- int frame_number,
- int field_number,
- int segment_number,
- const atsc_mpeg_packet_rs_encoded &in)
-{
- fprintf (fp, "%04d:%d:%03d ", frame_number, field_number, segment_number);
-
- const unsigned char *p = &in.data[0];
- for (int i = 0; i < 8; i++)
- fprintf (fp, "%02X", p[i]);
-
- fprintf (fp, " ");
- p = &in.data[8];
- for (int i = 0; i < 8; i++)
- fprintf (fp, "%02X", p[i]);
-
-
- fprintf (fp, " ... ");
- p = &in.data[191];
- for (int i = 0; i < 8; i++)
- fprintf (fp, "%02X", p[i]);
-
- fprintf (fp, " ");
- p = &in.data[199];
- for (int i = 0; i < 8; i++)
- fprintf (fp, "%02X", p[i]);
-
- fprintf (fp, "\n");
-}
-
-void
-qa_atsci_data_interleaver::chk_assert (const atsc_mpeg_packet_rs_encoded &expected,
- const atsc_mpeg_packet_rs_encoded &actual)
-{
- if (expected == actual)
- return;
-
- FILE *fp = stderr;
-
- fprintf (fp, "Expected: ");
- print_packet (fp, 0, 0, 0, expected);
-
- fprintf (fp, "Actual: ");
- print_packet (fp, 0, 0, 0, actual);
-
- CPPUNIT_ASSERT (expected == actual);
-}
-
-void
-qa_atsci_data_interleaver::t0 ()
-{
- int counter = 0;
- atsc_mpeg_packet_rs_encoded in, enc, out;
- atsc_mpeg_packet_rs_encoded zero;
-
- memset (&zero, 0, sizeof (zero));
-
- for (int frame = 0; frame < 4; frame++){
- for (int field = 0; field < 2; field++){
- for (int segment = 0; segment < 312; segment++, counter++){
-
- // build test packet
- init_test_packet (counter, in);
- in.pli.set_regular_seg (field == 1, segment);
-
- // interleave it
- outbound.interleave (enc, in);
-
- // deinterleave it
- inbound.deinterleave (out, enc);
-
- if (counter < 52)
- // CPPUNIT_ASSERT (zero == out);
- chk_assert (zero, out);
-
- else if (counter >= 52){
- atsc_mpeg_packet_rs_encoded expected;
- init_test_packet (counter - 52, expected);
- // CPPUNIT_ASSERT (expected == out);
- chk_assert (expected, out);
- }
- }
- }
- }
-}
-
-//
-// Note, this assumes that the interleaver and deinterleaver
-// have the state left by t0.
-//
-// This test pushes crap into the interleaver, and then confirms that
-// the deinterleaver recovers. This would be part of what you'd see
-// on a channel change.
-//
-
-void
-qa_atsci_data_interleaver::t1 ()
-{
- int counter = 0;
- atsc_mpeg_packet_rs_encoded in, enc, out;
- atsc_mpeg_packet_rs_encoded zero;
-
- memset (&zero, 0, sizeof (zero));
-
- static const int NCRAP = 13;
-
- // push NCRAP segments of crap into the interleaver,
- // but don't change the deinterleaver state
-
- for (int i = 0; i < NCRAP; i++){
- init_test_packet (i + 2758, in);
- in.pli.set_regular_seg (false, i + 5);
-
- outbound.interleave (enc, in);
- }
-
- // now run the normal test.
- // we should get good segments after NCRAP + 52
-
- int starting_counter = 3141;
- counter = starting_counter;
-
- for (int frame = 0; frame < 4; frame++){
- for (int field = 0; field < 2; field++){
- for (int segment = 0; segment < 312; segment++, counter++){
-
- // build test packet
- init_test_packet (counter, in);
- in.pli.set_regular_seg (field == 1, segment);
-
- // interleave it
- outbound.interleave (enc, in);
-
- // deinterleave it
- inbound.deinterleave (out, enc);
-
- if (counter < starting_counter + 52 + NCRAP){
- // don't care...
- }
- else if (counter >= starting_counter + 52 + NCRAP){
- atsc_mpeg_packet_rs_encoded expected;
- init_test_packet (counter - 52, expected);
- // CPPUNIT_ASSERT (expected == out);
- chk_assert (expected, out);
- }
- }
- }
- }
-}
diff --git a/gr-atsc/src/lib/qa_atsci_data_interleaver.h b/gr-atsc/src/lib/qa_atsci_data_interleaver.h
deleted file mode 100644
index 6b9408c9a..000000000
--- a/gr-atsc/src/lib/qa_atsci_data_interleaver.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_DATA_INTERLEAVER_H_
-#define _QA_ATSC_DATA_INTERLEAVER_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdio.h>
-
-#include <atsci_data_interleaver.h>
-
-class qa_atsci_data_interleaver : public CppUnit::TestCase {
- public:
-
- void setUp (){
- outbound.reset ();
- inbound.reset ();
- }
-
- CPPUNIT_TEST_SUITE (qa_atsci_data_interleaver);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- atsci_data_interleaver outbound;
- atsci_data_deinterleaver inbound;
-
- void t0 ();
- void t1 ();
-
- void init_test_packet (int counter, atsc_mpeg_packet_rs_encoded &out);
- void print_packet (FILE *fp, int frame_number, int field_number, int segment_number,
- const atsc_mpeg_packet_rs_encoded &in);
- void chk_assert (const atsc_mpeg_packet_rs_encoded &expected,
- const atsc_mpeg_packet_rs_encoded &actual);
-};
-
-
-#endif /* _QA_ATSC_DATA_INTERLEAVER_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_equalizer_nop.cc b/gr-atsc/src/lib/qa_atsci_equalizer_nop.cc
deleted file mode 100644
index 7039eeb8e..000000000
--- a/gr-atsc/src/lib/qa_atsci_equalizer_nop.cc
+++ /dev/null
@@ -1,247 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <qa_atsci_equalizer_nop.h>
-#include <atsci_equalizer.h>
-#include <atsci_equalizer_nop.h>
-#include <atsci_pnXXX.h>
-#include <atsc_types.h>
-#include <cppunit/TestAssert.h>
-#include <assert.h>
-#include <iostream>
-#include <string.h>
-
-using std::cerr;
-using std::endl;
-
-
-static const int SYMBOLS_PER_FIELD = (ATSC_DSEGS_PER_FIELD + 1) * ATSC_DATA_SEGMENT_LENGTH;
-static const int PAD = 500;
-static const int NFIELDS = 2;
-
-static const int INPUT_SIZE = PAD + (NFIELDS * SYMBOLS_PER_FIELD);
-
-static float
-bin_map (int bit)
-{
- return bit ? +5 : -5;
-}
-
-static void
-init_tags (atsc::syminfo *tags, int segnum, int fieldnum)
-{
- int i;
-
- for (i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++){
- tags[i].symbol_num = i;
- tags[i].segment_num = segnum;
- tags[i].field_num = fieldnum;
- tags[i].valid = 1;
- }
-}
-
-static void
-init_data_seg (float *p, atsc::syminfo *tags, int v, int segnum, int fieldnum)
-{
- init_tags (tags, segnum, fieldnum);
-
- int i = 0;
-
- p[i++] = bin_map (1); // data segment sync pulse
- p[i++] = bin_map (0);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
-
- for (; i < ATSC_DATA_SEGMENT_LENGTH; i++)
- p[i] = (float) (i + v);
-}
-
-static void
-init_field_sync_tags (atsc::syminfo *tags, int fieldnum)
-{
- init_tags (tags, atsc::SI_FIELD_SYNC_SEGMENT_NUM, fieldnum);
-}
-
-static void
-init_field_sync_common (float *p, int mask)
-
-{
- int i = 0;
-
- p[i++] = bin_map (1); // data segment sync pulse
- p[i++] = bin_map (0);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
-
- for (int j = 0; j < 511; j++) // PN511
- p[i++] = bin_map (atsc_pn511[j]);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map (atsc_pn63[j]);
-
- for (int j = 0; j < 63; j++) // PN63, toggled on field 2
- p[i++] = bin_map (atsc_pn63[j] ^ mask);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map (atsc_pn63[j]);
-
- p[i++] = bin_map (0); // 24 bits of VSB8 mode identifiera
- p[i++] = bin_map (0);
- p[i++] = bin_map (0);
- p[i++] = bin_map (0);
-
- p[i++] = bin_map (1);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
- p[i++] = bin_map (0);
-
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
-
- p[i++] = bin_map (1);
- p[i++] = bin_map (1);
- p[i++] = bin_map (1);
- p[i++] = bin_map (1);
-
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
-
- p[i++] = bin_map (1);
- p[i++] = bin_map (0);
- p[i++] = bin_map (1);
- p[i++] = bin_map (0);
-
-
- for (int j = 0; j < 92; j++) // 92 more bits
- p[i++] = bin_map (atsc_pn63[j % 63]);
-
- // now copy the last 12 symbols of the previous segment
- // bogus fill
-
- for (int j = 0; j < 12; j++)
- p[i++] = bin_map (j & 1);
-
- assert (i == ATSC_DATA_SEGMENT_LENGTH);
-}
-
-void
-qa_atsci_equalizer_nop::setUp ()
-{
- eq = new atsci_equalizer_nop ();
-}
-
-void
-qa_atsci_equalizer_nop::tearDown ()
-{
- delete eq;
- eq = 0;
-}
-
-static void
-setup_test_data (float *data, atsc::syminfo *tags)
-{
- int mask = 0;
- int i = 0;
-
- for (i = 0; i < PAD; i++){
- data[i] = (float) i;
- tags[i].symbol_num = 13 + i;
- tags[i].segment_num = 17;
- tags[i].field_num = 0;
- tags[i].valid = 1;
- }
-
- for (int nfields = 0; nfields < NFIELDS; nfields++){
- init_field_sync_common (&data[i], mask);
- init_field_sync_tags (&tags[i], mask);
- i += ATSC_DATA_SEGMENT_LENGTH;
-
- for (int segnum = 0; segnum < 312; segnum++){
- init_data_seg (&data[i], &tags[i], i, segnum, mask);
- i += ATSC_DATA_SEGMENT_LENGTH;
- }
- mask ^= 1;
- }
- assert (i == INPUT_SIZE);
-}
-
-void
-qa_atsci_equalizer_nop::t0 ()
-{
- // these are dynamically allocated because they are bigger
- // than the default stack limit.
-
- float *input_data = new float[INPUT_SIZE];
- atsc::syminfo *input_tags = new atsc::syminfo[INPUT_SIZE];
- float *output_data = new float[INPUT_SIZE];
-
- try {
-
- memset (input_data, 0, sizeof (input_data));
- memset (input_tags, 0, sizeof (input_tags));
- memset (output_data, 0, sizeof (output_data));
-
- setup_test_data (input_data, input_tags);
-
- eq->filter (input_data, input_tags,
- output_data, INPUT_SIZE);
-
-
- // now check that data values got copied correctly
-
- for (int i = 0; i < INPUT_SIZE; i++){
-
- if (input_tags[i].segment_num == atsc::SI_FIELD_SYNC_SEGMENT_NUM){
- // ignore entire field sync data segment
- }
- else if (input_tags[i].symbol_num <= 3){
- // ignore 4 symbols of data segment sync (+5, -5, -5, +5)
- }
- else {
- if (output_data[i] != (float) i){
- cerr << "output_data[" << i << "] == " << output_data[i] << endl;
- CPPUNIT_ASSERT_DOUBLES_EQUAL ((float) i, output_data[i], 1e-6);
- }
- }
- }
-
- delete [] input_data;
- delete [] input_tags;
- delete [] output_data;
- }
-
- catch ( ... ){
- delete [] input_data;
- delete [] input_tags;
- delete [] output_data;
- }
-}
-
-void
-qa_atsci_equalizer_nop::t1 ()
-{
- // think of another test...
-}
diff --git a/gr-atsc/src/lib/qa_atsci_equalizer_nop.h b/gr-atsc/src/lib/qa_atsci_equalizer_nop.h
deleted file mode 100644
index 244daf8b3..000000000
--- a/gr-atsc/src/lib/qa_atsci_equalizer_nop.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_EQUALIZER_NOP_H_
-#define _QA_ATSC_EQUALIZER_NOP_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-class atsci_equalizer;
-
-class qa_atsci_equalizer_nop : public CppUnit::TestCase {
-private:
- atsci_equalizer *eq;
-
-public:
- void setUp ();
- void tearDown ();
-
- CPPUNIT_TEST_SUITE (qa_atsci_equalizer_nop);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST_SUITE_END ();
-
-private:
-
- void t0 ();
- void t1 ();
-
-};
-
-#endif /* _QA_ATSC_EQUALIZER_NOP_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc b/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc
deleted file mode 100644
index 2cc646daf..000000000
--- a/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/TestAssert.h>
-#include <stdio.h>
-#include <atsci_fake_single_viterbi.h>
-#include <qa_atsci_fake_single_viterbi.h>
-#include <random.h>
-#include <string.h>
-
-
-static const int NTRIALS = 50;
-static const int MAXERRORS = 10;
-static const int NN = 200;
-
-static const int MAXDIBIT = 3;
-
-void
-qa_atsci_fake_single_viterbi::encode_block (unsigned char *out, unsigned char *in,
- unsigned int n)
-{
- for (unsigned int i = 0; i < n; i++) {
- out[i] = encoder.encode(in[i]);
- }
-}
-
-
-void
-qa_atsci_fake_single_viterbi::decode_block (unsigned char *out, unsigned char *in,
- unsigned int n)
-{
- for (unsigned int i = 0; i < n; i++) {
- out[i] = decoder.decode ((2*in[i]-7) + noise ());
- }
-}
-
-float
-qa_atsci_fake_single_viterbi::noise ()
-{
-#if 1
- return 2.0 * ((float) random () / RANDOM_MAX - 0.5);;
-#else
- return 0;
-#endif
-}
-
-void
-qa_atsci_fake_single_viterbi::t0 ()
-{
- static const int blocklen = NN;
- unsigned char in[blocklen];
- unsigned char enc[blocklen];
- unsigned char out[blocklen];
- int decoder_errors = 0;
- int delay = decoder.delay ();
- int i;
-
- // printf (" Delay is %d.\n", delay);
-
- srandom (27); // reproducable sequence of "random" values
-
- for (int nt = 0; nt < NTRIALS; nt++){
-
- // load block with random data and encode
-
- for (i = 0; i < (blocklen-delay); i++)
- in[i] = random () & MAXDIBIT;
- for ( ; i < blocklen; i++)
- in[i] = 0; /* To empty the delay buffers */
-
- encoder.reset ();
- encode_block (enc, in, blocklen);
-
- decoder.reset ();
-
- // decode the block
- decode_block (out, enc, blocklen);
-
- // int offset = delay/4;
- int offset = 2;
- bool differs = (memcmp (in+offset,
- out+delay+offset, blocklen-(delay+offset)));
-
- // initial values after reset are 0
- for (i = 0; i < delay; i++){
- if (out[i] != 0)
- printf (" initial output at %i is %X, not 0\n",
- i, out[i]);
- }
-
- if (differs){
- printf (" incorrect data, trial #%d\n", nt);
-
- printf ("\n Erroneous result dibits:");
- for (int erri = 0; erri < (NN-delay); erri++) {
- if (in[erri] != out[erri+delay])
- printf (" %d", erri);
- }
- printf ("\n In: ");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %d", in[erri]);
- }
- printf ("\n Out: ");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %d", out[erri+delay]);
- }
- printf ("\n Errs:");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %c", (in[erri] != out[erri+delay])? '*': ' ');
- }
- printf ("\n THIS IS A REAL PROBLEM.\n");
- decoder_errors++;
- }
- }
-
- printf (" Summary: %d decoder errors out of %d trials.\n",
- decoder_errors, NTRIALS);
-
- CPPUNIT_ASSERT (decoder_errors == 0);
-}
-
diff --git a/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.h b/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.h
deleted file mode 100644
index 47805952c..000000000
--- a/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_FAKE_SINGLE_VITERBI_H
-#define _QA_ATSC_FAKE_SINGLE_VITERBI_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <atsci_fake_single_viterbi.h>
-#include <atsci_basic_trellis_encoder.h>
-
-class qa_atsci_fake_single_viterbi : public CppUnit::TestCase {
- private:
- atsci_fake_single_viterbi decoder;
- atsci_basic_trellis_encoder encoder;
-
- CPPUNIT_TEST_SUITE (qa_atsci_fake_single_viterbi);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
-
- void t0 ();
-
- void encode_block(unsigned char *out, unsigned char *in, unsigned n);
- void decode_block(unsigned char *out, unsigned char *in, unsigned n);
- float noise ();
-
-};
-
-#endif /* _QA_ATSC_FAKE_SINGLE_VITERBI_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_fs_correlator.cc b/gr-atsc/src/lib/qa_atsci_fs_correlator.cc
deleted file mode 100644
index 591c84050..000000000
--- a/gr-atsc/src/lib/qa_atsci_fs_correlator.cc
+++ /dev/null
@@ -1,255 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_atsci_fs_correlator.h>
-#include <atsci_fs_correlator.h>
-#include <create_atsci_fs_correlator.h>
-#include <atsci_sync_tag.h>
-#include <stdlib.h>
-#include <algorithm>
-#include <atsci_pnXXX.h>
-#include <atsc_types.h>
-#include <cppunit/TestAssert.h>
-#include <assert.h>
-#include <random.h>
-
-
-static float
-uniform ()
-{
- return 2.0 * ((float) random () / RANDOM_MAX - 0.5); // uniformly (-1, 1)
-}
-
-
-static float
-bin_map (int bit)
-{
- return bit ? +5 : -5;
-}
-
-static void
-init_field_sync_common (float *p, int mask)
-
-{
- int i = 0;
-
- p[i++] = bin_map(1); // data segment sync pulse
- p[i++] = bin_map(0);
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
-
- for (int j = 0; j < 511; j++) // PN511
- p[i++] = bin_map(atsc_pn511[j]);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map(atsc_pn63[j]);
-
- for (int j = 0; j < 63; j++) // PN63, toggled on field 2
- p[i++] = bin_map(atsc_pn63[j] ^ mask);
-
- for (int j = 0; j < 63; j++) // PN63
- p[i++] = bin_map(atsc_pn63[j]);
-
- p[i++] = bin_map(0); // 24 bits of VSB8 mode identifiera
- p[i++] = bin_map(0);
- p[i++] = bin_map(0);
- p[i++] = bin_map(0);
-
- p[i++] = bin_map(1);
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
- p[i++] = bin_map(0);
-
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
-
- p[i++] = bin_map(1);
- p[i++] = bin_map(1);
- p[i++] = bin_map(1);
- p[i++] = bin_map(1);
-
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
-
- p[i++] = bin_map(1);
- p[i++] = bin_map(0);
- p[i++] = bin_map(1);
- p[i++] = bin_map(0);
-
-
- for (int j = 0; j < 92; j++) // 92 more bits
- p[i++] = bin_map(atsc_pn63[j % 63]);
-
- // now copy the last 12 symbols of the previous segment
- // bogus pad for this test...
-
- for (int j = 0; j < 12; j++)
- p[i++] = bin_map(j & 1);
-
- assert (i == ATSC_DATA_SEGMENT_LENGTH);
-}
-
-inline static void
-init_field_sync_1 (float *s)
-{
- init_field_sync_common (s, 0);
-}
-
-inline static void
-init_field_sync_2 (float *s)
-{
- init_field_sync_common (s, 1);
-}
-
-static void
-cause_errors (float *p, int nerrs1, int nerrs2)
-{
- static const int offset1 = 4; // offset to PN 511
- static const int offset2 = 578; // offset to 2nd PN 63
-
- for (int i = 0; i < nerrs1; i++){ // flip nerrs1 bits in PN 511
- p[i + offset1] = -p[i + offset1];
- }
-
- for (int i = 0; i < nerrs2; i++){ // flip nerrs2 bits in PN 63
- p[i + offset2] = -p[i + offset2];
- }
-}
-
-
-void
-qa_atsci_fs_correlator::setUp ()
-{
- fsc = create_atsci_fs_correlator ();
-}
-
-void
-qa_atsci_fs_correlator::tearDown ()
-{
- delete fsc;
- fsc = 0;
-}
-
-
-// check sample fifo
-
-void
-qa_atsci_fs_correlator::t0 ()
-{
- int delay = fsc->delay ();
- int i;
- float output_sample, output_tag;
-
- for (i = 0; i < delay; i++){
- fsc->filter ((float) i, &output_sample, &output_tag);
- CPPUNIT_ASSERT_DOUBLES_EQUAL (0.0, output_sample, 1e-6);
- CPPUNIT_ASSERT_DOUBLES_EQUAL (atsc_sync_tag::NORMAL, output_tag, 1e-6);
- }
-
- for (; i < delay + 5000; i++){
- fsc->filter ((float) i, &output_sample, &output_tag);
- CPPUNIT_ASSERT_DOUBLES_EQUAL ((float) (i - delay), output_sample, 1e-6);
- CPPUNIT_ASSERT_DOUBLES_EQUAL (atsc_sync_tag::NORMAL, output_tag, 1e-6);
- }
-}
-
-void
-qa_atsci_fs_correlator::util (int which_field, int nerrs1, int nerrs2)
-{
- static const int PAD = 303;
- static const int ISIZE = 4096;
- int delay = fsc->delay ();
- float output_sample, output_tag;
- int i;
- float input[ISIZE];
-
- fsc->reset (); // known starting conditions
-
- // build input
-
- for (i = 0; i < PAD; i++)
- input[i] = uniform () * 7;
-
- init_field_sync_common (&input[i], which_field);
- cause_errors (&input[i], nerrs1, nerrs2);
- i += ATSC_DATA_SEGMENT_LENGTH;
-
- for (; i < ISIZE; i++)
- input[i] = uniform () * 7;
-
- // run the input and check
-
- for (i = 0; i < ISIZE; i++){
- fsc->filter (input[i], &output_sample, &output_tag);
- if (i == delay + PAD){ // should be field sync
- if (which_field == 0)
- CPPUNIT_ASSERT_DOUBLES_EQUAL (atsc_sync_tag::START_FIELD_SYNC_1, output_tag, 1e-6);
- else
- CPPUNIT_ASSERT_DOUBLES_EQUAL (atsc_sync_tag::START_FIELD_SYNC_2, output_tag, 1e-6);
- }
- else {
- CPPUNIT_ASSERT_DOUBLES_EQUAL (atsc_sync_tag::NORMAL, output_tag, 1e-6);
- }
- }
-}
-
-
-void
-qa_atsci_fs_correlator::t1 ()
-{
- util (0, 0, 0);
-}
-
-void
-qa_atsci_fs_correlator::t2 ()
-{
- util (1, 0, 0);
-}
-
-void
-qa_atsci_fs_correlator::t3 ()
-{
- for (int nerrs1 = 0; nerrs1 < 20; nerrs1++){
- for (int nerrs2 = 0; nerrs2 < 5; nerrs2++){
- util (0, nerrs1, nerrs2);
- }
- }
-}
-
-void
-qa_atsci_fs_correlator::t4 ()
-{
- for (int nerrs1 = 0; nerrs1 < 5; nerrs1++){
- for (int nerrs2 = 0; nerrs2 < 5; nerrs2++){
- util (1, nerrs1, nerrs2);
- }
- }
-}
-
diff --git a/gr-atsc/src/lib/qa_atsci_fs_correlator.h b/gr-atsc/src/lib/qa_atsci_fs_correlator.h
deleted file mode 100644
index 4785f096e..000000000
--- a/gr-atsc/src/lib/qa_atsci_fs_correlator.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _QA_ATSC_FS_CORRELATOR_H_
-#define _QA_ATSC_FS_CORRELATOR_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-class atsci_fs_correlator;
-
-class qa_atsci_fs_correlator : public CppUnit::TestCase {
-private:
- atsci_fs_correlator *fsc;
-
- public:
-
- void setUp ();
- void tearDown ();
-
- CPPUNIT_TEST_SUITE (qa_atsci_fs_correlator);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST (t2);
- CPPUNIT_TEST (t3);
- CPPUNIT_TEST (t4);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
-
- void util (int which_field, int nerr1, int nerr2);
-
- void t0 ();
- void t1 ();
- void t2 ();
- void t3 ();
- void t4 ();
-};
-
-#endif /* _QA_ATSC_FS_CORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_randomizer.cc b/gr-atsc/src/lib/qa_atsci_randomizer.cc
deleted file mode 100644
index c12582dfd..000000000
--- a/gr-atsc/src/lib/qa_atsci_randomizer.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <qa_atsci_randomizer.h>
-
-#include <cppunit/TestAssert.h>
-#include <string.h>
-
-static unsigned int expected_initial_states[] = {
- 0x018f,
- 0xd3db,
- 0xbaf1,
- 0x8e64,
- 0x4732,
- 0x2399,
- 0xc2d0,
- 0x6168
-};
-
-static unsigned char expected_initial_values[] = {
- 0xc0,
- 0x6d,
- 0x3f,
- 0x99,
- 0x38,
- 0x6a,
- 0x29,
- 0x52
-};
-
-#define NELEMENTS(ary) ((sizeof (ary)) / sizeof (ary[0]))
-
-void
-qa_atsci_randomizer::t0_compare_output_maps ()
-{
- for (int i = 0; i < 0x10000; i++){
- unsigned char slow = atsci_randomizer::slow_output_map(i);
- unsigned char fast = atsci_randomizer::fast_output_map(i);
- CPPUNIT_ASSERT_EQUAL (slow, fast);
- }
-}
-
-void
-qa_atsci_randomizer::t1_initial_states ()
-{
- // LFSR should start with expected states
-
- for (unsigned int i = 0; i < NELEMENTS (expected_initial_values); i++){
- unsigned int got = randomizer.state();
- randomizer.clk ();
- CPPUNIT_ASSERT_EQUAL (expected_initial_states[i], got);
- }
-}
-
-void
-qa_atsci_randomizer::t2_initial_values ()
-{
- // LFSR should start with expected values
-
- for (unsigned int i = 0; i < NELEMENTS (expected_initial_values); i++){
- unsigned char got = randomizer.output_and_clk ();
- CPPUNIT_ASSERT_EQUAL (expected_initial_values[i], got);
- }
-}
-
-void
-qa_atsci_randomizer::t3_reset ()
-{
- // LFSR should start with expected values
-
- for (unsigned int i = 0; i < NELEMENTS (expected_initial_values); i++){
- unsigned char got = randomizer.output_and_clk ();
- CPPUNIT_ASSERT_EQUAL (expected_initial_values[i], got);
- }
-
- randomizer.reset (); // reset LFSR
-
- // and now should repeat expected values
-
- for (unsigned int i = 0; i < NELEMENTS (expected_initial_values); i++){
- unsigned char got = randomizer.output_and_clk ();
- CPPUNIT_ASSERT_EQUAL (expected_initial_values[i], got);
- }
-}
-
-void
-qa_atsci_randomizer::t4_high_level ()
-{
- static const int N = 5;
-
- atsc_mpeg_packet in[N];
- atsc_mpeg_packet_no_sync middle[N];
- atsc_mpeg_packet out[N];
-
- memset (in, 0, sizeof (in));
- memset (middle, 0, sizeof (middle));
- memset (out, 0, sizeof (out));
-
- // setup input test data
-
- int counter = 0xff;
- for (int n = 0; n < N; n++){
- in[n].data[0] = MPEG_SYNC_BYTE;
- for (int i = 0; i < ATSC_MPEG_DATA_LENGTH; i++)
- in[n].data[i + 1] = counter++;
- }
-
- // randomize N packets
-
- for (int n = 0; n < N; n++)
- randomizer.randomize (middle[n], in[n]);
-
- // reset LFSR and derandomize N packets
-
- randomizer.reset (); // reset LFSR
-
- for (int n = 0; n < N; n++)
- randomizer.derandomize (out[n], middle[n]);
-
- // compare packets
-
- for (int n = 0; n < N; n++){
- CPPUNIT_ASSERT (in[n] == out[n]);
- }
-}
-
diff --git a/gr-atsc/src/lib/qa_atsci_randomizer.h b/gr-atsc/src/lib/qa_atsci_randomizer.h
deleted file mode 100644
index 16d12754f..000000000
--- a/gr-atsc/src/lib/qa_atsci_randomizer.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _QA_ATSC_RANDOMIZER_H_
-#define _QA_ATSC_RANDOMIZER_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <atsci_randomizer.h>
-
-class qa_atsci_randomizer : public CppUnit::TestCase {
- private:
- atsci_randomizer randomizer;
-
- public:
-
- void setUp (){
- // nop
- }
-
- void tearDown (){
- // nop
- }
-
- CPPUNIT_TEST_SUITE (qa_atsci_randomizer);
- CPPUNIT_TEST (t0_compare_output_maps);
- CPPUNIT_TEST (t1_initial_states);
- CPPUNIT_TEST (t2_initial_values);
- CPPUNIT_TEST (t3_reset);
- CPPUNIT_TEST (t4_high_level);
- CPPUNIT_TEST_SUITE_END ();
-
-
- private:
- void t0_compare_output_maps ();
- void t1_initial_states ();
- void t2_initial_values ();
- void t3_reset ();
- void t4_high_level ();
-
-};
-
-#endif /* _QA_ATSC_RANDOMIZER_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_reed_solomon.cc b/gr-atsc/src/lib/qa_atsci_reed_solomon.cc
deleted file mode 100644
index 81766f856..000000000
--- a/gr-atsc/src/lib/qa_atsci_reed_solomon.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/TestAssert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <atsci_reed_solomon.h>
-#include <qa_atsci_reed_solomon.h>
-#include <string.h>
-
-
-static const int NROOTS = 20;
-static const int NTRIALS = 100;
-static const int NN = ATSC_MPEG_RS_ENCODED_LENGTH;
-
-void
-qa_atsci_reed_solomon::t0_reed_solomon ()
-{
- atsc_mpeg_packet_no_sync in;
- atsc_mpeg_packet_rs_encoded enc;
- atsc_mpeg_packet_no_sync out;
- int derrors;
- int errlocs[NN];
- int errval;
- int errloc;
- int decoder_errors = 0;
-
- for (int nt = 0; nt < NTRIALS; nt++){
-
- // test up to the error correction capacity of the code
- for (int errors = 0; errors <= NROOTS*2; errors++){
-
- // load block with random data and encode
-
- for (int i = 0; i < ATSC_MPEG_DATA_LENGTH; i++)
- in.data[i] = random () & 0xff;
-
- rs.encode (enc, in);
-
- memset (errlocs, 0, sizeof (errlocs));
-
- for (int i = 0; i < errors; i++){
-
- do {
- errval = random () & 0xff;
- } while (errval == 0); // error value must be non-zero
-
- do {
- errloc = random () % NN;
- } while (errlocs[errloc] != 0); // must not choose the same location twice
-
- errlocs[errloc] = 1;
-
- enc.data[errloc] ^= errval; // cause the error
- }
-
- // decode the errored block
- derrors = rs.decode (out, enc);
-
- if (errors <= NROOTS/2) {
- // We should have handled all these errors and corrected them.
- if (derrors != errors){
- fprintf (stderr, " decoder says %d errors, true number is %d\n", derrors, errors);
- decoder_errors++;
- }
-
- if (in != out){
- fprintf (stderr, " uncorrected errors!\n");
- decoder_errors++;
- }
- } else {
- // We have been given more errors than we could cope with. Make
- // sure that we detect these errors. Complain if we get incorrect
- // block but don't say it's incorrect.
- bool differs = (in != out);
-
- if (differs && (derrors < 0)) {
- // Reported uncorrectable error accurately
- } else if (differs) {
- fprintf (stderr,
- " decoder found %d of %d errors, but incorrect block\n",
- derrors, errors);
- } else {
- fprintf (stderr, " decoder corrected %d of %d errors unexpectedly\n",
- derrors, errors);
- }
- }
- }
- }
-
- CPPUNIT_ASSERT (decoder_errors == 0);
-}
diff --git a/gr-atsc/src/lib/qa_atsci_reed_solomon.h b/gr-atsc/src/lib/qa_atsci_reed_solomon.h
deleted file mode 100644
index 95d642e72..000000000
--- a/gr-atsc/src/lib/qa_atsci_reed_solomon.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_REED_SOLOMON_H_
-#define _QA_ATSC_REED_SOLOMON_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <atsci_reed_solomon.h>
-
-class qa_atsci_reed_solomon : public CppUnit::TestCase {
-
- CPPUNIT_TEST_SUITE (qa_atsci_reed_solomon);
- CPPUNIT_TEST (t0_reed_solomon);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- atsci_reed_solomon rs;
-
- void t0_reed_solomon ();
-};
-
-#endif /* _QA_ATSC_REED_SOLOMON_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_single_viterbi.cc b/gr-atsc/src/lib/qa_atsci_single_viterbi.cc
deleted file mode 100644
index 699dce952..000000000
--- a/gr-atsc/src/lib/qa_atsci_single_viterbi.cc
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/TestAssert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <atsci_single_viterbi.h>
-#include <qa_atsci_single_viterbi.h>
-#include <random.h>
-#include <string.h>
-
-
-static const int NTRIALS = 50;
-static const int MAXERRORS = 10;
-static const int NN = 200;
-
-static const int MAXDIBIT = 3;
-
-void
-qa_atsci_single_viterbi::encode_block (unsigned char *out, unsigned char *in,
- unsigned int n)
-{
- for (unsigned int i = 0; i < n; i++) {
- out[i] = encoder.encode(in[i]);
- }
-}
-
-
-void
-qa_atsci_single_viterbi::decode_block (unsigned char *out, unsigned char *in,
- unsigned int n, float noise_factor)
-{
- for (unsigned int i = 0; i < n; i++) {
- out[i] = decoder.decode((2*in[i]-7) + noise () * noise_factor);
- }
-}
-
-float
-qa_atsci_single_viterbi::noise ()
-{
- return 2.0 * ((float) random () / RANDOM_MAX - 0.5); // uniformly (-1, 1)
-}
-
-void
-qa_atsci_single_viterbi::t0 ()
-{
- static const int blocklen = NN;
- unsigned char in[blocklen];
- unsigned char enc[blocklen];
- unsigned char out[blocklen];
- int decoder_errors = 0;
- int delay = decoder.delay ();
- int i;
-
- // printf (" Delay is %d.\n", delay);
-
- srandom (27); // reproducable sequence of "random" values
-
- for (int nt = 0; nt < NTRIALS; nt++){
-
- // load block with random data and encode
-
- for (i = 0; i < (blocklen-delay); i++)
- in[i] = random () & MAXDIBIT;
- for ( ; i < blocklen; i++)
- in[i] = 0; /* To empty the delay buffers */
-
- encoder.reset ();
- encode_block (enc, in, blocklen);
-
- decoder.reset ();
-
- // decode the block
- decode_block (out, enc, blocklen, 1.0);
-
- // int offset = delay/4;
- int offset = 2;
- bool differs = (memcmp (in+offset,
- out+delay+offset, blocklen-(delay+offset)));
-
- // initial values after reset are 0
- for (i = 0; i < delay; i++){
- if (out[i] != 0)
- printf (" initial output at %i is %X, not 0\n",
- i, out[i]);
- }
-
- if (differs){
- printf (" incorrect data\n");
-
- printf ("\n Erroneous result dibits:");
- for (int erri = 0; erri < (NN-delay); erri++) {
- if (in[erri] != out[erri+delay])
- printf (" %d", erri);
- }
- printf ("\n In: ");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %d", in[erri]);
- }
- printf ("\n Out: ");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %d", out[erri+delay]);
- }
- printf ("\n Errs:");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %c", (in[erri] != out[erri+delay])? '*': ' ');
- }
- printf ("\n THIS IS A REAL PROBLEM.\n");
- decoder_errors++;
- }
- }
-
- printf (" Summary: %d decoder errors out of %d trials.\n",
- decoder_errors, NTRIALS);
-
- CPPUNIT_ASSERT (decoder_errors == 0);
-}
-
-void
-qa_atsci_single_viterbi::t1 ()
-{
- static const int blocklen = NN;
- unsigned char in[blocklen];
- unsigned char enc[blocklen];
- unsigned char out[blocklen];
- int errlocs[NN];
- int errval;
- int errloc;
- int decoder_errors = 0;
- int delay = decoder.delay ();
- int i;
-
- // printf (" Delay is %d.\n", delay);
-
- srandom (1); // reproducable sequence of "random" values
-
- for (int nt = 0; nt < NTRIALS; nt++){
-
- // test up to the error correction capacity of the code
- for (int errors = 0; errors <= MAXERRORS; errors++){
-
- // load block with random data and encode
-
- for (i = 0; i < (blocklen-delay); i++)
- in[i] = random () & MAXDIBIT;
- for ( ; i < blocklen; i++)
- in[i] = 0; /* To empty the delay buffers */
-
- encoder.reset ();
- encode_block (enc, in, blocklen);
-
- // Now generate 0 to N errors in the encoded symbols.
- //
- // If we restrict ourselves to damaging the low-order bit,
- // our decoder finds and fixes the vast majority of errors.
- //
- // If we munge any or all of the three bits of the symbol,
- // our decoder frequently gets the wrong data even with a single
- // error.
- //
- // Let's see what it can do with just the two low-order bits.
- //
- // ALSO: Don't let any error be within 12 spots of another
- // error. This simulates the muxed behavior.
-
- memset (errlocs, 0, sizeof (errlocs));
-
- for (int j = 0; j < errors; j++){
-
- do {
- // errval = random () & 3; // FIXME: 1; // FIXME: MAXSYM;
- errval = random () & 1; // FIXME: 1; // FIXME: MAXSYM;
- } while (errval == 0); // error value must be non-zero
-
- // Don't insert errors in the first delay slot, since we
- // don't have valid history to correct them. Also, don't
- // insert burst errors (adjacent errors), or errors within 2,
- // since we can't reliably correct them. Also we must not choose
- // the same location twice when inserting an error.
-
- do {
- errloc = random () % NN;
- } while (errloc < delay || errlocs[errloc] != 0
- || (errloc > 0 && errlocs[errloc-1] != 0)
- || (errloc > 1 && errlocs[errloc-2] != 0)
- || (errloc < (NN-1) && errlocs[errloc+1] != 0)
- || (errloc < (NN-2) && errlocs[errloc+2] != 0));
-
- errlocs[errloc] = 1;
-
- enc[errloc] ^= errval; // cause the error
- }
-
- // decode the errored block
- decoder.reset ();
- decode_block (out, enc, blocklen, 0.5);
-
- // int offset = delay/4;
- int offset = 2;
- bool differs = (memcmp (in+offset,
- out+delay+offset, blocklen-(delay+offset)));
-
- // initial values after reset are 0
- for (i = 0; i < delay; i++){
- if (out[i] != 0)
- printf (" initial output at %i is %X, not 0\n",
- i, out[i]);
- }
-
- if (differs){
- printf (" %2d errors introduced, %scorrect data\n",
- errors, differs? "in": "");
-
- // FIXME, should we be able to tell how many errs too?
- if (differs) {
- //const int ERRTOL = 12; /* Or relate to delay? */
- int shouldfix = 1;
- //int lasti = -ERRTOL;
-
- printf ( " Inserted errors: ");
- for (int erri = 0; erri < NN; erri++) {
- if (errlocs[erri]) {
- printf (" %d", erri);
- // if (erri < lasti+ERRTOL)
- // shouldfix = 0;
- //lasti = erri;
- }
- }
- printf ("\n Erroneous result dibits:");
- for (int erri = 0; erri < (NN-delay); erri++) {
- if (in[erri] != out[erri+delay])
- printf (" %d", erri);
- }
- printf ("\n In: ");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %d", in[erri]);
- }
- printf ("\n Out: ");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %d", out[erri+delay]);
- }
- printf ("\n Errs:");
- for (int erri = 0; erri < (NN-delay); erri++) {
- printf (" %c", (in[erri] != out[erri+delay])? '*': ' ');
- }
- if (shouldfix)
- printf ("\n THIS IS A REAL PROBLEM.\n");
- else
- printf ("\n BUT THAT'S OK since errors are too close.\n");
- if (shouldfix)
- decoder_errors++;
- }
- }
- }
- }
-
- printf (" Summary: %d decoder errors out of %d trials.\n",
- decoder_errors, (MAXERRORS*NTRIALS));
-
- CPPUNIT_ASSERT (decoder_errors <= (MAXERRORS*NTRIALS) * .1);
-}
diff --git a/gr-atsc/src/lib/qa_atsci_single_viterbi.h b/gr-atsc/src/lib/qa_atsci_single_viterbi.h
deleted file mode 100644
index 07585de22..000000000
--- a/gr-atsc/src/lib/qa_atsci_single_viterbi.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_SINGLE_VITERBI_H
-#define _QA_ATSC_SINGLE_VITERBI_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <atsci_single_viterbi.h>
-#include <atsci_basic_trellis_encoder.h>
-
-class qa_atsci_single_viterbi : public CppUnit::TestCase {
- private:
- atsci_single_viterbi decoder;
- atsci_basic_trellis_encoder encoder;
-
- CPPUNIT_TEST_SUITE (qa_atsci_single_viterbi);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
-
- void t0 ();
- void t1 ();
-
- void encode_block(unsigned char *out, unsigned char *in, unsigned n);
- void decode_block(unsigned char *out, unsigned char *in, unsigned n, float noise_factor);
- float noise ();
-
-};
-
-#endif /* _QA_ATSC_SINGLE_VITERBI_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_sliding_correlator.cc b/gr-atsc/src/lib/qa_atsci_sliding_correlator.cc
deleted file mode 100644
index 4b215ba85..000000000
--- a/gr-atsc/src/lib/qa_atsci_sliding_correlator.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cppunit/TestAssert.h>
-#include <qa_atsci_sliding_correlator.h>
-#include <cstdio>
-
-void
-qa_atsci_sliding_correlator::t0 ()
-{
-
-#if 0
- int count = 0;
- int i;
- for (i = 0; i < 100; i++)
- printf ("%6d: %3d\n", count++, corr.input_bit (i & 1));
-
- for (i = 0; i < 511; i++)
- printf ("%6d: %3d\n", count++, corr.input_bit (atsc_pn511[i]));
-
- for (i = 0; i < 100; i++)
- printf ("%6d: %3d\n", count++, corr.input_bit ((i & 2) != 0));
-
- for (i = 0; i < 511; i++)
- printf ("%6d: %3d\n", count++, corr.input_bit (atsc_pn511[i] ^ 1));
-
- for (i = 0; i < 100; i++)
- printf ("%6d: %3d\n", count++,
- corr.input_bit (atsc_pn511[i] ^ atsc_pn511[i+31]));
-#endif
-
-}
diff --git a/gr-atsc/src/lib/qa_atsci_sliding_correlator.h b/gr-atsc/src/lib/qa_atsci_sliding_correlator.h
deleted file mode 100644
index bdcd09319..000000000
--- a/gr-atsc/src/lib/qa_atsci_sliding_correlator.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_SLIDING_CORRELATOR_H_
-#define _QA_ATSC_SLIDING_CORRELATOR_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdio.h>
-
-#include <atsci_sliding_correlator.h>
-
-class qa_atsci_sliding_correlator : public CppUnit::TestCase {
-
- public:
-
- void setUp (void)
- {
- corr.reset ();
- }
-
- CPPUNIT_TEST_SUITE (qa_atsci_sliding_correlator);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- atsci_sliding_correlator corr;
-
- void t0 ();
-};
-
-
-#endif /* _QA_ATSC_SLIDING_CORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_trellis_encoder.cc b/gr-atsc/src/lib/qa_atsci_trellis_encoder.cc
deleted file mode 100644
index d3a3482f0..000000000
--- a/gr-atsc/src/lib/qa_atsci_trellis_encoder.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/TestAssert.h>
-#include <qa_atsci_trellis_encoder.h>
-#include <cstdio>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-
-#define NELEM(x) (sizeof (x) / sizeof (x[0]))
-
-
-static const int NCODERS = atsci_trellis_encoder::NCODERS;
-
-void
-qa_atsci_trellis_encoder::t0 ()
-{
-#if 0 // generate i/o test data for t1
-
- atsc_mpeg_packet_rs_encoded in[NCODERS];
- atsc_data_segment out[NCODERS];
-
-
- memset (in, 0, sizeof (in));
- memset (out, 0, sizeof (out));
-
- srandom (1);
-
- printf ("@@@ INPUT @@@\n");
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (in[i].data); j++){
- int t = (random () >> 8) & 0xff; // 8 random bits
- in[i].data[j] = t;
- printf ("%d\n", t);
- }
- }
-
- enc.reset ();
- enc.encode (out, in);
-
- printf ("@@@ OUTPUT @@@\n");
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (out[i].data); j++){
- printf ("%d\n", out[i].data[j]);
- }
- }
-#endif
-}
-
-void
-qa_atsci_trellis_encoder::t1 ()
-{
- atsc_mpeg_packet_rs_encoded in[NCODERS];
- atsc_data_segment expected_out[NCODERS];
- atsc_data_segment actual_out[NCODERS];
- static const unsigned char raw_input[NCODERS * NELEM (in[0].data)] = {
-#include "qa_atsci_trellis_encoder_t1_input.dat"
- };
- static const unsigned char raw_output[NCODERS * NELEM (expected_out[0].data)] = {
-#include "qa_atsci_trellis_encoder_t1_output.dat"
- };
-
-
- // load up input
- const unsigned char *r = &raw_input[0];
- for (int i = 0; i < NCODERS; i++){
- in[i].pli.set_regular_seg (false, i);
- for (unsigned int j = 0; j < NELEM (in[i].data); j++){
- in[i].data[j] = *r++;
- }
- }
-
- // load up expected output
- r = &raw_output[0];
- for (int i = 0; i < NCODERS; i++){
- expected_out[i].pli.set_regular_seg (false, i);
- for (unsigned int j = 0; j < NELEM (expected_out[i].data); j++){
- expected_out[i].data[j] = *r++;
- }
- }
-
- memset (&actual_out, 0, sizeof (actual_out)); // ensure zero
-
- enc.reset ();
- enc.encode (actual_out, in); // trellis code test data
-
- for (int i = 0; i < NCODERS; i++){ // check the result
- CPPUNIT_ASSERT (expected_out[i] == actual_out[i]);
- CPPUNIT_ASSERT (expected_out[i].pli == actual_out[i].pli);
- }
-}
diff --git a/gr-atsc/src/lib/qa_atsci_trellis_encoder.h b/gr-atsc/src/lib/qa_atsci_trellis_encoder.h
deleted file mode 100644
index fcd114330..000000000
--- a/gr-atsc/src/lib/qa_atsci_trellis_encoder.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_TRELLIS_ENCODER_H_
-#define _QA_ATSC_TRELLIS_ENCODER_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdio.h>
-
-#include <atsci_trellis_encoder.h>
-
-class qa_atsci_trellis_encoder : public CppUnit::TestCase {
-
- public:
-
- void setUp (void)
- {
- enc.reset ();
- }
-
- CPPUNIT_TEST_SUITE (qa_atsci_trellis_encoder);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- atsci_trellis_encoder enc;
-
- void t0 ();
- void t1 ();
-};
-
-
-#endif /* _QA_ATSC_TRELLIS_ENCODER_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_input.dat b/gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_input.dat
deleted file mode 100644
index e6109ddfc..000000000
--- a/gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_input.dat
+++ /dev/null
@@ -1,2484 +0,0 @@
-69,
-35,
-152,
-72,
-220,
-92,
-148,
-88,
-31,
-124,
-88,
-215,
-65,
-30,
-169,
-225,
-0,
-98,
-8,
-39,
-35,
-233,
-205,
-67,
-15,
-37,
-249,
-114,
-194,
-215,
-196,
-7,
-251,
-93,
-80,
-215,
-186,
-228,
-48,
-217,
-97,
-137,
-177,
-163,
-168,
-90,
-132,
-168,
-189,
-140,
-208,
-224,
-118,
-158,
-36,
-134,
-196,
-29,
-248,
-134,
-245,
-189,
-141,
-240,
-26,
-221,
-200,
-212,
-194,
-248,
-173,
-35,
-130,
-95,
-198,
-42,
-185,
-74,
-211,
-119,
-215,
-164,
-88,
-78,
-66,
-124,
-212,
-6,
-154,
-204,
-141,
-143,
-137,
-27,
-127,
-164,
-249,
-72,
-120,
-187,
-64,
-38,
-222,
-195,
-133,
-165,
-237,
-63,
-240,
-193,
-183,
-199,
-101,
-15,
-21,
-168,
-140,
-233,
-175,
-38,
-182,
-60,
-182,
-64,
-87,
-53,
-228,
-80,
-126,
-93,
-11,
-191,
-132,
-234,
-130,
-10,
-143,
-112,
-74,
-127,
-49,
-2,
-71,
-150,
-18,
-93,
-63,
-158,
-71,
-238,
-197,
-253,
-43,
-123,
-62,
-130,
-177,
-35,
-211,
-47,
-129,
-223,
-238,
-6,
-202,
-112,
-17,
-89,
-224,
-91,
-217,
-17,
-94,
-33,
-168,
-112,
-126,
-231,
-14,
-197,
-214,
-212,
-195,
-1,
-79,
-1,
-132,
-1,
-36,
-87,
-48,
-165,
-55,
-30,
-172,
-1,
-143,
-189,
-90,
-112,
-24,
-52,
-130,
-119,
-85,
-42,
-231,
-211,
-18,
-246,
-153,
-232,
-202,
-92,
-234,
-26,
-93,
-110,
-27,
-130,
-197,
-75,
-40,
-253,
-106,
-212,
-254,
-250,
-145,
-89,
-106,
-170,
-141,
-236,
-33,
-227,
-23,
-9,
-183,
-41,
-255,
-80,
-18,
-201,
-172,
-252,
-227,
-10,
-107,
-255,
-141,
-49,
-74,
-181,
-46,
-181,
-138,
-44,
-175,
-27,
-133,
-26,
-198,
-19,
-6,
-232,
-246,
-29,
-241,
-174,
-71,
-240,
-254,
-90,
-185,
-171,
-87,
-157,
-182,
-194,
-157,
-67,
-243,
-232,
-248,
-34,
-157,
-130,
-78,
-77,
-158,
-212,
-103,
-100,
-231,
-110,
-76,
-222,
-140,
-61,
-140,
-211,
-46,
-138,
-46,
-232,
-54,
-133,
-133,
-236,
-72,
-35,
-47,
-59,
-11,
-40,
-94,
-168,
-171,
-172,
-246,
-74,
-128,
-93,
-174,
-104,
-204,
-251,
-70,
-88,
-57,
-210,
-44,
-103,
-93,
-90,
-79,
-148,
-223,
-213,
-129,
-39,
-248,
-177,
-99,
-4,
-217,
-193,
-172,
-133,
-110,
-162,
-207,
-239,
-0,
-126,
-87,
-205,
-121,
-158,
-37,
-179,
-113,
-81,
-27,
-207,
-171,
-107,
-99,
-139,
-65,
-228,
-178,
-58,
-149,
-22,
-62,
-111,
-216,
-234,
-244,
-70,
-141,
-195,
-54,
-142,
-66,
-141,
-91,
-187,
-44,
-129,
-111,
-157,
-210,
-138,
-108,
-126,
-245,
-208,
-9,
-55,
-180,
-188,
-113,
-74,
-211,
-175,
-185,
-171,
-154,
-174,
-242,
-40,
-114,
-40,
-183,
-180,
-182,
-19,
-112,
-226,
-148,
-223,
-128,
-103,
-106,
-237,
-229,
-96,
-189,
-239,
-151,
-114,
-172,
-8,
-189,
-127,
-184,
-118,
-43,
-83,
-37,
-29,
-123,
-151,
-70,
-50,
-76,
-252,
-69,
-188,
-223,
-218,
-156,
-96,
-65,
-6,
-77,
-39,
-102,
-11,
-23,
-254,
-125,
-195,
-7,
-59,
-67,
-191,
-178,
-111,
-18,
-215,
-141,
-142,
-111,
-211,
-192,
-187,
-208,
-6,
-119,
-176,
-225,
-19,
-16,
-34,
-26,
-94,
-74,
-128,
-105,
-97,
-127,
-231,
-37,
-134,
-35,
-104,
-69,
-213,
-215,
-88,
-172,
-101,
-230,
-27,
-56,
-167,
-214,
-9,
-174,
-78,
-185,
-143,
-98,
-202,
-178,
-124,
-40,
-253,
-253,
-146,
-94,
-124,
-122,
-131,
-2,
-157,
-236,
-72,
-114,
-196,
-161,
-31,
-41,
-136,
-58,
-98,
-47,
-17,
-107,
-222,
-96,
-37,
-110,
-194,
-239,
-32,
-63,
-24,
-29,
-60,
-170,
-124,
-185,
-37,
-0,
-188,
-195,
-237,
-4,
-53,
-178,
-165,
-84,
-219,
-45,
-143,
-62,
-93,
-161,
-169,
-60,
-1,
-206,
-170,
-196,
-190,
-203,
-4,
-214,
-232,
-65,
-129,
-101,
-250,
-166,
-102,
-182,
-105,
-83,
-186,
-159,
-5,
-96,
-244,
-225,
-142,
-132,
-31,
-236,
-37,
-201,
-40,
-39,
-152,
-210,
-236,
-86,
-157,
-240,
-44,
-134,
-49,
-173,
-235,
-44,
-83,
-81,
-226,
-189,
-165,
-157,
-93,
-170,
-254,
-81,
-140,
-141,
-213,
-171,
-121,
-251,
-117,
-161,
-35,
-13,
-116,
-16,
-99,
-17,
-0,
-144,
-152,
-50,
-61,
-132,
-95,
-145,
-214,
-66,
-79,
-123,
-223,
-172,
-38,
-222,
-254,
-178,
-107,
-211,
-94,
-229,
-207,
-212,
-134,
-242,
-225,
-251,
-2,
-69,
-12,
-3,
-214,
-164,
-54,
-20,
-40,
-149,
-165,
-254,
-215,
-245,
-122,
-183,
-162,
-160,
-150,
-160,
-83,
-1,
-116,
-177,
-230,
-67,
-133,
-109,
-54,
-103,
-104,
-56,
-173,
-117,
-60,
-131,
-26,
-115,
-151,
-67,
-9,
-61,
-65,
-224,
-50,
-188,
-152,
-212,
-92,
-46,
-116,
-175,
-48,
-232,
-97,
-23,
-44,
-231,
-132,
-98,
-78,
-237,
-155,
-251,
-98,
-215,
-126,
-124,
-74,
-22,
-191,
-83,
-83,
-1,
-52,
-133,
-189,
-205,
-90,
-26,
-252,
-207,
-202,
-45,
-183,
-43,
-68,
-228,
-19,
-201,
-70,
-98,
-182,
-225,
-93,
-25,
-185,
-220,
-150,
-4,
-243,
-86,
-88,
-70,
-88,
-141,
-203,
-21,
-90,
-38,
-48,
-87,
-245,
-250,
-132,
-173,
-38,
-200,
-145,
-57,
-145,
-215,
-156,
-72,
-185,
-250,
-98,
-114,
-215,
-248,
-119,
-202,
-78,
-207,
-16,
-166,
-92,
-220,
-188,
-183,
-2,
-237,
-14,
-247,
-231,
-146,
-164,
-14,
-91,
-53,
-72,
-237,
-13,
-228,
-53,
-199,
-222,
-151,
-57,
-181,
-144,
-177,
-127,
-222,
-128,
-143,
-133,
-220,
-107,
-66,
-147,
-109,
-47,
-162,
-101,
-23,
-52,
-9,
-37,
-143,
-63,
-110,
-125,
-77,
-82,
-179,
-20,
-49,
-75,
-78,
-230,
-219,
-255,
-102,
-186,
-127,
-246,
-64,
-92,
-98,
-130,
-240,
-208,
-177,
-146,
-53,
-200,
-198,
-63,
-238,
-86,
-127,
-92,
-212,
-204,
-175,
-135,
-224,
-224,
-210,
-47,
-199,
-173,
-46,
-45,
-104,
-174,
-36,
-168,
-10,
-134,
-42,
-250,
-86,
-220,
-141,
-139,
-165,
-83,
-203,
-148,
-170,
-74,
-241,
-126,
-22,
-160,
-6,
-247,
-128,
-216,
-38,
-72,
-134,
-85,
-117,
-238,
-3,
-153,
-151,
-13,
-32,
-194,
-8,
-118,
-158,
-149,
-2,
-68,
-233,
-205,
-217,
-148,
-23,
-202,
-19,
-46,
-106,
-25,
-38,
-235,
-241,
-76,
-51,
-120,
-162,
-169,
-103,
-165,
-66,
-254,
-179,
-98,
-192,
-188,
-217,
-95,
-82,
-219,
-164,
-59,
-169,
-125,
-208,
-193,
-71,
-227,
-239,
-177,
-252,
-22,
-157,
-238,
-98,
-208,
-102,
-5,
-121,
-206,
-170,
-188,
-204,
-94,
-31,
-141,
-26,
-248,
-237,
-108,
-212,
-146,
-168,
-125,
-15,
-120,
-62,
-87,
-91,
-46,
-9,
-88,
-68,
-166,
-70,
-167,
-118,
-173,
-172,
-240,
-124,
-87,
-172,
-72,
-181,
-203,
-214,
-207,
-196,
-196,
-59,
-152,
-86,
-228,
-21,
-102,
-92,
-84,
-190,
-183,
-131,
-199,
-16,
-199,
-110,
-86,
-110,
-229,
-4,
-27,
-213,
-128,
-114,
-129,
-201,
-39,
-77,
-160,
-247,
-17,
-100,
-51,
-169,
-187,
-23,
-191,
-33,
-115,
-20,
-223,
-43,
-151,
-167,
-59,
-94,
-21,
-146,
-205,
-251,
-150,
-233,
-208,
-23,
-91,
-82,
-224,
-131,
-159,
-129,
-122,
-177,
-229,
-173,
-91,
-160,
-196,
-27,
-194,
-56,
-47,
-162,
-99,
-198,
-74,
-159,
-37,
-95,
-49,
-243,
-91,
-200,
-220,
-43,
-223,
-55,
-126,
-192,
-187,
-29,
-65,
-53,
-207,
-39,
-226,
-42,
-200,
-167,
-69,
-138,
-223,
-116,
-45,
-67,
-59,
-119,
-226,
-97,
-215,
-20,
-84,
-50,
-221,
-48,
-94,
-188,
-104,
-220,
-125,
-35,
-249,
-191,
-89,
-200,
-230,
-60,
-243,
-175,
-227,
-56,
-57,
-195,
-173,
-103,
-7,
-233,
-222,
-234,
-74,
-181,
-254,
-158,
-232,
-219,
-207,
-70,
-152,
-56,
-34,
-22,
-92,
-28,
-213,
-181,
-229,
-188,
-241,
-216,
-107,
-213,
-17,
-165,
-153,
-190,
-12,
-160,
-167,
-235,
-139,
-242,
-161,
-138,
-144,
-137,
-101,
-96,
-208,
-254,
-152,
-242,
-20,
-244,
-14,
-234,
-170,
-243,
-167,
-155,
-204,
-19,
-113,
-221,
-184,
-11,
-156,
-197,
-171,
-68,
-177,
-55,
-54,
-82,
-193,
-199,
-220,
-39,
-39,
-172,
-37,
-192,
-158,
-58,
-180,
-173,
-37,
-94,
-161,
-204,
-250,
-109,
-224,
-108,
-75,
-153,
-119,
-232,
-94,
-35,
-45,
-15,
-90,
-99,
-98,
-27,
-43,
-62,
-66,
-83,
-234,
-104,
-20,
-137,
-162,
-201,
-54,
-200,
-39,
-215,
-149,
-34,
-69,
-117,
-142,
-144,
-14,
-6,
-121,
-109,
-41,
-166,
-125,
-131,
-10,
-223,
-159,
-53,
-29,
-225,
-137,
-8,
-74,
-157,
-145,
-237,
-102,
-200,
-181,
-142,
-159,
-74,
-177,
-229,
-192,
-64,
-118,
-207,
-70,
-239,
-60,
-111,
-149,
-185,
-243,
-160,
-153,
-146,
-214,
-182,
-116,
-95,
-191,
-190,
-253,
-80,
-171,
-99,
-25,
-97,
-242,
-185,
-172,
-163,
-158,
-108,
-228,
-20,
-59,
-42,
-4,
-120,
-154,
-154,
-49,
-141,
-58,
-202,
-32,
-16,
-129,
-149,
-112,
-65,
-83,
-109,
-146,
-255,
-209,
-171,
-96,
-196,
-100,
-13,
-103,
-2,
-121,
-76,
-23,
-181,
-118,
-28,
-45,
-17,
-183,
-95,
-158,
-241,
-42,
-191,
-2,
-172,
-84,
-115,
-237,
-168,
-224,
-127,
-168,
-178,
-42,
-8,
-118,
-142,
-22,
-222,
-145,
-143,
-42,
-169,
-69,
-160,
-197,
-114,
-177,
-124,
-210,
-80,
-110,
-252,
-16,
-113,
-168,
-101,
-228,
-149,
-13,
-197,
-20,
-181,
-119,
-63,
-190,
-237,
-206,
-212,
-203,
-95,
-100,
-245,
-9,
-169,
-150,
-207,
-28,
-72,
-76,
-238,
-153,
-186,
-234,
-169,
-44,
-146,
-14,
-17,
-40,
-28,
-214,
-61,
-209,
-77,
-125,
-144,
-59,
-75,
-100,
-6,
-171,
-200,
-252,
-180,
-114,
-147,
-131,
-142,
-219,
-207,
-124,
-117,
-138,
-102,
-31,
-183,
-249,
-45,
-200,
-34,
-74,
-158,
-96,
-27,
-236,
-221,
-172,
-39,
-40,
-16,
-46,
-212,
-217,
-43,
-136,
-75,
-190,
-11,
-217,
-154,
-219,
-85,
-15,
-102,
-188,
-46,
-29,
-182,
-92,
-229,
-217,
-166,
-131,
-57,
-194,
-112,
-22,
-110,
-151,
-63,
-127,
-197,
-19,
-88,
-241,
-156,
-163,
-175,
-168,
-125,
-73,
-131,
-211,
-88,
-233,
-143,
-135,
-7,
-70,
-227,
-236,
-31,
-138,
-112,
-88,
-77,
-224,
-111,
-187,
-120,
-174,
-59,
-62,
-194,
-147,
-47,
-94,
-55,
-222,
-6,
-180,
-40,
-138,
-135,
-129,
-116,
-23,
-8,
-123,
-93,
-236,
-103,
-125,
-118,
-216,
-213,
-195,
-184,
-69,
-127,
-49,
-244,
-187,
-111,
-182,
-78,
-158,
-21,
-134,
-125,
-27,
-59,
-165,
-165,
-195,
-38,
-25,
-218,
-47,
-149,
-56,
-27,
-252,
-181,
-146,
-213,
-139,
-86,
-142,
-208,
-213,
-191,
-196,
-145,
-46,
-123,
-223,
-205,
-144,
-102,
-75,
-171,
-161,
-240,
-81,
-101,
-23,
-107,
-64,
-70,
-0,
-120,
-98,
-253,
-46,
-244,
-210,
-185,
-74,
-96,
-138,
-32,
-32,
-78,
-177,
-79,
-201,
-145,
-28,
-89,
-248,
-103,
-5,
-154,
-88,
-87,
-255,
-112,
-195,
-63,
-183,
-196,
-184,
-25,
-193,
-230,
-14,
-148,
-160,
-89,
-245,
-42,
-122,
-21,
-121,
-43,
-100,
-67,
-189,
-129,
-157,
-182,
-233,
-162,
-80,
-65,
-250,
-80,
-178,
-190,
-143,
-105,
-130,
-72,
-131,
-67,
-47,
-145,
-216,
-208,
-235,
-205,
-251,
-101,
-227,
-116,
-145,
-71,
-183,
-78,
-201,
-84,
-4,
-178,
-247,
-85,
-244,
-242,
-165,
-166,
-176,
-53,
-16,
-50,
-126,
-147,
-118,
-173,
-37,
-78,
-125,
-16,
-28,
-120,
-117,
-0,
-237,
-6,
-71,
-164,
-85,
-17,
-249,
-90,
-195,
-240,
-175,
-184,
-227,
-85,
-94,
-147,
-138,
-110,
-197,
-8,
-2,
-60,
-182,
-39,
-139,
-51,
-55,
-167,
-172,
-173,
-167,
-153,
-179,
-239,
-62,
-9,
-1,
-55,
-99,
-196,
-40,
-19,
-124,
-12,
-104,
-219,
-159,
-243,
-74,
-101,
-251,
-76,
-161,
-178,
-115,
-44,
-230,
-171,
-212,
-146,
-88,
-124,
-44,
-12,
-108,
-107,
-21,
-109,
-163,
-121,
-50,
-204,
-140,
-175,
-216,
-244,
-138,
-119,
-232,
-213,
-221,
-228,
-33,
-127,
-150,
-149,
-172,
-124,
-64,
-129,
-15,
-153,
-253,
-59,
-166,
-105,
-167,
-187,
-215,
-74,
-53,
-9,
-22,
-193,
-184,
-238,
-182,
-67,
-102,
-158,
-24,
-68,
-130,
-58,
-195,
-24,
-207,
-111,
-149,
-16,
-240,
-164,
-170,
-238,
-224,
-80,
-88,
-135,
-12,
-47,
-209,
-65,
-57,
-232,
-2,
-242,
-215,
-185,
-53,
-62,
-87,
-78,
-130,
-218,
-136,
-69,
-243,
-87,
-181,
-136,
-104,
-166,
-44,
-18,
-148,
-13,
-99,
-237,
-148,
-111,
-28,
-102,
-176,
-86,
-79,
-179,
-72,
-38,
-109,
-125,
-100,
-197,
-203,
-231,
-159,
-83,
-44,
-146,
-171,
-226,
-27,
-20,
-137,
-72,
-39,
-29,
-85,
-138,
-10,
-234,
-249,
-39,
-81,
-170,
-125,
-160,
-94,
-197,
-198,
-203,
-67,
-43,
-145,
-15,
-18,
-48,
-98,
-63,
-195,
-14,
-34,
-222,
-35,
-171,
-39,
-74,
-201,
-125,
-212,
-212,
-103,
-206,
-251,
-185,
-121,
-121,
-89,
-215,
-63,
-32,
-163,
-130,
-75,
-52,
-145,
-94,
-101,
-244,
-158,
-40,
-3,
-192,
-7,
-38,
-107,
-47,
-113,
-52,
-172,
-69,
-8,
-20,
-20,
-4,
-205,
-141,
-126,
-38,
-101,
-189,
-71,
-9,
-64,
-147,
-62,
-210,
-241,
-163,
-198,
-143,
-204,
-202,
-80,
-212,
-241,
-187,
-4,
-98,
-240,
-176,
-168,
-249,
-197,
-188,
-254,
-146,
-73,
-124,
-185,
-175,
-57,
-1,
-184,
-122,
-148,
-246,
-76,
-134,
-154,
-19,
-21,
-102,
-222,
-102,
-59,
-207,
-33,
-63,
-49,
-18,
-240,
-218,
-11,
-181,
-150,
-9,
-72,
-224,
-134,
-2,
-143,
-192,
-3,
-71,
-58,
-151,
-62,
-135,
-29,
-216,
-154,
-51,
-63,
-120,
-153,
-123,
-72,
-187,
-187,
-122,
-206,
-171,
-84,
-218,
-97,
-234,
-228,
-169,
-203,
-106,
-172,
-90,
-42,
-175,
-162,
-101,
-71,
-224,
-236,
-101,
-185,
-135,
-153,
-248,
-0,
-51,
-116,
-72,
-238,
-47,
-194,
-189,
-218,
-22,
-151,
-60,
-1,
-123,
-230,
-204,
-230,
-146,
-38,
-17,
-66,
-200,
-118,
-137,
-169,
-99,
-239,
-98,
-234,
-136,
-91,
-234,
-187,
-208,
-51,
-170,
-255,
-245,
-103,
-218,
-11,
-255,
-22,
-12,
-123,
-252,
-217,
-97,
-142,
-255,
-115,
-208,
-200,
-234,
-90,
-114,
-77,
-73,
-212,
-56,
-209,
-48,
-35,
-141,
-0,
-86,
-55,
-0,
-75,
-159,
-218,
-87,
-159,
-240,
-100,
-26,
-237,
-61,
-124,
-124,
-61,
-239,
-77,
-6,
-218,
-167,
-120,
-39,
-241,
-77,
-96,
-195,
-125,
-132,
-80,
-126,
-218,
-136,
-126,
-38,
-40,
-88,
-126,
-199,
-73,
-226,
-225,
-55,
-32,
-94,
-179,
-94,
-78,
-1,
-100,
-40,
-168,
-220,
-80,
-154,
-41,
-177,
-93,
-167,
-53,
-173,
-37,
-16,
-54,
-164,
-55,
-94,
-253,
-181,
-37,
-70,
-152,
-7,
-126,
-184,
-102,
-50,
-22,
-180,
-51,
-123,
-221,
-220,
-87,
-46,
-118,
-129,
-223,
-211,
-41,
-20,
-129,
-78,
-37,
-183,
-243,
-92,
-21,
-240,
-17,
-59,
-55,
-169,
-67,
-181,
-98,
-170,
-231,
-121,
-94,
-27,
-244,
-60,
-247,
-76,
-106,
-109,
-206,
-73,
-64,
-247,
-94,
-193,
-70,
-131,
-121,
-57,
-223,
-143,
-41,
-241,
-203,
-97,
-155,
-14,
-23,
-253,
-184,
-255,
-119,
-23,
-26,
-108,
-83,
-17,
-184,
-190,
-127,
-135,
-7,
-191,
-126,
-102,
-129,
-196,
-233,
-251,
-254,
-200,
-138,
-40,
-186,
-85,
-137,
-85,
-100,
-160,
-83,
-29,
-159,
-202,
-53,
-185,
-54,
-137,
-203,
-239,
-71,
-74,
-119,
-79,
-10,
-245,
-181,
-140,
-186,
-158,
-135,
-184,
-103,
-18,
-224,
-33,
-103,
-106,
-118,
-204,
-10,
-201,
-234,
-170,
-147,
-31,
-99,
-202,
-168,
-47,
-186,
-239,
-121,
-50,
-62,
-131,
-39,
-243,
-15,
-225,
-146,
-151,
-154,
-249,
-169,
-123,
-26,
-17,
-229,
-145,
-221,
-239,
-90,
-199,
-153,
-238,
-230,
-253,
-185,
-142,
-44,
-116,
-126,
-166,
-166,
-189,
-41,
-206,
-176,
-57,
-176,
-67,
-208,
-74,
-60,
-121,
-197,
-87,
-138,
-170,
-232,
-104,
-154,
-67,
-48,
-52,
-50,
-22,
-49,
-236,
-165,
-94,
-96,
-36,
-4,
-7,
-225,
-46,
-213,
-146,
-104,
-133,
-213,
-57,
-207,
-18,
-178,
-149,
-105,
-61,
-63,
-82,
-166,
-218,
-150,
-214,
-14,
-200,
-237,
-64,
-180,
-147,
-159,
-21,
-183,
-164,
-28,
-152,
-210,
-241,
-42,
-59,
-118,
-0,
-116,
-70,
-18,
diff --git a/gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_output.dat b/gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_output.dat
deleted file mode 100644
index 175d482b4..000000000
--- a/gr-atsc/src/lib/qa_atsci_trellis_encoder_t1_output.dat
+++ /dev/null
@@ -1,9984 +0,0 @@
-6,
-1,
-1,
-6,
-2,
-0,
-4,
-2,
-6,
-2,
-4,
-2,
-0,
-2,
-2,
-6,
-1,
-4,
-6,
-1,
-7,
-3,
-6,
-3,
-2,
-7,
-3,
-7,
-2,
-4,
-1,
-4,
-3,
-7,
-7,
-5,
-7,
-3,
-5,
-7,
-2,
-2,
-0,
-5,
-0,
-4,
-5,
-5,
-3,
-0,
-5,
-2,
-3,
-1,
-5,
-2,
-1,
-7,
-5,
-5,
-0,
-7,
-3,
-2,
-1,
-2,
-0,
-4,
-0,
-1,
-5,
-1,
-5,
-1,
-0,
-1,
-1,
-6,
-5,
-4,
-1,
-1,
-1,
-3,
-4,
-5,
-7,
-0,
-3,
-1,
-6,
-6,
-0,
-5,
-1,
-6,
-3,
-7,
-7,
-7,
-0,
-0,
-2,
-7,
-7,
-3,
-7,
-4,
-7,
-6,
-6,
-3,
-1,
-5,
-7,
-3,
-5,
-2,
-4,
-4,
-2,
-6,
-6,
-2,
-6,
-6,
-1,
-0,
-5,
-2,
-7,
-6,
-4,
-3,
-5,
-2,
-2,
-6,
-3,
-5,
-1,
-7,
-5,
-3,
-2,
-3,
-4,
-7,
-5,
-3,
-0,
-2,
-3,
-1,
-1,
-5,
-5,
-2,
-1,
-1,
-2,
-5,
-7,
-2,
-4,
-1,
-7,
-1,
-0,
-2,
-0,
-5,
-4,
-7,
-5,
-5,
-5,
-5,
-4,
-1,
-5,
-5,
-3,
-1,
-0,
-4,
-5,
-6,
-6,
-7,
-7,
-7,
-4,
-0,
-1,
-1,
-4,
-1,
-3,
-2,
-6,
-0,
-5,
-0,
-3,
-1,
-7,
-5,
-2,
-0,
-2,
-5,
-3,
-3,
-1,
-1,
-1,
-2,
-2,
-5,
-7,
-7,
-0,
-4,
-3,
-7,
-3,
-2,
-3,
-6,
-4,
-7,
-7,
-5,
-0,
-5,
-4,
-0,
-0,
-4,
-0,
-7,
-4,
-0,
-2,
-1,
-4,
-2,
-5,
-7,
-7,
-2,
-7,
-3,
-0,
-1,
-6,
-7,
-4,
-6,
-6,
-7,
-5,
-3,
-5,
-6,
-4,
-4,
-7,
-2,
-2,
-5,
-0,
-2,
-1,
-3,
-5,
-0,
-2,
-5,
-7,
-2,
-3,
-4,
-4,
-2,
-1,
-0,
-1,
-0,
-3,
-2,
-0,
-3,
-7,
-5,
-0,
-3,
-7,
-3,
-7,
-4,
-3,
-2,
-1,
-3,
-4,
-0,
-6,
-1,
-6,
-7,
-6,
-0,
-2,
-1,
-0,
-6,
-7,
-5,
-1,
-5,
-4,
-6,
-6,
-2,
-4,
-6,
-5,
-2,
-1,
-0,
-2,
-1,
-2,
-2,
-3,
-1,
-4,
-0,
-6,
-3,
-7,
-1,
-4,
-7,
-5,
-5,
-5,
-0,
-6,
-4,
-4,
-7,
-6,
-0,
-6,
-4,
-4,
-4,
-5,
-3,
-3,
-0,
-4,
-2,
-6,
-3,
-1,
-3,
-3,
-3,
-1,
-5,
-7,
-2,
-0,
-0,
-5,
-5,
-4,
-1,
-3,
-7,
-3,
-3,
-2,
-1,
-6,
-2,
-6,
-1,
-7,
-1,
-6,
-2,
-4,
-4,
-6,
-0,
-3,
-1,
-2,
-7,
-5,
-5,
-6,
-0,
-5,
-1,
-1,
-7,
-5,
-4,
-5,
-0,
-5,
-7,
-3,
-0,
-6,
-2,
-6,
-3,
-7,
-5,
-4,
-7,
-5,
-0,
-5,
-6,
-6,
-2,
-6,
-6,
-2,
-2,
-1,
-3,
-7,
-1,
-5,
-1,
-1,
-7,
-1,
-4,
-6,
-0,
-6,
-0,
-0,
-0,
-7,
-4,
-0,
-1,
-4,
-0,
-5,
-0,
-6,
-3,
-3,
-7,
-6,
-1,
-7,
-5,
-3,
-2,
-4,
-2,
-3,
-7,
-3,
-3,
-6,
-0,
-5,
-7,
-7,
-5,
-1,
-1,
-5,
-6,
-2,
-0,
-3,
-3,
-7,
-6,
-4,
-0,
-6,
-6,
-3,
-4,
-2,
-7,
-5,
-3,
-2,
-6,
-5,
-7,
-6,
-2,
-2,
-4,
-3,
-7,
-7,
-0,
-6,
-3,
-0,
-3,
-1,
-1,
-4,
-4,
-7,
-6,
-4,
-1,
-1,
-3,
-7,
-6,
-4,
-6,
-0,
-4,
-0,
-6,
-7,
-2,
-0,
-0,
-7,
-0,
-5,
-0,
-0,
-4,
-1,
-3,
-5,
-6,
-7,
-1,
-4,
-2,
-6,
-4,
-0,
-0,
-6,
-1,
-1,
-3,
-5,
-0,
-7,
-3,
-4,
-0,
-4,
-4,
-2,
-1,
-5,
-7,
-7,
-5,
-3,
-5,
-4,
-2,
-4,
-0,
-3,
-7,
-3,
-2,
-4,
-6,
-0,
-1,
-6,
-3,
-2,
-2,
-1,
-0,
-0,
-6,
-1,
-2,
-7,
-1,
-5,
-7,
-7,
-7,
-3,
-7,
-3,
-3,
-4,
-5,
-3,
-1,
-0,
-6,
-3,
-1,
-6,
-1,
-3,
-3,
-3,
-2,
-4,
-5,
-5,
-4,
-6,
-1,
-0,
-7,
-6,
-0,
-7,
-2,
-5,
-7,
-2,
-0,
-6,
-5,
-0,
-6,
-0,
-1,
-4,
-7,
-6,
-6,
-0,
-0,
-5,
-3,
-0,
-2,
-6,
-2,
-1,
-5,
-4,
-0,
-2,
-6,
-2,
-6,
-2,
-7,
-1,
-4,
-4,
-5,
-6,
-2,
-7,
-7,
-6,
-4,
-3,
-5,
-4,
-6,
-7,
-3,
-5,
-7,
-1,
-7,
-7,
-6,
-3,
-1,
-1,
-3,
-3,
-4,
-4,
-5,
-1,
-0,
-1,
-5,
-6,
-1,
-4,
-1,
-6,
-7,
-3,
-7,
-1,
-7,
-3,
-6,
-0,
-3,
-5,
-1,
-0,
-3,
-5,
-6,
-7,
-3,
-6,
-4,
-2,
-0,
-0,
-1,
-0,
-2,
-5,
-0,
-6,
-2,
-4,
-4,
-1,
-1,
-1,
-1,
-4,
-2,
-3,
-4,
-6,
-2,
-4,
-4,
-6,
-0,
-2,
-1,
-6,
-3,
-0,
-6,
-1,
-1,
-2,
-6,
-2,
-3,
-0,
-3,
-5,
-7,
-1,
-7,
-0,
-0,
-5,
-5,
-5,
-5,
-2,
-2,
-4,
-4,
-4,
-7,
-7,
-3,
-0,
-4,
-4,
-3,
-3,
-6,
-7,
-3,
-5,
-2,
-7,
-7,
-7,
-5,
-3,
-6,
-5,
-5,
-1,
-3,
-4,
-2,
-2,
-0,
-5,
-6,
-7,
-6,
-1,
-4,
-1,
-0,
-1,
-7,
-2,
-1,
-3,
-2,
-4,
-3,
-5,
-3,
-7,
-3,
-6,
-5,
-6,
-1,
-1,
-6,
-7,
-7,
-7,
-5,
-4,
-3,
-0,
-7,
-3,
-4,
-4,
-3,
-5,
-6,
-0,
-1,
-1,
-6,
-4,
-0,
-3,
-1,
-7,
-1,
-1,
-0,
-3,
-1,
-4,
-4,
-0,
-5,
-2,
-4,
-3,
-7,
-3,
-2,
-1,
-5,
-3,
-6,
-0,
-2,
-2,
-3,
-6,
-2,
-2,
-5,
-3,
-5,
-1,
-5,
-4,
-6,
-5,
-3,
-2,
-6,
-6,
-2,
-4,
-5,
-3,
-0,
-0,
-3,
-0,
-2,
-7,
-1,
-7,
-4,
-3,
-1,
-2,
-7,
-0,
-3,
-5,
-0,
-1,
-4,
-1,
-6,
-3,
-5,
-4,
-3,
-0,
-6,
-4,
-0,
-5,
-5,
-3,
-7,
-4,
-1,
-4,
-4,
-4,
-0,
-7,
-0,
-3,
-0,
-0,
-1,
-1,
-5,
-2,
-3,
-4,
-0,
-7,
-4,
-2,
-5,
-3,
-3,
-4,
-1,
-3,
-1,
-6,
-6,
-2,
-6,
-6,
-6,
-7,
-2,
-5,
-7,
-5,
-7,
-3,
-5,
-2,
-3,
-1,
-4,
-2,
-2,
-6,
-4,
-1,
-2,
-5,
-4,
-5,
-7,
-0,
-2,
-6,
-1,
-4,
-1,
-7,
-6,
-5,
-1,
-0,
-2,
-7,
-1,
-3,
-0,
-0,
-2,
-4,
-5,
-3,
-4,
-7,
-6,
-7,
-2,
-3,
-5,
-0,
-4,
-1,
-4,
-4,
-5,
-1,
-5,
-2,
-0,
-0,
-2,
-4,
-2,
-0,
-1,
-1,
-6,
-1,
-6,
-0,
-2,
-5,
-2,
-2,
-3,
-5,
-6,
-6,
-0,
-3,
-0,
-2,
-1,
-0,
-3,
-5,
-3,
-0,
-4,
-2,
-6,
-2,
-4,
-5,
-6,
-1,
-7,
-2,
-0,
-7,
-0,
-3,
-3,
-6,
-6,
-0,
-0,
-0,
-0,
-6,
-3,
-3,
-4,
-1,
-7,
-3,
-7,
-7,
-4,
-3,
-5,
-7,
-7,
-0,
-2,
-3,
-4,
-7,
-1,
-1,
-0,
-5,
-4,
-1,
-6,
-3,
-5,
-6,
-5,
-0,
-5,
-3,
-6,
-7,
-1,
-5,
-2,
-5,
-6,
-2,
-2,
-7,
-5,
-4,
-1,
-6,
-2,
-3,
-1,
-7,
-4,
-7,
-4,
-3,
-1,
-7,
-0,
-6,
-6,
-2,
-0,
-2,
-4,
-5,
-0,
-4,
-1,
-3,
-1,
-3,
-7,
-4,
-5,
-2,
-2,
-3,
-0,
-5,
-5,
-2,
-4,
-3,
-7,
-0,
-2,
-3,
-3,
-6,
-2,
-6,
-3,
-4,
-5,
-0,
-4,
-2,
-2,
-5,
-5,
-0,
-5,
-4,
-2,
-4,
-2,
-7,
-3,
-7,
-3,
-7,
-7,
-2,
-2,
-2,
-6,
-2,
-6,
-1,
-3,
-1,
-1,
-2,
-4,
-7,
-4,
-1,
-1,
-1,
-7,
-5,
-6,
-1,
-5,
-0,
-3,
-5,
-0,
-4,
-6,
-2,
-5,
-5,
-6,
-5,
-5,
-4,
-5,
-3,
-0,
-5,
-0,
-0,
-1,
-3,
-5,
-3,
-1,
-2,
-1,
-2,
-2,
-6,
-6,
-4,
-1,
-0,
-2,
-4,
-5,
-5,
-1,
-4,
-3,
-6,
-5,
-4,
-7,
-1,
-0,
-5,
-5,
-6,
-5,
-0,
-5,
-3,
-6,
-0,
-6,
-4,
-6,
-4,
-1,
-6,
-1,
-4,
-1,
-7,
-4,
-0,
-6,
-3,
-1,
-1,
-5,
-3,
-5,
-0,
-7,
-6,
-0,
-0,
-3,
-7,
-6,
-6,
-5,
-5,
-5,
-6,
-4,
-0,
-4,
-0,
-3,
-0,
-6,
-2,
-3,
-7,
-7,
-5,
-3,
-0,
-6,
-2,
-2,
-5,
-1,
-1,
-6,
-4,
-6,
-2,
-3,
-4,
-1,
-3,
-2,
-2,
-4,
-6,
-0,
-7,
-0,
-4,
-0,
-2,
-2,
-7,
-5,
-4,
-5,
-4,
-6,
-1,
-0,
-6,
-5,
-1,
-6,
-6,
-0,
-6,
-0,
-2,
-3,
-5,
-0,
-3,
-0,
-2,
-5,
-2,
-7,
-5,
-3,
-3,
-3,
-5,
-4,
-7,
-7,
-4,
-4,
-3,
-5,
-2,
-3,
-7,
-2,
-5,
-6,
-0,
-5,
-4,
-7,
-5,
-5,
-6,
-0,
-2,
-2,
-7,
-3,
-1,
-7,
-2,
-5,
-7,
-7,
-1,
-5,
-2,
-5,
-2,
-7,
-0,
-6,
-3,
-3,
-6,
-0,
-4,
-4,
-5,
-0,
-0,
-0,
-1,
-2,
-3,
-0,
-2,
-3,
-3,
-7,
-2,
-1,
-6,
-7,
-0,
-7,
-2,
-7,
-5,
-7,
-1,
-7,
-4,
-4,
-3,
-3,
-1,
-1,
-6,
-7,
-6,
-0,
-1,
-0,
-6,
-7,
-1,
-6,
-4,
-3,
-7,
-0,
-6,
-7,
-5,
-7,
-3,
-7,
-3,
-4,
-1,
-4,
-1,
-1,
-5,
-1,
-7,
-5,
-1,
-4,
-4,
-2,
-4,
-1,
-1,
-4,
-4,
-3,
-6,
-3,
-3,
-7,
-3,
-7,
-3,
-6,
-7,
-3,
-7,
-0,
-0,
-0,
-4,
-5,
-1,
-7,
-7,
-2,
-2,
-3,
-1,
-7,
-6,
-7,
-7,
-7,
-7,
-0,
-6,
-5,
-6,
-0,
-1,
-5,
-5,
-1,
-7,
-6,
-2,
-7,
-0,
-0,
-7,
-3,
-7,
-5,
-0,
-5,
-6,
-0,
-4,
-3,
-0,
-5,
-5,
-5,
-6,
-3,
-1,
-1,
-6,
-4,
-6,
-4,
-0,
-0,
-7,
-1,
-2,
-4,
-6,
-1,
-5,
-4,
-7,
-3,
-4,
-1,
-0,
-3,
-3,
-5,
-6,
-7,
-4,
-2,
-1,
-5,
-2,
-0,
-7,
-6,
-1,
-0,
-1,
-0,
-1,
-3,
-7,
-3,
-1,
-3,
-3,
-6,
-5,
-5,
-2,
-3,
-6,
-7,
-4,
-0,
-4,
-5,
-2,
-7,
-3,
-0,
-4,
-7,
-2,
-6,
-5,
-7,
-3,
-3,
-6,
-5,
-2,
-5,
-2,
-2,
-3,
-4,
-0,
-7,
-3,
-6,
-5,
-1,
-0,
-2,
-1,
-4,
-3,
-4,
-3,
-2,
-0,
-4,
-6,
-5,
-6,
-6,
-4,
-0,
-4,
-0,
-7,
-0,
-3,
-4,
-0,
-1,
-1,
-5,
-3,
-4,
-7,
-4,
-2,
-4,
-7,
-0,
-6,
-7,
-6,
-6,
-6,
-1,
-1,
-6,
-0,
-0,
-4,
-4,
-7,
-6,
-6,
-4,
-5,
-0,
-1,
-2,
-4,
-0,
-1,
-4,
-3,
-4,
-1,
-2,
-7,
-6,
-5,
-5,
-6,
-6,
-4,
-2,
-4,
-6,
-2,
-7,
-2,
-7,
-1,
-2,
-3,
-1,
-7,
-3,
-5,
-1,
-4,
-1,
-4,
-1,
-7,
-4,
-1,
-0,
-7,
-7,
-4,
-2,
-0,
-7,
-6,
-1,
-2,
-2,
-1,
-5,
-4,
-2,
-5,
-6,
-4,
-6,
-7,
-1,
-2,
-7,
-5,
-6,
-1,
-0,
-0,
-7,
-0,
-6,
-5,
-3,
-1,
-5,
-7,
-2,
-4,
-0,
-7,
-3,
-6,
-3,
-1,
-2,
-4,
-7,
-6,
-1,
-3,
-4,
-3,
-6,
-1,
-3,
-5,
-0,
-7,
-2,
-2,
-4,
-1,
-4,
-2,
-2,
-0,
-4,
-3,
-6,
-7,
-2,
-3,
-1,
-3,
-4,
-2,
-7,
-3,
-1,
-6,
-3,
-0,
-3,
-7,
-2,
-0,
-2,
-1,
-3,
-1,
-6,
-6,
-3,
-3,
-5,
-0,
-2,
-3,
-1,
-6,
-6,
-3,
-2,
-3,
-4,
-7,
-5,
-7,
-7,
-5,
-4,
-4,
-4,
-2,
-1,
-7,
-1,
-4,
-5,
-7,
-5,
-7,
-5,
-6,
-4,
-0,
-6,
-6,
-6,
-5,
-5,
-4,
-5,
-4,
-0,
-1,
-4,
-2,
-2,
-2,
-4,
-4,
-3,
-5,
-7,
-3,
-3,
-2,
-0,
-3,
-7,
-7,
-4,
-7,
-4,
-6,
-0,
-3,
-7,
-4,
-6,
-7,
-1,
-7,
-2,
-3,
-3,
-6,
-5,
-4,
-6,
-4,
-3,
-0,
-5,
-6,
-7,
-6,
-5,
-5,
-2,
-3,
-0,
-6,
-3,
-1,
-5,
-0,
-7,
-4,
-3,
-4,
-6,
-1,
-6,
-5,
-2,
-6,
-3,
-6,
-4,
-4,
-4,
-3,
-3,
-5,
-3,
-0,
-6,
-6,
-4,
-3,
-3,
-4,
-3,
-7,
-1,
-7,
-5,
-7,
-5,
-5,
-5,
-1,
-3,
-6,
-5,
-6,
-1,
-2,
-3,
-1,
-6,
-6,
-0,
-3,
-2,
-5,
-5,
-4,
-3,
-2,
-0,
-1,
-4,
-4,
-1,
-4,
-6,
-0,
-5,
-4,
-4,
-7,
-1,
-3,
-2,
-4,
-4,
-1,
-1,
-5,
-5,
-6,
-7,
-7,
-6,
-0,
-5,
-4,
-7,
-2,
-6,
-2,
-7,
-1,
-1,
-2,
-0,
-5,
-4,
-0,
-1,
-0,
-6,
-2,
-6,
-4,
-1,
-6,
-2,
-6,
-7,
-0,
-5,
-2,
-7,
-3,
-0,
-7,
-3,
-3,
-7,
-6,
-1,
-6,
-5,
-3,
-7,
-7,
-0,
-1,
-2,
-7,
-5,
-5,
-5,
-3,
-5,
-5,
-6,
-0,
-4,
-5,
-4,
-0,
-7,
-2,
-1,
-3,
-5,
-1,
-4,
-7,
-4,
-3,
-6,
-3,
-0,
-4,
-3,
-2,
-1,
-7,
-2,
-1,
-2,
-0,
-7,
-5,
-7,
-4,
-6,
-4,
-3,
-0,
-5,
-3,
-7,
-3,
-3,
-1,
-7,
-4,
-2,
-2,
-4,
-3,
-6,
-2,
-1,
-5,
-0,
-7,
-2,
-0,
-7,
-7,
-7,
-3,
-2,
-6,
-1,
-5,
-5,
-4,
-6,
-4,
-3,
-3,
-5,
-6,
-7,
-1,
-1,
-1,
-0,
-1,
-5,
-4,
-2,
-2,
-1,
-0,
-5,
-4,
-7,
-1,
-5,
-6,
-6,
-6,
-6,
-4,
-1,
-0,
-1,
-5,
-6,
-1,
-6,
-0,
-4,
-3,
-5,
-0,
-3,
-4,
-1,
-2,
-0,
-1,
-2,
-6,
-0,
-1,
-6,
-0,
-6,
-0,
-5,
-4,
-0,
-5,
-3,
-5,
-0,
-5,
-4,
-2,
-2,
-2,
-5,
-0,
-4,
-5,
-1,
-6,
-6,
-7,
-4,
-3,
-7,
-7,
-5,
-0,
-4,
-1,
-3,
-0,
-7,
-0,
-0,
-5,
-5,
-1,
-1,
-6,
-6,
-7,
-0,
-4,
-3,
-1,
-2,
-3,
-5,
-7,
-1,
-3,
-1,
-2,
-3,
-2,
-4,
-0,
-3,
-4,
-1,
-2,
-1,
-7,
-0,
-0,
-1,
-5,
-7,
-5,
-1,
-5,
-5,
-6,
-7,
-4,
-1,
-2,
-7,
-0,
-3,
-2,
-5,
-4,
-3,
-5,
-0,
-5,
-6,
-7,
-2,
-5,
-6,
-4,
-7,
-5,
-6,
-4,
-7,
-6,
-6,
-7,
-0,
-0,
-4,
-6,
-6,
-4,
-4,
-3,
-7,
-4,
-7,
-0,
-4,
-3,
-2,
-5,
-0,
-5,
-6,
-5,
-0,
-4,
-5,
-7,
-0,
-3,
-3,
-0,
-0,
-2,
-7,
-1,
-5,
-2,
-5,
-5,
-2,
-2,
-5,
-7,
-6,
-6,
-3,
-1,
-0,
-7,
-5,
-1,
-3,
-0,
-3,
-7,
-3,
-1,
-2,
-3,
-3,
-5,
-7,
-7,
-5,
-6,
-4,
-2,
-1,
-6,
-6,
-2,
-5,
-7,
-2,
-4,
-1,
-5,
-3,
-0,
-1,
-6,
-1,
-0,
-5,
-0,
-6,
-3,
-5,
-6,
-7,
-4,
-3,
-7,
-4,
-0,
-5,
-3,
-1,
-5,
-1,
-4,
-0,
-2,
-0,
-1,
-5,
-2,
-7,
-3,
-4,
-1,
-3,
-0,
-3,
-3,
-5,
-5,
-4,
-3,
-2,
-6,
-1,
-5,
-4,
-6,
-5,
-3,
-2,
-7,
-5,
-5,
-6,
-0,
-0,
-7,
-7,
-7,
-1,
-0,
-4,
-2,
-6,
-5,
-7,
-0,
-7,
-0,
-1,
-1,
-3,
-7,
-0,
-6,
-6,
-5,
-5,
-2,
-1,
-5,
-1,
-7,
-0,
-3,
-0,
-5,
-1,
-3,
-3,
-3,
-5,
-4,
-3,
-0,
-5,
-0,
-4,
-0,
-2,
-2,
-4,
-3,
-7,
-7,
-6,
-7,
-6,
-5,
-0,
-3,
-4,
-0,
-3,
-2,
-2,
-5,
-2,
-5,
-6,
-6,
-0,
-7,
-4,
-4,
-1,
-4,
-2,
-3,
-1,
-1,
-5,
-0,
-6,
-4,
-6,
-6,
-7,
-0,
-5,
-6,
-4,
-1,
-2,
-4,
-1,
-1,
-7,
-7,
-0,
-6,
-0,
-4,
-3,
-3,
-0,
-2,
-4,
-6,
-5,
-5,
-1,
-3,
-3,
-6,
-1,
-1,
-6,
-3,
-3,
-4,
-3,
-7,
-4,
-3,
-3,
-4,
-1,
-4,
-2,
-5,
-3,
-0,
-6,
-6,
-1,
-4,
-6,
-0,
-3,
-3,
-3,
-7,
-2,
-4,
-2,
-6,
-0,
-5,
-6,
-4,
-6,
-7,
-7,
-2,
-6,
-0,
-7,
-5,
-7,
-2,
-7,
-0,
-0,
-0,
-6,
-2,
-7,
-4,
-1,
-6,
-5,
-2,
-7,
-6,
-2,
-7,
-6,
-5,
-5,
-4,
-3,
-4,
-7,
-1,
-4,
-1,
-5,
-5,
-5,
-0,
-1,
-4,
-6,
-6,
-0,
-2,
-5,
-2,
-6,
-3,
-2,
-1,
-1,
-2,
-6,
-5,
-1,
-0,
-4,
-0,
-0,
-0,
-6,
-2,
-7,
-3,
-5,
-4,
-6,
-2,
-5,
-0,
-0,
-5,
-7,
-4,
-6,
-5,
-2,
-7,
-6,
-3,
-2,
-4,
-0,
-2,
-3,
-4,
-6,
-7,
-2,
-5,
-5,
-7,
-2,
-0,
-4,
-2,
-6,
-6,
-3,
-4,
-3,
-5,
-2,
-0,
-7,
-6,
-6,
-7,
-2,
-5,
-7,
-7,
-5,
-1,
-6,
-7,
-3,
-5,
-1,
-1,
-5,
-0,
-6,
-3,
-7,
-7,
-3,
-3,
-4,
-2,
-6,
-7,
-4,
-7,
-0,
-2,
-6,
-0,
-1,
-2,
-5,
-6,
-0,
-2,
-5,
-5,
-4,
-0,
-2,
-3,
-7,
-2,
-6,
-5,
-0,
-4,
-4,
-1,
-2,
-6,
-5,
-3,
-2,
-1,
-0,
-0,
-2,
-2,
-1,
-3,
-1,
-5,
-2,
-4,
-0,
-0,
-0,
-5,
-5,
-7,
-6,
-0,
-0,
-4,
-2,
-1,
-6,
-3,
-4,
-6,
-0,
-3,
-6,
-3,
-7,
-5,
-3,
-2,
-7,
-3,
-0,
-6,
-3,
-6,
-7,
-3,
-5,
-2,
-5,
-0,
-1,
-0,
-0,
-7,
-3,
-0,
-3,
-6,
-7,
-4,
-1,
-4,
-5,
-5,
-2,
-5,
-2,
-4,
-6,
-2,
-2,
-2,
-5,
-0,
-7,
-0,
-3,
-5,
-6,
-2,
-0,
-3,
-4,
-3,
-5,
-0,
-6,
-1,
-1,
-5,
-7,
-1,
-2,
-3,
-0,
-7,
-1,
-0,
-0,
-0,
-7,
-7,
-5,
-2,
-5,
-2,
-4,
-6,
-1,
-2,
-2,
-1,
-0,
-6,
-5,
-4,
-4,
-0,
-4,
-0,
-7,
-5,
-5,
-6,
-5,
-2,
-3,
-4,
-7,
-0,
-6,
-6,
-6,
-6,
-0,
-0,
-2,
-3,
-6,
-4,
-1,
-6,
-7,
-7,
-0,
-2,
-1,
-0,
-2,
-3,
-4,
-2,
-5,
-7,
-1,
-7,
-0,
-1,
-2,
-6,
-1,
-4,
-0,
-7,
-7,
-3,
-3,
-4,
-0,
-6,
-0,
-1,
-6,
-3,
-2,
-7,
-6,
-0,
-2,
-5,
-4,
-2,
-0,
-0,
-4,
-7,
-5,
-6,
-2,
-7,
-6,
-2,
-6,
-3,
-2,
-1,
-0,
-4,
-4,
-4,
-1,
-5,
-7,
-4,
-5,
-7,
-3,
-0,
-0,
-3,
-1,
-6,
-2,
-1,
-3,
-0,
-2,
-0,
-5,
-3,
-4,
-5,
-0,
-1,
-0,
-7,
-2,
-6,
-0,
-5,
-5,
-3,
-2,
-7,
-3,
-0,
-6,
-0,
-0,
-3,
-0,
-4,
-7,
-6,
-1,
-2,
-1,
-5,
-1,
-7,
-4,
-7,
-2,
-3,
-6,
-6,
-2,
-0,
-5,
-6,
-2,
-1,
-6,
-2,
-5,
-3,
-2,
-3,
-0,
-2,
-3,
-6,
-2,
-7,
-1,
-4,
-4,
-2,
-7,
-7,
-4,
-3,
-6,
-5,
-1,
-6,
-6,
-2,
-1,
-6,
-1,
-4,
-0,
-5,
-2,
-2,
-6,
-4,
-4,
-5,
-4,
-3,
-3,
-5,
-6,
-3,
-7,
-0,
-0,
-4,
-2,
-4,
-3,
-1,
-2,
-6,
-3,
-0,
-5,
-4,
-6,
-4,
-3,
-7,
-7,
-7,
-4,
-0,
-7,
-7,
-1,
-2,
-7,
-6,
-1,
-7,
-6,
-6,
-0,
-4,
-4,
-3,
-5,
-3,
-3,
-5,
-3,
-2,
-4,
-2,
-2,
-6,
-1,
-6,
-7,
-1,
-4,
-0,
-0,
-4,
-6,
-1,
-1,
-1,
-6,
-0,
-6,
-3,
-3,
-5,
-3,
-6,
-5,
-4,
-2,
-0,
-6,
-0,
-2,
-4,
-5,
-2,
-1,
-5,
-2,
-7,
-4,
-5,
-1,
-2,
-3,
-7,
-7,
-6,
-5,
-4,
-6,
-7,
-6,
-6,
-2,
-5,
-7,
-5,
-6,
-7,
-7,
-5,
-3,
-6,
-7,
-4,
-2,
-4,
-4,
-7,
-6,
-3,
-6,
-6,
-1,
-6,
-1,
-6,
-5,
-3,
-1,
-6,
-1,
-0,
-0,
-4,
-7,
-1,
-1,
-1,
-4,
-3,
-6,
-6,
-4,
-1,
-0,
-6,
-2,
-6,
-5,
-4,
-5,
-6,
-0,
-5,
-1,
-4,
-6,
-7,
-6,
-2,
-5,
-1,
-0,
-4,
-2,
-2,
-2,
-7,
-5,
-7,
-7,
-5,
-7,
-6,
-3,
-0,
-1,
-4,
-0,
-1,
-4,
-2,
-7,
-0,
-4,
-6,
-5,
-0,
-2,
-6,
-2,
-7,
-1,
-2,
-0,
-7,
-7,
-7,
-3,
-6,
-2,
-3,
-3,
-6,
-2,
-1,
-7,
-3,
-1,
-3,
-2,
-3,
-7,
-1,
-1,
-6,
-6,
-4,
-1,
-4,
-1,
-0,
-2,
-5,
-7,
-5,
-7,
-3,
-5,
-5,
-3,
-1,
-5,
-5,
-7,
-5,
-2,
-1,
-0,
-7,
-4,
-0,
-2,
-6,
-1,
-0,
-5,
-3,
-0,
-7,
-7,
-4,
-7,
-5,
-2,
-6,
-7,
-7,
-5,
-4,
-0,
-2,
-1,
-3,
-5,
-6,
-7,
-3,
-2,
-7,
-5,
-3,
-6,
-2,
-3,
-7,
-5,
-0,
-5,
-1,
-0,
-2,
-1,
-3,
-1,
-7,
-6,
-0,
-1,
-0,
-7,
-1,
-2,
-6,
-1,
-6,
-0,
-3,
-2,
-3,
-5,
-0,
-6,
-7,
-1,
-1,
-1,
-0,
-7,
-0,
-3,
-1,
-7,
-6,
-0,
-6,
-4,
-6,
-7,
-2,
-7,
-3,
-7,
-5,
-4,
-1,
-6,
-6,
-5,
-6,
-6,
-1,
-6,
-7,
-0,
-6,
-1,
-1,
-6,
-1,
-4,
-1,
-0,
-4,
-6,
-2,
-5,
-1,
-1,
-6,
-7,
-2,
-3,
-6,
-2,
-3,
-3,
-2,
-4,
-1,
-0,
-6,
-1,
-2,
-5,
-6,
-1,
-1,
-7,
-7,
-5,
-7,
-3,
-3,
-5,
-7,
-7,
-7,
-0,
-3,
-2,
-1,
-4,
-2,
-3,
-1,
-3,
-7,
-0,
-7,
-1,
-4,
-2,
-1,
-5,
-0,
-0,
-5,
-0,
-4,
-3,
-0,
-4,
-1,
-5,
-3,
-2,
-0,
-5,
-5,
-7,
-5,
-1,
-7,
-3,
-0,
-6,
-2,
-2,
-4,
-6,
-3,
-3,
-0,
-7,
-7,
-7,
-5,
-6,
-6,
-1,
-6,
-6,
-6,
-6,
-3,
-6,
-6,
-6,
-0,
-5,
-5,
-2,
-7,
-3,
-2,
-2,
-5,
-2,
-4,
-6,
-7,
-6,
-2,
-0,
-5,
-5,
-3,
-7,
-3,
-7,
-2,
-5,
-5,
-6,
-0,
-4,
-3,
-7,
-5,
-3,
-4,
-7,
-3,
-0,
-3,
-5,
-2,
-2,
-4,
-0,
-3,
-6,
-7,
-0,
-3,
-7,
-2,
-6,
-3,
-5,
-3,
-7,
-4,
-0,
-1,
-7,
-6,
-3,
-0,
-6,
-5,
-4,
-7,
-7,
-3,
-2,
-3,
-1,
-2,
-2,
-0,
-3,
-5,
-5,
-4,
-4,
-1,
-1,
-4,
-5,
-7,
-4,
-0,
-1,
-1,
-0,
-5,
-5,
-3,
-4,
-5,
-3,
-3,
-4,
-6,
-3,
-3,
-3,
-2,
-2,
-4,
-1,
-2,
-0,
-0,
-2,
-1,
-2,
-6,
-3,
-2,
-0,
-1,
-0,
-2,
-5,
-3,
-7,
-6,
-2,
-2,
-6,
-3,
-6,
-6,
-3,
-3,
-4,
-5,
-3,
-0,
-5,
-7,
-4,
-1,
-5,
-2,
-7,
-7,
-3,
-3,
-0,
-6,
-0,
-5,
-4,
-3,
-0,
-1,
-0,
-0,
-5,
-2,
-5,
-5,
-5,
-1,
-0,
-4,
-5,
-4,
-5,
-1,
-5,
-0,
-2,
-6,
-2,
-7,
-6,
-1,
-2,
-7,
-0,
-0,
-5,
-4,
-6,
-2,
-2,
-0,
-7,
-0,
-4,
-5,
-1,
-1,
-1,
-4,
-3,
-3,
-7,
-5,
-1,
-5,
-6,
-3,
-4,
-0,
-1,
-0,
-7,
-3,
-7,
-4,
-1,
-0,
-7,
-0,
-7,
-5,
-3,
-4,
-0,
-2,
-2,
-3,
-5,
-3,
-5,
-5,
-7,
-0,
-4,
-0,
-5,
-4,
-0,
-3,
-3,
-3,
-3,
-2,
-4,
-5,
-7,
-6,
-6,
-4,
-4,
-0,
-6,
-4,
-6,
-0,
-7,
-0,
-5,
-3,
-2,
-6,
-0,
-1,
-2,
-5,
-6,
-4,
-5,
-5,
-1,
-1,
-7,
-7,
-0,
-2,
-3,
-4,
-1,
-6,
-1,
-0,
-5,
-3,
-1,
-1,
-0,
-4,
-7,
-5,
-0,
-1,
-1,
-5,
-7,
-2,
-7,
-1,
-4,
-0,
-4,
-4,
-7,
-0,
-3,
-4,
-6,
-6,
-0,
-1,
-6,
-2,
-5,
-1,
-5,
-1,
-6,
-7,
-6,
-7,
-7,
-1,
-1,
-3,
-2,
-0,
-5,
-4,
-6,
-1,
-7,
-7,
-1,
-7,
-2,
-7,
-2,
-1,
-1,
-5,
-1,
-5,
-1,
-4,
-3,
-2,
-6,
-2,
-5,
-0,
-7,
-4,
-0,
-7,
-3,
-5,
-0,
-4,
-5,
-2,
-6,
-3,
-4,
-7,
-5,
-2,
-2,
-4,
-3,
-0,
-2,
-5,
-6,
-3,
-1,
-5,
-2,
-4,
-2,
-1,
-1,
-2,
-2,
-6,
-5,
-6,
-4,
-3,
-4,
-6,
-1,
-0,
-7,
-7,
-3,
-4,
-6,
-0,
-1,
-2,
-0,
-1,
-2,
-5,
-0,
-3,
-1,
-2,
-2,
-4,
-4,
-4,
-4,
-4,
-4,
-6,
-5,
-0,
-7,
-1,
-5,
-4,
-1,
-6,
-6,
-1,
-6,
-0,
-2,
-3,
-4,
-6,
-4,
-0,
-2,
-3,
-7,
-2,
-3,
-4,
-2,
-7,
-1,
-2,
-7,
-2,
-6,
-5,
-5,
-0,
-7,
-2,
-5,
-4,
-6,
-3,
-7,
-3,
-7,
-1,
-3,
-0,
-2,
-1,
-4,
-5,
-2,
-5,
-2,
-1,
-1,
-3,
-4,
-4,
-4,
-6,
-1,
-4,
-1,
-7,
-6,
-5,
-7,
-0,
-3,
-0,
-6,
-2,
-6,
-7,
-6,
-2,
-1,
-3,
-4,
-5,
-7,
-4,
-3,
-3,
-4,
-5,
-0,
-4,
-6,
-6,
-7,
-6,
-0,
-0,
-7,
-1,
-4,
-7,
-0,
-2,
-4,
-2,
-7,
-2,
-7,
-2,
-6,
-1,
-6,
-2,
-6,
-7,
-6,
-1,
-0,
-3,
-1,
-3,
-2,
-3,
-5,
-2,
-3,
-1,
-1,
-6,
-3,
-1,
-5,
-5,
-3,
-4,
-4,
-7,
-1,
-5,
-6,
-4,
-3,
-3,
-5,
-5,
-1,
-7,
-7,
-1,
-7,
-1,
-2,
-2,
-6,
-6,
-3,
-1,
-1,
-1,
-7,
-3,
-0,
-5,
-1,
-1,
-0,
-2,
-2,
-1,
-7,
-7,
-6,
-6,
-5,
-1,
-2,
-0,
-2,
-1,
-2,
-3,
-2,
-0,
-0,
-6,
-6,
-5,
-6,
-1,
-7,
-6,
-3,
-4,
-4,
-7,
-6,
-7,
-4,
-1,
-3,
-6,
-1,
-2,
-3,
-1,
-4,
-7,
-5,
-5,
-0,
-1,
-3,
-2,
-1,
-5,
-6,
-2,
-4,
-4,
-6,
-7,
-4,
-3,
-4,
-3,
-5,
-0,
-2,
-2,
-0,
-5,
-6,
-4,
-0,
-0,
-1,
-7,
-1,
-5,
-7,
-5,
-6,
-0,
-1,
-7,
-2,
-3,
-2,
-6,
-7,
-2,
-5,
-2,
-1,
-3,
-0,
-5,
-5,
-5,
-6,
-0,
-6,
-0,
-5,
-2,
-2,
-5,
-3,
-1,
-2,
-3,
-3,
-6,
-2,
-0,
-1,
-7,
-2,
-1,
-1,
-7,
-0,
-2,
-1,
-5,
-1,
-6,
-3,
-3,
-3,
-7,
-5,
-6,
-4,
-2,
-7,
-6,
-2,
-1,
-4,
-0,
-7,
-4,
-5,
-6,
-2,
-5,
-2,
-4,
-0,
-6,
-5,
-3,
-2,
-5,
-7,
-7,
-3,
-0,
-4,
-0,
-6,
-4,
-2,
-6,
-1,
-1,
-6,
-7,
-3,
-7,
-2,
-0,
-5,
-6,
-0,
-3,
-4,
-6,
-0,
-2,
-2,
-3,
-3,
-0,
-6,
-5,
-2,
-2,
-6,
-6,
-3,
-0,
-0,
-4,
-7,
-6,
-2,
-4,
-7,
-4,
-5,
-7,
-5,
-2,
-2,
-7,
-2,
-5,
-1,
-3,
-1,
-6,
-0,
-3,
-5,
-5,
-3,
-1,
-4,
-4,
-2,
-3,
-1,
-3,
-1,
-0,
-1,
-2,
-3,
-7,
-6,
-7,
-4,
-2,
-1,
-1,
-0,
-5,
-3,
-4,
-4,
-0,
-7,
-5,
-2,
-2,
-1,
-5,
-3,
-6,
-6,
-6,
-1,
-7,
-5,
-7,
-1,
-5,
-5,
-5,
-5,
-4,
-6,
-5,
-4,
-3,
-7,
-0,
-6,
-0,
-3,
-7,
-3,
-0,
-3,
-2,
-5,
-2,
-4,
-3,
-4,
-5,
-4,
-6,
-6,
-0,
-1,
-2,
-4,
-6,
-7,
-1,
-2,
-6,
-3,
-2,
-2,
-2,
-7,
-1,
-3,
-5,
-1,
-5,
-1,
-6,
-1,
-5,
-7,
-7,
-0,
-2,
-3,
-0,
-3,
-1,
-6,
-7,
-3,
-6,
-5,
-3,
-3,
-2,
-6,
-5,
-2,
-3,
-0,
-3,
-2,
-4,
-3,
-4,
-3,
-1,
-2,
-2,
-6,
-6,
-6,
-4,
-2,
-0,
-2,
-3,
-4,
-6,
-7,
-0,
-7,
-6,
-3,
-1,
-5,
-4,
-2,
-5,
-3,
-0,
-7,
-2,
-7,
-7,
-5,
-0,
-6,
-4,
-7,
-3,
-5,
-4,
-4,
-3,
-0,
-5,
-5,
-1,
-2,
-4,
-1,
-0,
-7,
-6,
-5,
-7,
-7,
-1,
-5,
-6,
-7,
-6,
-5,
-3,
-6,
-1,
-6,
-0,
-3,
-1,
-3,
-4,
-5,
-1,
-7,
-7,
-6,
-4,
-6,
-5,
-0,
-3,
-0,
-2,
-1,
-4,
-0,
-4,
-5,
-3,
-1,
-4,
-3,
-4,
-1,
-5,
-7,
-5,
-1,
-7,
-0,
-3,
-6,
-5,
-1,
-3,
-4,
-4,
-2,
-0,
-6,
-1,
-5,
-4,
-4,
-6,
-1,
-7,
-7,
-3,
-6,
-1,
-2,
-1,
-6,
-7,
-0,
-6,
-7,
-2,
-7,
-1,
-7,
-4,
-3,
-7,
-2,
-3,
-2,
-3,
-4,
-0,
-0,
-5,
-3,
-1,
-7,
-6,
-7,
-6,
-3,
-7,
-7,
-6,
-7,
-5,
-0,
-6,
-2,
-2,
-1,
-2,
-5,
-4,
-7,
-5,
-3,
-5,
-7,
-4,
-6,
-5,
-3,
-1,
-3,
-7,
-4,
-2,
-0,
-1,
-1,
-0,
-5,
-0,
-0,
-0,
-4,
-3,
-5,
-2,
-7,
-3,
-1,
-4,
-0,
-3,
-3,
-1,
-3,
-2,
-6,
-3,
-3,
-6,
-5,
-0,
-1,
-7,
-3,
-4,
-7,
-2,
-4,
-3,
-0,
-6,
-3,
-2,
-6,
-4,
-2,
-5,
-6,
-7,
-0,
-0,
-7,
-3,
-4,
-5,
-6,
-7,
-2,
-0,
-2,
-7,
-6,
-1,
-1,
-3,
-5,
-4,
-7,
-7,
-3,
-5,
-7,
-4,
-7,
-6,
-7,
-6,
-0,
-7,
-3,
-4,
-1,
-4,
-3,
-5,
-7,
-0,
-6,
-2,
-3,
-5,
-6,
-1,
-3,
-3,
-2,
-2,
-6,
-6,
-0,
-3,
-7,
-1,
-2,
-6,
-2,
-1,
-6,
-0,
-2,
-3,
-4,
-7,
-2,
-1,
-5,
-2,
-4,
-5,
-7,
-0,
-5,
-1,
-4,
-4,
-2,
-7,
-6,
-7,
-6,
-3,
-3,
-0,
-2,
-5,
-2,
-5,
-1,
-2,
-0,
-7,
-5,
-0,
-4,
-6,
-6,
-1,
-5,
-2,
-6,
-0,
-4,
-0,
-4,
-5,
-7,
-3,
-5,
-7,
-4,
-4,
-0,
-0,
-2,
-3,
-7,
-4,
-1,
-1,
-2,
-2,
-3,
-4,
-2,
-6,
-3,
-7,
-3,
-3,
-7,
-7,
-2,
-4,
-7,
-0,
-7,
-3,
-7,
-6,
-4,
-5,
-6,
-0,
-1,
-2,
-2,
-2,
-1,
-3,
-4,
-4,
-7,
-1,
-2,
-5,
-4,
-3,
-6,
-7,
-5,
-4,
-3,
-6,
-1,
-3,
-5,
-0,
-1,
-3,
-1,
-1,
-5,
-3,
-7,
-1,
-1,
-0,
-4,
-1,
-2,
-0,
-6,
-5,
-3,
-5,
-2,
-6,
-3,
-7,
-1,
-2,
-2,
-3,
-6,
-3,
-4,
-3,
-6,
-6,
-4,
-1,
-0,
-2,
-7,
-7,
-7,
-2,
-7,
-6,
-5,
-1,
-1,
-1,
-5,
-5,
-5,
-4,
-7,
-2,
-7,
-4,
-6,
-0,
-6,
-7,
-4,
-0,
-1,
-1,
-4,
-5,
-0,
-2,
-0,
-7,
-0,
-6,
-7,
-5,
-3,
-6,
-5,
-0,
-5,
-5,
-0,
-3,
-4,
-6,
-5,
-6,
-4,
-2,
-2,
-1,
-6,
-0,
-4,
-0,
-4,
-7,
-7,
-6,
-7,
-5,
-0,
-0,
-2,
-7,
-2,
-5,
-6,
-1,
-0,
-1,
-7,
-6,
-6,
-7,
-5,
-3,
-1,
-2,
-5,
-1,
-3,
-0,
-0,
-0,
-7,
-3,
-6,
-6,
-2,
-6,
-4,
-5,
-1,
-5,
-3,
-0,
-5,
-6,
-0,
-4,
-2,
-7,
-3,
-1,
-1,
-6,
-3,
-0,
-5,
-0,
-0,
-0,
-1,
-5,
-5,
-7,
-5,
-2,
-4,
-4,
-3,
-0,
-2,
-6,
-4,
-5,
-1,
-0,
-1,
-7,
-1,
-6,
-0,
-2,
-7,
-7,
-3,
-5,
-3,
-5,
-5,
-5,
-2,
-1,
-7,
-1,
-5,
-3,
-5,
-1,
-6,
-0,
-1,
-3,
-6,
-6,
-5,
-6,
-7,
-2,
-5,
-7,
-4,
-7,
-5,
-2,
-1,
-4,
-5,
-6,
-2,
-6,
-3,
-4,
-4,
-5,
-1,
-0,
-6,
-2,
-3,
-7,
-0,
-5,
-2,
-1,
-0,
-7,
-5,
-2,
-4,
-3,
-2,
-5,
-0,
-6,
-6,
-2,
-2,
-6,
-3,
-1,
-6,
-7,
-4,
-1,
-2,
-2,
-5,
-6,
-7,
-0,
-0,
-6,
-1,
-4,
-0,
-5,
-1,
-3,
-0,
-3,
-3,
-4,
-5,
-4,
-2,
-3,
-6,
-1,
-4,
-3,
-5,
-1,
-6,
-6,
-1,
-1,
-6,
-5,
-7,
-7,
-7,
-6,
-4,
-7,
-0,
-2,
-6,
-4,
-6,
-1,
-5,
-6,
-7,
-0,
-7,
-4,
-4,
-1,
-6,
-4,
-1,
-3,
-3,
-6,
-6,
-4,
-7,
-3,
-6,
-0,
-5,
-4,
-2,
-4,
-4,
-1,
-4,
-6,
-2,
-5,
-7,
-5,
-0,
-4,
-2,
-3,
-5,
-6,
-0,
-1,
-2,
-1,
-3,
-4,
-7,
-2,
-5,
-3,
-4,
-4,
-6,
-2,
-7,
-1,
-4,
-3,
-7,
-7,
-0,
-2,
-7,
-4,
-5,
-0,
-7,
-3,
-3,
-3,
-4,
-1,
-5,
-4,
-1,
-6,
-0,
-6,
-4,
-2,
-5,
-4,
-7,
-1,
-0,
-4,
-1,
-1,
-5,
-3,
-5,
-0,
-1,
-1,
-7,
-5,
-1,
-2,
-5,
-6,
-2,
-5,
-0,
-6,
-5,
-0,
-4,
-7,
-4,
-7,
-5,
-2,
-0,
-3,
-5,
-5,
-7,
-3,
-1,
-0,
-5,
-5,
-3,
-1,
-4,
-2,
-6,
-0,
-4,
-7,
-0,
-3,
-4,
-1,
-2,
-4,
-6,
-2,
-6,
-1,
-7,
-6,
-7,
-1,
-3,
-3,
-4,
-5,
-3,
-7,
-7,
-4,
-7,
-6,
-1,
-1,
-5,
-0,
-6,
-6,
-1,
-1,
-7,
-1,
-4,
-3,
-5,
-1,
-5,
-1,
-3,
-0,
-5,
-5,
-2,
-0,
-5,
-3,
-7,
-7,
-7,
-2,
-5,
-6,
-1,
-7,
-6,
-1,
-0,
-6,
-2,
-6,
-2,
-4,
-7,
-7,
-3,
-0,
-7,
-6,
-5,
-2,
-6,
-6,
-2,
-2,
-0,
-5,
-2,
-5,
-1,
-2,
-6,
-7,
-1,
-1,
-5,
-5,
-1,
-5,
-0,
-6,
-3,
-5,
-0,
-5,
-6,
-0,
-6,
-4,
-4,
-1,
-4,
-2,
-0,
-2,
-2,
-1,
-6,
-7,
-2,
-7,
-7,
-1,
-0,
-3,
-3,
-2,
-5,
-1,
-7,
-1,
-7,
-7,
-1,
-7,
-6,
-3,
-3,
-7,
-6,
-7,
-5,
-3,
-1,
-4,
-7,
-0,
-5,
-0,
-6,
-5,
-4,
-0,
-3,
-4,
-3,
-1,
-4,
-3,
-4,
-1,
-6,
-3,
-6,
-7,
-6,
-3,
-2,
-4,
-7,
-3,
-5,
-0,
-1,
-6,
-1,
-3,
-4,
-7,
-2,
-1,
-3,
-4,
-0,
-5,
-6,
-0,
-2,
-2,
-0,
-0,
-7,
-6,
-6,
-1,
-3,
-6,
-6,
-6,
-6,
-2,
-6,
-7,
-3,
-0,
-4,
-0,
-5,
-4,
-7,
-7,
-7,
-7,
-3,
-3,
-6,
-2,
-2,
-1,
-7,
-0,
-1,
-1,
-5,
-3,
-7,
-4,
-6,
-3,
-5,
-2,
-4,
-2,
-7,
-5,
-1,
-4,
-0,
-7,
-3,
-3,
-0,
-4,
-7,
-5,
-2,
-3,
-5,
-1,
-3,
-1,
-5,
-0,
-5,
-4,
-1,
-4,
-0,
-4,
-3,
-0,
-7,
-7,
-7,
-1,
-2,
-2,
-3,
-7,
-4,
-7,
-0,
-7,
-0,
-4,
-4,
-0,
-0,
-1,
-0,
-7,
-0,
-1,
-1,
-1,
-1,
-3,
-5,
-3,
-6,
-4,
-1,
-2,
-2,
-3,
-6,
-1,
-6,
-1,
-0,
-3,
-1,
-1,
-2,
-4,
-5,
-4,
-4,
-7,
-0,
-5,
-1,
-0,
-6,
-4,
-0,
-4,
-0,
-1,
-6,
-6,
-4,
-1,
-0,
-1,
-0,
-1,
-2,
-6,
-3,
-2,
-1,
-2,
-2,
-5,
-3,
-2,
-0,
-2,
-7,
-5,
-3,
-4,
-2,
-7,
-3,
-1,
-5,
-0,
-0,
-2,
-5,
-4,
-0,
-2,
-0,
-3,
-1,
-5,
-5,
-0,
-2,
-3,
-5,
-7,
-7,
-3,
-4,
-6,
-3,
-3,
-5,
-6,
-3,
-1,
-7,
-5,
-7,
-3,
-4,
-0,
-2,
-0,
-5,
-5,
-5,
-1,
-0,
-5,
-2,
-0,
-6,
-6,
-6,
-3,
-1,
-6,
-7,
-7,
-3,
-5,
-4,
-7,
-7,
-7,
-7,
-7,
-7,
-4,
-4,
-6,
-7,
-1,
-6,
-5,
-3,
-7,
-1,
-4,
-6,
-4,
-1,
-6,
-0,
-7,
-5,
-1,
-0,
-0,
-3,
-7,
-2,
-6,
-6,
-7,
-3,
-2,
-0,
-7,
-1,
-5,
-2,
-3,
-5,
-5,
-6,
-3,
-7,
-0,
-5,
-2,
-0,
-2,
-2,
-0,
-2,
-6,
-3,
-6,
-0,
-2,
-0,
-6,
-5,
-0,
-1,
-7,
-2,
-0,
-7,
-6,
-5,
-5,
-1,
-5,
-6,
-4,
-0,
-3,
-5,
-4,
-0,
-3,
-0,
-2,
-4,
-4,
-2,
-4,
-3,
-2,
-6,
-0,
-1,
-7,
-5,
-0,
-1,
-1,
-3,
-2,
-3,
-6,
-4,
-0,
-0,
-2,
-4,
-4,
-4,
-0,
-5,
-5,
-4,
-1,
-6,
-4,
-1,
-4,
-7,
-0,
-3,
-3,
-1,
-6,
-3,
-2,
-7,
-4,
-4,
-0,
-5,
-4,
-1,
-7,
-7,
-2,
-3,
-2,
-1,
-2,
-1,
-4,
-7,
-4,
-3,
-4,
-4,
-7,
-0,
-1,
-7,
-7,
-4,
-6,
-6,
-4,
-2,
-1,
-7,
-5,
-5,
-0,
-0,
-3,
-5,
-7,
-0,
-6,
-6,
-4,
-5,
-3,
-4,
-5,
-3,
-6,
-6,
-3,
-4,
-1,
-1,
-7,
-5,
-0,
-7,
-2,
-7,
-2,
-4,
-0,
-0,
-2,
-2,
-7,
-3,
-3,
-7,
-2,
-6,
-1,
-4,
-3,
-0,
-2,
-0,
-6,
-2,
-3,
-4,
-3,
-2,
-0,
-0,
-7,
-6,
-7,
-6,
-6,
-2,
-6,
-5,
-5,
-5,
-7,
-6,
-0,
-5,
-7,
-5,
-7,
-5,
-2,
-4,
-1,
-6,
-3,
-3,
-7,
-2,
-6,
-0,
-3,
-6,
-3,
-1,
-5,
-6,
-6,
-5,
-7,
-4,
-4,
-7,
-6,
-4,
-3,
-2,
-7,
-1,
-2,
-5,
-6,
-6,
-2,
-1,
-0,
-2,
-4,
-0,
-0,
-0,
-1,
-7,
-4,
-5,
-5,
-3,
-6,
-5,
-1,
-4,
-3,
-1,
-6,
-2,
-0,
-2,
-2,
-4,
-1,
-0,
-4,
-2,
-1,
-6,
-6,
-1,
-1,
-6,
-4,
-7,
-4,
-5,
-7,
-1,
-5,
-0,
-2,
-0,
-0,
-0,
-4,
-5,
-5,
-2,
-5,
-6,
-7,
-2,
-5,
-0,
-2,
-2,
-6,
-1,
-6,
-2,
-3,
-6,
-4,
-7,
-6,
-6,
-1,
-5,
-5,
-5,
-2,
-3,
-6,
-5,
-3,
-3,
-4,
-1,
-4,
-6,
-6,
-5,
-1,
-5,
-6,
-6,
-3,
-2,
-4,
-6,
-3,
-4,
-4,
-1,
-6,
-3,
-1,
-6,
-4,
-4,
-0,
-2,
-7,
-6,
-4,
-5,
-4,
-6,
-6,
-3,
-7,
-4,
-0,
-3,
-4,
-3,
-6,
-1,
-0,
-2,
-6,
-1,
-5,
-4,
-6,
-5,
-3,
-7,
-1,
-7,
-0,
-1,
-5,
-5,
-3,
-2,
-1,
-3,
-7,
-4,
-2,
-0,
-2,
-0,
-0,
-3,
-0,
-7,
-0,
-2,
-0,
-7,
-6,
-1,
-5,
-3,
-7,
-6,
-5,
-5,
-5,
-0,
-3,
-1,
-7,
-4,
-6,
-7,
-7,
-0,
-2,
-1,
-4,
-4,
-7,
-1,
-7,
-1,
-0,
-2,
-2,
-2,
-2,
-1,
-1,
-0,
-0,
-1,
-4,
-6,
-6,
-4,
-0,
-1,
-1,
-1,
-6,
-6,
-1,
-5,
-7,
-0,
-7,
-0,
-4,
-4,
-2,
-5,
-6,
-7,
-4,
-5,
-1,
-6,
-3,
-6,
-6,
-1,
-0,
-3,
-7,
-1,
-1,
-1,
-7,
-5,
-2,
-5,
-3,
-0,
-0,
-4,
-5,
-3,
-6,
-1,
-6,
-0,
-0,
-2,
-5,
-7,
-2,
-5,
-7,
-4,
-4,
-1,
-4,
-7,
-0,
-2,
-7,
-7,
-3,
-4,
-0,
-3,
-0,
-3,
-0,
-3,
-4,
-5,
-0,
-0,
-3,
-3,
-3,
-7,
-6,
-6,
-6,
-4,
-2,
-6,
-5,
-7,
-2,
-7,
-5,
-4,
-1,
-6,
-1,
-7,
-7,
-2,
-0,
-1,
-0,
-2,
-7,
-5,
-2,
-1,
-6,
-7,
-1,
-3,
-5,
-1,
-6,
-0,
-2,
-6,
-4,
-2,
-6,
-2,
-3,
-5,
-6,
-1,
-1,
-0,
-0,
-6,
-2,
-2,
-1,
-0,
-2,
-7,
-0,
-7,
-2,
-4,
-0,
-1,
-5,
-7,
-0,
-2,
-6,
-4,
-2,
-2,
-4,
-0,
-4,
-4,
-6,
-7,
-7,
-7,
-5,
-7,
-3,
-6,
-6,
-4,
-0,
-1,
-2,
-4,
-3,
-3,
-6,
-5,
-5,
-5,
-3,
-4,
-6,
-4,
-7,
-1,
-6,
-6,
-6,
-3,
-5,
-6,
-1,
-2,
-3,
-5,
-7,
-2,
-0,
-2,
-7,
-6,
-1,
-0,
-1,
-3,
-7,
-2,
-4,
-4,
-0,
-3,
-7,
-0,
-1,
-0,
-1,
-1,
-0,
-4,
-7,
-4,
-0,
-1,
-0,
-4,
-7,
-2,
-3,
-3,
-1,
-2,
-3,
-0,
-6,
-7,
-1,
-6,
-2,
-7,
-6,
-4,
-6,
-1,
-6,
-4,
-7,
-6,
-2,
-3,
-2,
-1,
-6,
-1,
-4,
-0,
-2,
-0,
-3,
-6,
-0,
-5,
-5,
-7,
-3,
-4,
-2,
-7,
-1,
-2,
-0,
-1,
-6,
-5,
-2,
-0,
-5,
-3,
-5,
-3,
-0,
-1,
-1,
-0,
-7,
-5,
-6,
-7,
-5,
-5,
-2,
-4,
-5,
-6,
-0,
-3,
-5,
-3,
-5,
-1,
-5,
-1,
-4,
-1,
-6,
-4,
-5,
-3,
-3,
-2,
-4,
-7,
-1,
-1,
-4,
-0,
-2,
-6,
-2,
-6,
-2,
-6,
-7,
-6,
-5,
-5,
-6,
-1,
-3,
-7,
-6,
-0,
-6,
-1,
-1,
-4,
-5,
-1,
-3,
-2,
-1,
-3,
-5,
-2,
-7,
-6,
-3,
-6,
-7,
-7,
-7,
-6,
-5,
-2,
-4,
-7,
-7,
-0,
-4,
-3,
-2,
-6,
-6,
-5,
-3,
-0,
-1,
-1,
-2,
-6,
-7,
-7,
-2,
-0,
-6,
-4,
-4,
-2,
-0,
-7,
-2,
-5,
-3,
-6,
-5,
-0,
-7,
-3,
-5,
-3,
-3,
-4,
-7,
-0,
-2,
-0,
-6,
-4,
-5,
-5,
-6,
-1,
-7,
-3,
-3,
-7,
-4,
-6,
-4,
-6,
-7,
-5,
-2,
-3,
-2,
-1,
-2,
-1,
-2,
-7,
-2,
-3,
-6,
-7,
-7,
-4,
-6,
-3,
-0,
-7,
-7,
-1,
-5,
-5,
-6,
-0,
-7,
-3,
-5,
-4,
-4,
-2,
-5,
-1,
-2,
-5,
-1,
-1,
-4,
-7,
-2,
-1,
-0,
-0,
-1,
-3,
-2,
-1,
-2,
-6,
-7,
-2,
-4,
-2,
-2,
-0,
-3,
-4,
-5,
-7,
-2,
-0,
-1,
-6,
-2,
-2,
-3,
-6,
-4,
-7,
-0,
-2,
-3,
-0,
-7,
-5,
-5,
-5,
-7,
-1,
-7,
-1,
-7,
-6,
-5,
-6,
-0,
-4,
-2,
-6,
-6,
-0,
-7,
-1,
-7,
-7,
-3,
-5,
-3,
-1,
-2,
-4,
-6,
-5,
-6,
-7,
-4,
-7,
-6,
-6,
-1,
-6,
-3,
-0,
-7,
-2,
-0,
-0,
-5,
-6,
-2,
-4,
-3,
-0,
-3,
-6,
-3,
-4,
-2,
-3,
-0,
-0,
-7,
-6,
-2,
-0,
-6,
-7,
-0,
-6,
-5,
-1,
-5,
-4,
-3,
-7,
-4,
-2,
-0,
-3,
-7,
-5,
-6,
-5,
-0,
-4,
-0,
-5,
-6,
-3,
-6,
-6,
-7,
-4,
-0,
-3,
-7,
-6,
-1,
-7,
-7,
-7,
-7,
-6,
-6,
-5,
-2,
-2,
-3,
-5,
-6,
-2,
-1,
-6,
-1,
-5,
-4,
-4,
-7,
-4,
-6,
-0,
-2,
-2,
-7,
-4,
-5,
-4,
-6,
-5,
-1,
-4,
-2,
-7,
-3,
-1,
-0,
-0,
-3,
-5,
-1,
-4,
-1,
-0,
-3,
-1,
-1,
-4,
-3,
-4,
-2,
-0,
-0,
-5,
-3,
-4,
-3,
-7,
-5,
-5,
-3,
-2,
-4,
-1,
-5,
-0,
-0,
-2,
-0,
-4,
-7,
-6,
-2,
-7,
-4,
-4,
-4,
-1,
-7,
-1,
-7,
-1,
-4,
-2,
-4,
-1,
-4,
-1,
-5,
-0,
-1,
-2,
-3,
-2,
-7,
-1,
-6,
-1,
-6,
-1,
-1,
-6,
-3,
-0,
-4,
-2,
-7,
-6,
-7,
-7,
-4,
-4,
-2,
-5,
-4,
-0,
-7,
-3,
-6,
-2,
-3,
-4,
-2,
-3,
-0,
-2,
-7,
-2,
-1,
-5,
-6,
-7,
-0,
-5,
-7,
-3,
-2,
-4,
-3,
-3,
-5,
-5,
-3,
-3,
-1,
-2,
-3,
-6,
-1,
-4,
-0,
-7,
-3,
-5,
-5,
-4,
-2,
-6,
-0,
-6,
-0,
-6,
-3,
-4,
-4,
-5,
-7,
-1,
-2,
-3,
-5,
-3,
-3,
-3,
-5,
-5,
-7,
-3,
-6,
-0,
-5,
-3,
-0,
-5,
-3,
-5,
-7,
-6,
-1,
-4,
-4,
-1,
-6,
-2,
-5,
-1,
-2,
-7,
-4,
-6,
-3,
-1,
-0,
-4,
-0,
-6,
-0,
-3,
-2,
-2,
-1,
-1,
-0,
-6,
-0,
-7,
-6,
-1,
-5,
-2,
-1,
-6,
-4,
-2,
-1,
-2,
-0,
-3,
-7,
-4,
-4,
-0,
-0,
-1,
-3,
-0,
-6,
-3,
-2,
-2,
-1,
-7,
-1,
-0,
-3,
-4,
-3,
-4,
-0,
-5,
-3,
-4,
-3,
-1,
-2,
-0,
-5,
-3,
-2,
-2,
-6,
-5,
-5,
-4,
-0,
-1,
-0,
-4,
-7,
-3,
-0,
-1,
-3,
-3,
-1,
-4,
-5,
-1,
-0,
-2,
-4,
-4,
-0,
-4,
-5,
-6,
-3,
-0,
-4,
-7,
-6,
-7,
-7,
-5,
-6,
-3,
-3,
-2,
-2,
-6,
-7,
-0,
-7,
-1,
-7,
-2,
-7,
-5,
-0,
-7,
-4,
-1,
-3,
-3,
-5,
-7,
-4,
-0,
-5,
-1,
-7,
-1,
-6,
-0,
-2,
-1,
-7,
-6,
-3,
-4,
-5,
-7,
-7,
-7,
-7,
-7,
-0,
-3,
-2,
-2,
-5,
-6,
-7,
-4,
-0,
-2,
-7,
-3,
-6,
-4,
-4,
-5,
-5,
-5,
-6,
-5,
-7,
-6,
-6,
-6,
-3,
-1,
-0,
-2,
-3,
-6,
-6,
-6,
-5,
-7,
-6,
-6,
-1,
-2,
-2,
-0,
-2,
-4,
-5,
-4,
-1,
-3,
-7,
-5,
-5,
-2,
-5,
-0,
-2,
-4,
-4,
-6,
-5,
-2,
-1,
-4,
-7,
-3,
-4,
-0,
-3,
-6,
-3,
-3,
-7,
-6,
-5,
-1,
-4,
-7,
-7,
-2,
-7,
-3,
-1,
-7,
-4,
-7,
-3,
-2,
-3,
-2,
-5,
-7,
-0,
-3,
-5,
-0,
-3,
-1,
-2,
-2,
-5,
-2,
-5,
-5,
-1,
-2,
-5,
-7,
-1,
-3,
-4,
-3,
-5,
-7,
-7,
-3,
-6,
-4,
-5,
-1,
-1,
-0,
-0,
-3,
-7,
-3,
-6,
-0,
-2,
-0,
-5,
-7,
-3,
-3,
-2,
-2,
-4,
-4,
-0,
-1,
-1,
-6,
-5,
-6,
-4,
-7,
-1,
-2,
-7,
-7,
-4,
-6,
-0,
-3,
-1,
-2,
-7,
-6,
-4,
-5,
-7,
-3,
-4,
-4,
-1,
-5,
-7,
-5,
-7,
-6,
-7,
-4,
-0,
-0,
-4,
-4,
-6,
-3,
-0,
-4,
-6,
-3,
-5,
-1,
-7,
-3,
-0,
-4,
-2,
-2,
-1,
-3,
-6,
-5,
-3,
-4,
-1,
-3,
-0,
-0,
-1,
-4,
-0,
-5,
-5,
-5,
-4,
-1,
-5,
-4,
-4,
-4,
-6,
-4,
-5,
-5,
-2,
-3,
-1,
-4,
-1,
-1,
-6,
-2,
-0,
-2,
-6,
-1,
-0,
-2,
-2,
-3,
-7,
-2,
-1,
-1,
-6,
-7,
-2,
-7,
-6,
-6,
-6,
-1,
-6,
-6,
-2,
-6,
-3,
-1,
-1,
-4,
-5,
-7,
-3,
-1,
-4,
-7,
-0,
-6,
-7,
-5,
-0,
-5,
-2,
-1,
-1,
-5,
-6,
-3,
-0,
-1,
-6,
-7,
-5,
-4,
-2,
-1,
-3,
-1,
-5,
-6,
-6,
-4,
-0,
-2,
-6,
-7,
-7,
-7,
-0,
-1,
-2,
-4,
-5,
-5,
-6,
-6,
-2,
-7,
-7,
-2,
-3,
-5,
-4,
-6,
-4,
-2,
-1,
-3,
-7,
-4,
-0,
-6,
-1,
-1,
-2,
-3,
-1,
-4,
-4,
-3,
-5,
-1,
-3,
-1,
-7,
-1,
-1,
-1,
-6,
-6,
-1,
-2,
-3,
-4,
-3,
-6,
-4,
-3,
-4,
-7,
-4,
-1,
-6,
-0,
-4,
-7,
-2,
-4,
-5,
-2,
-7,
-4,
-6,
-4,
-6,
-0,
-7,
-7,
-6,
-0,
-4,
-4,
-1,
-7,
-1,
-1,
-3,
-6,
-5,
-0,
-3,
-6,
-3,
-2,
-5,
-7,
-6,
-0,
-5,
-5,
-1,
-1,
-1,
-5,
-1,
-1,
-3,
-6,
-6,
-7,
-7,
-0,
-7,
-4,
-5,
-2,
-7,
-4,
-2,
-2,
-3,
-3,
-2,
-1,
-4,
-5,
-1,
-2,
-2,
-5,
-6,
-5,
-3,
-2,
-4,
-4,
-3,
-2,
-7,
-5,
-2,
-0,
-7,
-0,
-2,
-6,
-6,
-5,
-1,
-0,
-2,
-4,
-1,
-5,
-3,
-1,
-2,
-7,
-5,
-6,
-3,
-4,
-4,
-1,
-2,
-6,
-4,
-0,
-5,
-3,
-4,
-0,
-6,
-6,
-6,
-4,
-6,
-4,
-5,
-1,
-6,
-6,
-3,
-4,
-2,
-7,
-7,
-3,
-3,
-4,
-4,
-6,
-0,
-2,
-5,
-6,
-7,
-1,
-7,
-1,
-1,
-4,
-7,
-2,
-2,
-3,
-3,
-1,
-7,
-5,
-0,
-7,
-3,
-4,
-5,
-1,
-7,
-5,
-6,
-4,
-0,
-1,
-7,
-6,
-0,
-2,
-5,
-2,
-5,
-3,
-0,
-3,
-5,
-3,
-1,
-6,
-5,
-3,
-1,
-2,
-5,
-4,
-6,
-3,
-6,
-6,
-7,
-3,
-0,
-3,
-3,
-5,
-7,
-5,
-1,
-4,
-6,
-6,
-0,
-1,
-3,
-4,
-0,
-2,
-4,
-2,
-2,
-1,
-5,
-1,
-3,
-3,
-1,
-5,
-7,
-0,
-7,
-0,
-4,
-2,
-4,
-2,
-7,
-4,
-3,
-4,
-1,
-0,
-1,
-6,
-2,
-2,
-3,
-4,
-0,
-5,
-0,
-1,
-5,
-6,
-1,
-3,
-7,
-3,
-1,
-2,
-5,
-0,
-7,
-6,
-7,
-7,
-5,
-1,
-5,
-7,
-6,
-1,
-1,
-6,
-1,
-0,
-6,
-7,
-5,
-1,
-1,
-6,
-3,
-7,
-0,
-5,
-7,
-0,
-4,
-0,
-7,
-7,
-7,
-4,
-0,
-5,
-3,
-0,
-0,
-0,
-4,
-1,
-2,
-4,
-2,
-6,
-1,
-5,
-1,
-5,
-3,
-0,
-2,
-0,
-6,
-3,
-4,
-5,
-0,
-7,
-3,
-0,
-1,
-6,
-5,
-1,
-3,
-3,
-2,
-2,
-7,
-6,
-0,
-1,
-1,
-1,
-0,
-0,
-1,
-2,
-5,
-2,
-3,
-6,
-7,
-0,
-3,
-2,
-1,
-5,
-5,
-6,
-6,
-3,
-4,
-3,
-1,
-5,
-6,
-4,
-2,
-2,
-7,
-1,
-0,
-3,
-1,
-1,
-1,
-0,
-6,
-4,
-0,
-6,
-6,
-6,
-0,
-4,
-4,
-5,
-3,
-3,
-1,
-0,
-2,
-5,
-6,
-6,
-4,
-1,
-7,
-3,
-0,
-3,
-4,
-0,
-3,
-2,
-3,
-7,
-4,
-0,
-1,
-0,
-5,
-0,
-5,
-2,
-7,
-4,
-3,
-5,
-6,
-5,
-3,
-3,
-0,
-3,
-4,
-5,
-0,
-6,
-4,
-7,
-1,
-2,
-2,
-1,
-7,
-1,
-3,
-4,
-7,
-7,
-3,
-2,
-2,
-0,
-2,
-7,
-5,
-5,
-3,
-3,
-7,
-5,
-7,
-0,
-4,
-0,
-5,
-2,
-3,
-5,
-0,
-3,
-6,
-7,
-2,
-6,
-2,
-4,
-6,
-0,
-4,
-1,
-5,
-4,
-2,
-0,
-0,
-5,
-5,
-6,
-6,
-4,
-7,
-5,
-6,
-3,
-7,
-3,
-2,
-0,
-6,
-3,
-5,
-2,
-5,
-1,
-0,
-3,
-7,
-1,
-3,
-7,
-2,
-7,
-2,
-1,
-1,
-7,
-6,
-0,
-4,
-5,
-3,
-5,
-1,
-6,
-4,
-0,
-7,
-2,
-1,
-3,
-7,
-5,
-0,
-1,
-2,
-6,
-4,
-1,
-0,
-6,
-0,
-5,
-7,
-1,
-5,
-3,
-6,
-7,
-0,
-4,
-5,
-1,
-5,
-3,
-4,
-3,
-4,
-6,
-7,
-7,
-4,
-1,
-0,
-2,
-4,
-2,
-1,
-2,
-1,
-6,
-3,
-2,
-2,
-2,
-1,
-4,
-1,
-2,
-4,
-6,
-4,
-7,
-0,
-0,
-1,
-0,
-4,
-6,
-2,
-1,
-1,
-3,
-5,
-3,
-3,
-2,
-4,
-0,
-1,
-5,
-6,
-2,
-4,
-3,
-4,
-4,
-3,
-5,
-3,
-6,
-6,
-6,
-5,
-0,
-5,
-2,
-5,
-3,
-0,
-4,
-7,
-5,
-0,
-4,
-4,
-2,
-2,
-4,
-2,
-1,
-1,
-1,
-6,
-0,
-4,
-0,
-3,
-1,
-0,
-4,
-6,
-1,
-6,
-0,
-2,
-1,
-0,
-2,
-7,
-4,
-0,
-0,
-3,
-7,
-0,
-5,
-5,
-6,
-6,
-7,
-6,
-3,
-2,
-6,
-7,
-6,
-6,
-2,
-0,
-6,
-7,
-7,
-4,
-1,
-7,
-7,
-6,
-0,
-5,
-6,
-7,
-3,
-3,
-6,
-0,
-5,
-3,
-7,
-6,
-2,
-2,
-1,
-1,
-5,
-4,
-0,
-4,
-7,
-2,
-4,
-5,
-7,
-4,
-6,
-3,
-7,
-7,
-2,
-2,
-4,
-0,
-1,
-0,
-7,
-4,
-0,
-2,
-6,
-3,
-5,
-3,
-3,
-4,
-4,
-1,
-4,
-2,
-2,
-2,
-0,
-6,
-6,
-3,
-7,
-4,
-5,
-0,
-1,
-3,
-1,
-7,
-2,
-6,
-2,
-6,
-2,
-4,
-2,
-5,
-6,
-1,
-2,
-1,
-3,
-5,
-5,
-4,
-0,
-2,
-0,
-4,
-6,
-1,
-2,
-1,
-5,
-6,
-4,
-0,
-0,
-1,
-0,
-1,
-1,
-5,
-7,
-7,
-1,
-4,
-5,
-4,
-0,
-0,
-2,
-2,
-4,
-3,
-5,
-6,
-7,
-6,
-0,
-4,
-6,
-1,
-7,
-4,
-3,
-6,
-7,
-4,
-4,
-7,
-1,
-4,
-5,
-0,
-3,
-0,
-3,
-4,
-6,
-0,
-7,
-5,
-2,
-6,
-6,
-1,
-0,
-0,
-6,
-0,
-0,
-6,
-5,
-5,
-0,
-7,
-6,
-2,
-7,
-6,
-2,
-2,
-2,
-3,
-7,
-1,
-0,
-5,
-5,
-0,
-7,
-7,
-5,
-5,
-3,
-3,
-2,
-3,
-0,
-1,
-4,
-6,
-2,
-1,
-2,
-0,
-7,
-6,
-2,
-6,
-6,
-3,
-3,
-7,
-6,
-5,
-0,
-1,
-4,
-4,
-3,
-6,
-3,
-0,
-7,
-5,
-5,
-5,
-2,
-6,
-3,
-0,
-1,
-7,
-1,
-7,
-0,
-1,
-6,
-3,
-5,
-2,
-1,
-4,
-1,
-5,
-3,
-1,
-1,
-3,
-2,
-4,
-0,
-7,
-7,
-0,
-7,
-1,
-2,
-7,
-0,
-4,
-7,
-3,
-5,
-3,
-4,
-6,
-2,
-3,
-0,
-0,
-3,
-5,
-5,
-1,
-0,
-4,
-7,
-3,
-6,
-0,
-4,
-7,
-1,
-0,
-5,
-1,
-1,
-7,
-7,
-1,
-1,
-5,
-6,
-7,
-5,
-5,
-5,
-1,
-4,
-7,
-0,
-7,
-2,
-0,
-1,
-2,
-3,
-0,
-3,
-1,
-3,
-2,
-3,
-2,
-0,
-1,
-2,
-6,
-4,
-7,
-4,
-1,
-5,
-4,
-3,
-2,
-6,
-2,
-4,
-5,
-7,
-3,
-7,
-3,
-5,
-0,
-0,
-5,
-5,
-4,
-0,
-4,
-5,
-2,
-3,
-2,
-5,
-6,
-1,
-4,
-4,
-4,
-6,
-7,
-7,
-4,
-2,
-4,
-3,
-5,
-4,
-3,
-3,
-6,
-3,
-5,
-6,
-6,
-6,
-6,
-4,
-2,
-5,
-7,
-1,
-5,
-1,
-3,
-6,
-1,
-1,
-1,
-3,
-6,
-6,
-2,
-3,
-0,
-1,
-6,
-5,
-4,
-4,
-0,
-3,
-3,
-0,
-0,
-4,
-7,
-1,
-6,
-4,
-3,
-7,
-1,
-0,
-5,
-0,
-0,
-5,
-5,
-1,
-1,
-1,
-3,
-7,
-4,
-5,
-5,
-2,
-0,
-2,
-5,
-1,
-4,
-6,
-2,
-0,
-7,
-4,
-5,
-5,
-4,
-6,
-5,
-7,
-7,
-4,
-4,
-1,
-1,
-5,
-3,
-0,
-4,
-5,
-7,
-0,
-5,
-2,
-6,
-6,
-1,
-6,
-2,
-3,
-2,
-2,
-2,
-3,
-6,
-1,
-1,
-6,
-3,
-2,
-4,
-5,
-1,
-6,
-4,
-5,
-7,
-5,
-7,
-2,
-6,
-3,
-4,
-1,
-6,
-3,
-4,
-7,
-2,
-0,
-3,
-5,
-6,
-3,
-0,
-5,
-6,
-7,
-0,
-6,
-6,
-3,
-6,
-2,
-3,
-0,
-6,
-3,
-3,
-4,
-4,
-6,
-7,
-5,
-0,
-4,
-5,
-5,
-1,
-4,
-5,
-3,
-0,
-7,
-1,
-5,
-4,
-6,
-3,
-4,
-6,
-3,
-1,
-5,
-6,
-5,
-5,
-7,
-0,
-5,
-4,
-3,
-6,
-5,
-3,
-5,
-1,
-1,
-7,
-6,
-6,
-2,
-1,
-1,
-1,
-1,
-2,
-1,
-4,
-5,
-0,
-4,
-1,
-4,
-4,
-5,
-4,
-7,
-4,
-5,
-3,
-5,
-3,
-6,
-0,
-2,
-7,
-3,
-1,
-4,
-0,
-1,
-7,
-1,
-3,
-3,
-1,
-1,
-7,
-4,
-4,
-1,
-6,
-1,
-4,
-3,
-2,
-7,
-0,
-6,
-0,
-3,
-5,
-2,
-3,
-1,
-3,
-6,
-0,
-0,
-5,
-4,
-3,
-5,
-6,
-4,
-5,
-1,
-1,
-6,
-4,
-7,
-2,
-4,
-3,
-7,
-2,
-6,
-5,
-1,
-7,
-5,
-4,
-1,
-6,
-0,
-4,
-2,
-1,
-1,
-5,
-1,
-6,
-2,
-2,
-7,
-1,
-0,
-3,
-2,
-2,
-2,
-3,
-1,
-2,
-4,
-1,
-0,
-2,
-4,
-7,
-5,
-2,
-2,
-6,
-1,
-5,
-6,
-6,
-3,
-0,
-6,
-6,
-0,
-5,
-7,
-4,
-3,
-2,
-1,
-4,
-5,
-4,
-1,
-4,
-3,
-2,
-7,
-0,
-4,
-2,
-6,
-6,
-3,
-0,
-2,
-6,
-1,
-0,
-2,
-0,
-1,
-5,
-0,
-1,
-4,
-0,
-2,
-5,
-1,
-4,
-2,
-4,
-4,
-4,
-6,
-0,
-1,
-4,
-5,
-6,
-5,
-4,
-5,
-6,
-7,
-3,
-3,
-5,
-4,
-4,
-2,
-2,
-1,
-2,
-4,
-1,
-3,
-7,
-3,
-2,
-5,
-2,
-0,
-5,
-7,
-3,
-3,
-4,
-6,
-2,
-4,
-2,
-4,
-7,
-2,
-0,
-0,
-1,
-1,
-1,
-2,
-2,
-7,
-5,
-1,
-3,
-3,
-5,
-7,
-1,
-7,
-4,
-7,
-3,
-3,
-0,
-6,
-6,
-5,
-4,
-7,
-7,
-2,
-7,
-1,
-7,
-2,
-7,
-2,
-2,
-7,
-5,
-2,
-2,
-2,
-1,
-1,
-2,
-6,
-7,
-1,
-5,
-6,
-2,
-4,
-6,
-5,
-1,
-7,
-6,
-5,
-4,
-4,
-0,
-0,
-0,
-2,
-5,
-6,
-3,
-0,
-3,
-2,
-5,
-5,
-5,
-4,
-2,
-3,
-6,
-2,
-0,
-7,
-1,
-0,
-0,
-4,
-6,
-4,
-7,
-1,
-4,
-3,
-7,
-7,
-7,
-4,
-1,
-5,
-6,
-2,
-5,
-7,
-0,
-3,
-1,
-4,
-4,
-4,
-6,
-4,
-7,
-3,
-1,
-6,
-2,
-0,
-1,
-7,
-5,
-2,
-6,
-5,
-1,
-7,
-1,
-6,
-5,
-7,
-3,
-1,
-2,
-3,
-5,
-2,
-1,
-6,
-1,
-5,
-6,
-7,
-2,
-3,
-6,
-5,
-6,
-4,
-7,
-2,
-1,
-0,
-2,
-0,
-2,
-6,
-5,
-7,
-0,
-2,
-2,
-7,
-1,
-7,
-7,
-5,
-7,
-2,
-4,
-4,
-4,
-3,
-2,
-5,
-3,
-5,
-3,
-6,
-5,
-7,
-1,
-7,
-4,
-7,
-3,
-7,
-6,
-3,
-4,
-4,
-5,
-7,
-4,
-3,
-0,
-2,
-1,
-0,
-2,
-6,
-3,
-2,
-7,
-0,
-7,
-4,
-2,
-0,
-7,
-1,
-1,
-6,
-7,
-3,
-0,
-5,
-3,
-5,
-7,
-2,
-6,
-0,
-6,
-7,
-0,
-3,
-3,
-2,
-4,
-6,
-5,
-1,
-6,
-3,
-4,
-3,
-1,
-2,
-7,
-2,
-5,
-2,
-1,
-4,
-7,
-7,
-4,
-6,
-2,
-0,
-2,
-5,
-0,
-7,
-3,
-1,
-1,
-2,
-2,
-6,
-0,
-0,
-4,
-0,
-1,
-1,
-4,
-0,
-1,
-4,
-7,
-7,
-6,
-6,
-4,
-1,
-2,
-5,
-7,
-3,
-1,
-6,
-5,
-5,
-1,
-1,
-2,
-4,
-2,
-3,
-7,
-1,
-1,
-1,
-7,
-1,
-0,
-0,
-3,
-5,
-7,
-0,
-2,
-7,
-1,
-2,
-2,
-3,
-5,
-3,
-7,
-4,
-1,
-7,
-4,
-0,
-3,
-0,
-0,
-4,
-2,
-3,
-0,
-5,
-5,
-7,
-0,
-1,
-4,
-0,
-4,
-1,
-2,
-2,
-3,
-0,
-3,
-6,
-4,
-6,
-1,
-4,
-0,
-4,
-7,
-0,
-5,
-5,
-0,
-2,
-6,
-6,
-6,
-6,
-0,
-5,
-5,
-0,
-1,
-6,
-3,
-3,
-3,
-7,
-6,
-7,
-0,
-4,
-1,
-0,
-3,
-2,
-5,
-1,
-3,
-1,
-5,
-7,
-2,
-3,
-5,
-6,
-2,
-7,
-3,
-5,
-0,
-3,
-4,
-2,
-1,
-3,
-7,
-7,
-6,
-3,
-2,
-7,
-3,
-4,
-7,
-6,
-0,
-4,
-4,
-3,
-1,
-2,
-2,
-6,
-5,
-5,
-3,
-1,
-5,
-7,
-5,
-0,
-4,
-0,
-3,
-2,
-3,
-6,
-0,
-2,
-2,
-1,
-2,
-3,
-3,
-6,
-7,
-3,
-2,
-6,
-5,
-6,
-4,
-3,
-0,
-3,
-3,
-5,
-0,
-7,
-6,
-7,
-2,
-7,
-4,
-4,
-4,
-4,
-0,
-2,
-7,
-6,
-5,
-3,
-4,
-1,
-0,
-3,
-2,
-5,
-1,
-4,
-7,
-4,
-0,
-6,
-6,
-1,
-0,
-3,
-3,
-0,
-2,
-4,
-4,
-0,
-7,
-2,
-7,
-3,
-0,
-6,
-1,
-5,
-2,
-4,
-3,
-2,
-7,
-1,
-3,
-2,
-2,
-2,
-7,
-6,
-1,
-6,
-5,
-3,
-2,
-6,
-0,
-2,
-7,
-1,
-4,
-4,
-4,
-7,
-1,
-3,
-4,
-2,
-3,
-3,
-3,
-2,
-3,
-2,
-1,
-5,
-7,
-4,
-0,
-5,
-7,
-3,
-0,
-0,
-5,
-3,
-4,
-5,
-6,
-5,
-4,
-6,
-0,
-6,
-6,
-1,
-1,
-6,
-7,
-3,
-6,
-0,
-0,
-2,
-3,
-0,
-1,
-2,
-3,
-7,
-5,
-6,
-5,
-7,
-2,
-3,
-3,
-6,
-2,
-3,
-6,
-6,
-7,
-2,
-2,
-3,
-1,
-5,
-4,
-5,
-0,
-1,
-2,
-6,
-0,
-3,
-6,
-2,
-6,
-1,
-3,
-2,
-4,
-1,
-3,
-3,
-7,
-1,
-5,
-6,
-4,
-5,
-3,
-4,
-6,
-1,
-7,
-5,
-3,
-3,
-0,
-7,
-4,
-3,
-4,
-4,
-3,
-7,
-6,
-1,
-0,
-0,
-1,
-3,
-2,
-2,
-5,
-0,
-7,
-4,
-0,
-3,
-1,
-3,
-0,
-4,
-5,
-6,
-2,
-4,
-4,
-1,
-0,
-4,
-2,
-5,
-7,
-7,
-6,
-3,
-6,
-6,
-7,
-6,
-2,
-3,
-0,
-5,
-3,
-1,
-2,
-3,
-5,
-5,
-7,
-6,
-1,
-5,
-0,
-7,
-6,
-7,
-7,
-6,
-6,
-6,
-0,
-7,
-2,
-3,
-6,
-6,
-2,
-0,
-3,
-6,
-6,
-0,
-7,
-5,
-0,
-4,
-1,
-2,
-3,
-1,
-6,
-3,
-3,
-4,
-5,
-3,
-2,
-5,
-4,
-3,
-5,
-0,
-0,
-3,
-3,
-0,
-3,
-6,
-7,
-2,
-3,
-7,
-5,
-1,
-6,
-6,
-4,
-0,
-0,
-0,
-3,
-6,
-7,
-2,
-7,
-2,
-3,
-2,
-7,
-0,
-3,
-4,
-4,
-3,
-0,
-6,
-2,
-6,
-7,
-5,
-1,
-2,
-1,
-6,
-3,
-5,
-7,
-1,
-0,
-1,
-6,
-0,
-3,
-3,
-5,
-7,
-1,
-1,
-5,
-0,
-4,
-6,
-6,
-1,
-2,
-5,
-1,
-7,
-3,
-3,
-1,
-5,
-0,
-0,
-7,
-4,
-2,
-7,
-1,
-4,
-6,
-6,
-1,
-0,
-0,
-4,
-7,
-7,
-3,
-4,
-1,
-3,
-6,
-2,
-7,
-1,
-4,
-4,
-0,
-3,
-7,
-7,
-3,
-3,
-7,
-1,
-4,
-6,
-2,
-2,
-1,
-0,
-0,
-5,
-0,
-6,
-5,
-0,
-1,
-6,
-5,
-3,
-4,
-5,
-7,
-7,
-5,
-6,
-3,
-5,
-4,
-7,
-6,
-5,
-7,
-2,
-3,
-2,
-0,
-3,
-6,
-0,
-3,
-1,
-0,
-1,
-1,
-4,
-4,
-2,
-1,
-7,
-4,
-3,
-7,
-7,
-0,
-7,
-3,
-4,
-3,
-5,
-2,
-0,
-0,
-5,
-6,
-6,
-6,
-0,
-6,
-6,
-5,
-6,
-0,
-1,
-0,
-7,
-6,
-6,
-5,
-5,
-0,
-3,
-5,
-2,
-4,
-0,
-2,
-2,
-7,
-7,
-2,
-4,
-6,
-7,
-1,
-5,
-4,
-3,
-7,
-4,
-1,
-3,
-0,
-5,
-5,
-0,
-5,
-6,
-6,
-5,
-5,
-0,
-5,
-2,
-6,
-0,
-0,
-5,
-1,
-4,
-3,
-5,
-1,
-4,
-1,
-4,
-5,
-5,
-3,
-0,
-5,
-2,
-7,
-3,
-5,
-4,
-1,
-0,
-2,
-6,
-1,
-1,
-1,
-1,
-2,
-0,
-3,
-0,
-5,
-6,
-4,
-2,
-7,
-6,
-1,
-4,
-6,
-1,
-4,
-2,
-3,
-1,
-2,
-5,
-4,
-2,
-1,
-7,
-5,
-6,
-5,
-1,
-6,
-4,
-7,
-6,
-1,
-5,
-7,
-3,
-2,
-2,
-6,
-4,
-0,
-1,
-3,
-0,
-2,
-4,
-4,
-6,
-4,
-7,
-2,
-7,
-2,
-2,
-6,
-4,
-6,
-7,
-7,
-0,
-6,
-7,
-5,
-7,
-3,
-4,
-0,
-0,
-1,
-1,
-5,
-2,
-5,
-2,
-2,
-0,
-7,
-0,
-2,
-2,
-6,
-5,
-7,
-3,
-6,
-2,
-6,
-5,
-2,
-4,
-7,
-7,
-2,
-1,
-0,
-1,
-6,
-3,
-1,
-0,
-0,
-6,
-1,
-1,
-7,
-7,
-1,
-5,
-3,
-7,
-4,
-5,
-2,
-1,
-7,
-3,
-3,
-0,
-6,
-3,
-3,
-2,
-7,
-6,
-7,
-2,
-0,
-4,
-2,
-3,
-0,
-0,
-0,
-4,
-1,
-0,
-1,
-0,
-7,
-1,
-0,
-5,
-2,
-7,
-3,
-4,
-3,
-6,
-7,
-4,
-5,
-6,
-6,
-3,
-1,
-7,
-1,
-2,
-6,
-5,
-2,
-0,
-3,
-4,
-1,
-0,
-0,
-4,
-5,
-7,
-0,
-6,
-2,
-2,
-4,
-4,
-2,
-1,
-7,
-5,
-1,
-5,
-2,
-6,
-3,
-5,
-1,
-2,
-2,
-4,
-7,
-4,
-1,
-5,
-1,
-5,
-3,
-4,
-4,
-5,
-5,
-7,
-4,
-3,
-7,
-3,
-2,
-2,
-2,
-1,
-1,
-0,
-0,
-1,
-5,
-1,
-6,
-0,
-2,
-0,
-6,
-4,
-4,
-1,
-1,
-5,
-2,
-1,
-4,
-5,
-5,
-2,
-3,
-1,
-7,
-2,
-0,
-5,
-0,
-7,
-4,
-2,
-0,
-3,
-5,
-4,
-7,
-4,
-5,
-5,
-0,
-0,
-0,
-2,
-3,
-5,
-3,
-7,
-2,
-4,
-6,
-7,
-2,
-1,
-6,
-3,
-1,
-1,
-0,
-7,
-4,
-4,
-4,
-4,
-7,
-2,
-1,
-3,
-5,
-1,
-5,
-2,
-4,
-2,
-4,
-1,
-1,
-2,
-0,
-0,
-7,
-5,
-4,
-2,
-2,
-1,
-6,
-6,
-3,
-5,
-7,
-7,
-6,
-1,
-7,
-3,
-5,
-6,
-5,
-4,
-2,
-0,
-3,
-3,
-4,
-3,
-7,
-3,
-6,
-2,
-0,
-0,
-2,
-3,
-2,
-6,
-0,
-4,
-2,
-4,
-2,
-1,
-7,
-6,
-3,
-5,
-4,
-0,
-0,
-1,
-2,
-7,
-3,
-0,
-5,
-1,
-1,
-3,
-6,
-2,
-2,
-6,
-5,
-7,
-3,
-7,
-1,
-6,
-1,
-2,
-5,
-7,
-3,
-6,
-0,
-0,
-4,
-1,
-1,
-6,
-1,
-0,
-2,
-3,
-3,
-3,
-5,
-1,
-1,
-7,
-7,
-5,
-1,
-2,
-0,
-2,
-2,
-1,
-0,
-2,
-2,
-6,
-2,
-0,
-7,
-7,
-0,
-6,
-0,
-3,
-3,
-6,
-4,
-4,
-0,
-5,
-0,
-7,
-0,
-7,
-2,
-0,
-1,
-5,
-4,
-0,
-2,
-0,
-7,
-0,
-0,
-5,
-5,
-5
diff --git a/gr-atsc/src/lib/qa_atsci_viterbi_decoder.cc b/gr-atsc/src/lib/qa_atsci_viterbi_decoder.cc
deleted file mode 100644
index 8902b6eb8..000000000
--- a/gr-atsc/src/lib/qa_atsci_viterbi_decoder.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/TestAssert.h>
-#include <qa_atsci_viterbi_decoder.h>
-#include <qa_atsci_trellis_encoder.h>
-#include <cstdio>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-
-#define NELEM(x) (sizeof (x) / sizeof (x[0]))
-
-
-static const int NCODERS = atsci_viterbi_decoder::NCODERS;
-
-#if 0
-static void
-map_to_soft_symbols (atsc_soft_data_segment &out,
- const atsc_data_segment &in)
-{
- for (unsigned int i = 0; i < NELEM (in.data); i++){
- out.data[i] = in.data[i] * 2 - 7;
- }
-}
-#endif
-
-static void
-pad_decoder_input (atsc_soft_data_segment out[NCODERS])
-{
- memset (out, 0, sizeof (out));
-
- // add data segment sync
- for (int i = 0; i < NCODERS; i++){
- out[i].data[0] = 5;
- out[i].data[1] = -5;
- out[i].data[2] = -5;
- out[i].data[3] = 5;
- out[i].pli.set_regular_seg (false, i);
- }
-}
-
-void
-qa_atsci_viterbi_decoder::t0 ()
-{
-#if 0
- atsci_trellis_encoder enc;
- atsc_mpeg_packet_rs_encoded encoder_in[NCODERS];
- atsc_data_segment encoder_out[NCODERS];
- atsc_soft_data_segment decoder_in[NCODERS];
- atsc_soft_data_segment decoder_in_pad[NCODERS];
- atsc_mpeg_packet_rs_encoded decoder_out[NCODERS];
- atsc_mpeg_packet_rs_encoded decoder_out_pad[NCODERS];
-
-
- memset (encoder_in, 0, sizeof (encoder_in));
- memset (encoder_out, 0, sizeof (encoder_out));
- memset (decoder_out_pad, 0, sizeof (decoder_out_pad));
-
- srandom (1);
-
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (encoder_in[i].data); j++){
- int t = (random () >> 8) & 0xff; // 8 random bits
- encoder_in[i].data[j] = t;
- }
- }
-
- fflush (stdout);
- printf ("@@@ ENCODER INPUT @@@\n");
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (encoder_in[i].data); j++){
- printf ("%d\n", encoder_in[i].data[j]);
- }
- }
-
- enc.reset ();
- enc.encode (encoder_out, encoder_in);
-
- printf ("@@@ ENCODER OUTPUT @@@\n");
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (encoder_out[i].data); j++){
- printf ("%d\n", encoder_out[i].data[j]);
- }
- }
-
- for (int i = 0; i < NCODERS; i++)
- map_to_soft_symbols (decoder_in[i], encoder_out[i]);
-
- viterbi.reset ();
-
- // this has only the previous (non-existant) output
- viterbi.decode (decoder_out_pad, decoder_in);
-
- // now we'll see the real output
- pad_decoder_input (decoder_in_pad);
- viterbi.decode (decoder_out, decoder_in_pad);
-
- printf ("@@@ DECODER OUTPUT @@@\n");
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (decoder_out[i].data); j++){
- printf ("%d\n", decoder_out[i].data[j]);
- }
- }
- fflush (stdout);
-#endif
-}
-
-void
-qa_atsci_viterbi_decoder::t1 ()
-{
- atsc_soft_data_segment decoder_in[NCODERS];
- atsc_soft_data_segment decoder_in_pad[NCODERS];
- atsc_mpeg_packet_rs_encoded decoder_out[NCODERS];
- atsc_mpeg_packet_rs_encoded decoder_out_pad[NCODERS];
- atsc_mpeg_packet_rs_encoded expected_out[NCODERS];
- static const float raw_input[NCODERS * NELEM (decoder_in[0].data)] = {
-#include "qa_atsci_viterbi_decoder_t1_input.dat"
- };
- static const unsigned char raw_output[NCODERS * NELEM (expected_out[0].data)] = {
-#include "qa_atsci_viterbi_decoder_t1_output.dat"
- };
-
-
- // load up input
- const float *ri = &raw_input[0];
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (decoder_in[i].data); j++){
- decoder_in[i].data[j] = *ri++;
- }
- decoder_in[i].pli.set_regular_seg (false, i);
- }
-
- // load up expected output
- const unsigned char *ro = &raw_output[0];
- for (int i = 0; i < NCODERS; i++){
- for (unsigned int j = 0; j < NELEM (expected_out[i].data); j++){
- expected_out[i].data[j] = *ro++;
- }
- expected_out[i].pli.set_regular_seg (false, i);
- }
-
- viterbi.reset ();
-
- // this has only the previous (non-existant) output
- viterbi.decode (decoder_out_pad, decoder_in);
-
- // now we'll see the real output
- pad_decoder_input (decoder_in_pad);
- viterbi.decode (decoder_out, decoder_in_pad);
-
- for (int i = 0; i < NCODERS; i++){ // check the result
- CPPUNIT_ASSERT (expected_out[i] == decoder_out[i]);
- }
-}
diff --git a/gr-atsc/src/lib/qa_atsci_viterbi_decoder.h b/gr-atsc/src/lib/qa_atsci_viterbi_decoder.h
deleted file mode 100644
index 440c79caf..000000000
--- a/gr-atsc/src/lib/qa_atsci_viterbi_decoder.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ATSC_VITERBI_DECODER_H_
-#define _QA_ATSC_VITERBI_DECODER_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <stdio.h>
-#include <atsci_viterbi_decoder.h>
-
-class qa_atsci_viterbi_decoder : public CppUnit::TestCase {
-
- public:
-
- void setUp (void)
- {
- viterbi.reset ();
- }
-
- CPPUNIT_TEST_SUITE (qa_atsci_viterbi_decoder);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- atsci_viterbi_decoder viterbi;
-
- void t0 ();
- void t1 ();
-};
-
-
-#endif /* _QA_ATSC_VITERBI_DECODER_H_ */
diff --git a/gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_input.dat b/gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_input.dat
deleted file mode 100644
index b2f356c87..000000000
--- a/gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_input.dat
+++ /dev/null
@@ -1,9984 +0,0 @@
- 5 + -0.863407,
- -5 + 0.630254,
- -5 + 0.766777,
- 5 + -0.587788,
- -3 + 0.197374,
- -7 + -0.928392,
- 1 + 0.846137,
- -3 + -0.148515,
- 5 + 0.20529,
- -3 + 0.957658,
- 1 + 0.712777,
- -3 + -0.783731,
- -7 + -0.649688,
- -3 + 0.364183,
- -3 + 0.766379,
- 5 + -0.254228,
- -5 + 0.265344,
- 1 + -0.0926997,
- 5 + -0.729882,
- -5 + -0.946608,
- 7 + 0.941424,
- -1 + 0.00502258,
- 5 + 0.353994,
- -1 + -0.431315,
- -3 + 0.802947,
- 7 + 0.0174765,
- -1 + 0.107732,
- 7 + -0.426013,
- -3 + 0.179269,
- 1 + -0.334729,
- -5 + 0.363112,
- 1 + -0.793512,
- -1 + -0.386831,
- 7 + -0.469307,
- 7 + -0.592471,
- 3 + -0.0650877,
- 7 + 0.465307,
- -1 + 0.0575076,
- 3 + 0.804467,
- 7 + 0.766673,
- -3 + 0.177288,
- -3 + 0.254259,
- -7 + 0.0933109,
- 3 + -0.132741,
- -7 + 0.226975,
- 1 + 0.805,
- 3 + 0.474327,
- 3 + -0.147847,
- -1 + 0.3179,
- -7 + -0.141455,
- 3 + 0.322113,
- -3 + 0.633945,
- -1 + -0.950742,
- -5 + -0.39542,
- 3 + -0.0594983,
- -3 + -0.772717,
- -5 + 0.545784,
- 7 + 0.398416,
- 3 + -0.673597,
- 3 + -0.790352,
- -7 + -0.544624,
- 7 + -0.633903,
- -1 + -0.908654,
- -3 + -0.311397,
- -5 + 0.662512,
- -3 + -0.135222,
- -7 + 0.366291,
- 1 + -0.741085,
- -7 + -0.29157,
- -5 + -0.673842,
- 3 + 0.776452,
- -5 + -0.0937042,
- 3 + 0.683802,
- -5 + -0.722854,
- -7 + 0.0347072,
- -5 + 0.40685,
- -5 + 0.31874,
- 5 + -0.947299,
- 3 + -0.955457,
- 1 + 0.742103,
- -5 + -0.535021,
- -5 + -0.67394,
- -5 + -0.108192,
- -1 + -0.968649,
- 1 + 0.445698,
- 3 + -0.476884,
- 7 + 0.566045,
- -7 + -0.137864,
- -1 + -0.190159,
- -5 + -0.0220287,
- 5 + 0.307356,
- 5 + 0.917233,
- -7 + 0.320761,
- 3 + -0.789388,
- -5 + 0.117822,
- 5 + -0.604396,
- -1 + 0.552753,
- 7 + -0.446649,
- 7 + -0.810118,
- 7 + -0.658175,
- -7 + 0.553164,
- -7 + -0.344854,
- -3 + 0.280593,
- 7 + -0.884303,
- 7 + 0.720506,
- -1 + -0.987799,
- 7 + 0.793155,
- 1 + -0.850125,
- 7 + 0.115369,
- 5 + 0.544406,
- 5 + -0.276058,
- -1 + -0.231108,
- -5 + 0.376881,
- 3 + -0.559075,
- 7 + -0.915446,
- -1 + -0.460641,
- 3 + 0.818044,
- -3 + -0.991244,
- 1 + 0.420497,
- 1 + 0.485863,
- -3 + -0.376003,
- 5 + -0.350986,
- 5 + 0.430744,
- -3 + 0.463798,
- 5 + 0.42518,
- 5 + -0.290836,
- -5 + -0.691567,
- -7 + 0.824346,
- 3 + 0.450636,
- -3 + 0.043629,
- 7 + 0.316293,
- 5 + -0.120924,
- 1 + 0.726472,
- -1 + -0.543775,
- 3 + 0.933344,
- -3 + 0.132114,
- -3 + -0.310619,
- 5 + 0.911921,
- -1 + -0.497207,
- 3 + -0.637383,
- -5 + -0.732262,
- 7 + 0.107649,
- 3 + 0.520015,
- -1 + 0.157455,
- -3 + -0.894858,
- -1 + 0.0945327,
- 1 + -0.691426,
- 7 + 0.144207,
- 3 + 0.445607,
- -1 + 0.255407,
- -7 + 0.306034,
- -3 + -0.371352,
- -1 + 0.124452,
- -5 + 0.359695,
- -5 + -0.888643,
- 3 + 0.290357,
- 3 + -0.0254667,
- -3 + 0.407853,
- -5 + 0.679174,
- -5 + 0.0575717,
- -3 + 0.137283,
- 3 + 0.729587,
- 7 + 0.31509,
- -3 + -0.348804,
- 1 + 0.57604,
- -5 + 0.345748,
- 7 + -0.327496,
- -5 + -0.425651,
- -7 + 0.140657,
- -3 + 0.238764,
- -7 + -0.143133,
- 3 + 0.337288,
- 1 + 0.959842,
- 7 + -0.977864,
- 3 + -0.317419,
- 3 + -0.198654,
- 3 + 0.955435,
- 3 + -0.23876,
- 1 + -0.88292,
- -5 + -0.511151,
- 3 + 0.779996,
- 3 + -0.443377,
- -1 + -0.192438,
- -5 + 0.811447,
- -7 + 0.634155,
- 1 + -0.762404,
- 3 + 0.731365,
- 5 + 0.783236,
- 5 + -0.307317,
- 7 + 0.482175,
- 7 + -0.539608,
- 7 + -0.775192,
- 1 + -0.560785,
- -7 + 0.206625,
- -5 + -0.038118,
- -5 + -0.228189,
- 1 + 0.462362,
- -5 + 0.72833,
- -1 + 0.622996,
- -3 + 0.998274,
- 5 + 0.142163,
- -7 + 0.618011,
- 3 + 0.122273,
- -7 + -0.483532,
- -1 + -0.854097,
- -5 + 0.108088,
- 7 + -0.193228,
- 3 + 0.648767,
- -3 + -0.656924,
- -7 + -0.991222,
- -3 + -0.25652,
- 3 + -0.269033,
- -1 + 0.324665,
- -1 + 0.107827,
- -5 + -0.0475933,
- -5 + -0.99274,
- -5 + -0.30318,
- -3 + -0.747831,
- -3 + -0.203781,
- 3 + -0.010757,
- 7 + 0.0734757,
- 7 + -0.761203,
- -7 + 0.389509,
- 1 + -0.25976,
- -1 + 0.965806,
- 7 + 0.526324,
- -1 + -0.298331,
- -3 + 0.410725,
- -1 + 0.00752225,
- 5 + -0.455632,
- 1 + -0.884761,
- 7 + 0.602377,
- 7 + 0.555917,
- 3 + -0.160695,
- -7 + -0.567533,
- 3 + 0.758232,
- 1 + -0.587694,
- -7 + 0.414466,
- -7 + -0.652491,
- 1 + 0.0124494,
- -7 + 0.389889,
- 7 + 0.227003,
- 1 + 0.242753,
- -7 + 0.913462,
- -3 + 0.691642,
- -5 + 0.75989,
- 1 + -0.596777,
- -3 + -0.752662,
- 3 + -0.108642,
- 7 + -0.60189,
- 7 + 0.511322,
- -3 + -0.24478,
- 7 + -0.849058,
- -1 + -0.845527,
- -7 + -0.572068,
- -5 + -0.661012,
- 5 + -0.701889,
- 7 + 0.822228,
- 1 + -0.00200901,
- 5 + -0.71468,
- 5 + 0.691151,
- 7 + 0.561903,
- 3 + -0.527991,
- -1 + -0.867353,
- 3 + -0.728324,
- 5 + -0.813234,
- 1 + -0.966217,
- 1 + 0.0669532,
- 7 + 0.905965,
- -3 + -0.937283,
- -3 + 0.774056,
- 3 + -0.384885,
- -7 + 0.175322,
- -3 + 0.309913,
- -5 + 0.251167,
- -1 + 0.381753,
- 3 + 0.00625176,
- -7 + 0.56373,
- -3 + 0.63392,
- 3 + 0.762169,
- 7 + 0.0347039,
- -3 + -0.935108,
- -1 + -0.114944,
- 1 + -0.424213,
- 1 + 0.0317198,
- -3 + 0.2139,
- -5 + 0.0530905,
- -7 + -0.36603,
- -5 + -0.851717,
- -7 + 0.414219,
- -1 + -0.397429,
- -3 + -0.995697,
- -7 + -0.328063,
- -1 + -0.604664,
- 7 + -0.45941,
- 3 + 0.718596,
- -7 + -0.377836,
- -1 + 0.915331,
- 7 + -0.730175,
- -1 + -0.51083,
- 7 + -0.923481,
- 1 + 0.102495,
- -1 + 0.1293,
- -3 + 0.812872,
- -5 + 0.066343,
- -1 + -0.578684,
- 1 + 0.926482,
- -7 + 0.10389,
- 5 + -0.462554,
- -5 + -0.108,
- 5 + -0.471902,
- 7 + -0.34884,
- 5 + 0.719192,
- -7 + -0.763765,
- -3 + 0.257366,
- -5 + -0.623314,
- -7 + 0.0467943,
- 5 + -0.646451,
- 7 + 0.54531,
- 3 + -0.955682,
- -5 + -0.432122,
- 3 + -0.886357,
- 1 + 0.088559,
- 5 + -0.975894,
- 5 + -0.105386,
- -3 + 0.0978638,
- 1 + -0.199998,
- 5 + 0.0380346,
- 3 + 0.427315,
- -3 + 0.214304,
- -5 + -0.566543,
- -7 + -0.380715,
- -3 + -0.877135,
- -5 + 0.267701,
- -3 + -0.03107,
- -3 + 0.595488,
- -1 + 0.322574,
- -5 + 0.559362,
- 1 + -0.0401364,
- -7 + 0.528057,
- 5 + -0.319427,
- -1 + 0.357237,
- 7 + 0.222854,
- -5 + -0.432566,
- 1 + -0.998243,
- 7 + 0.742835,
- 3 + -0.182255,
- 3 + -0.471161,
- 3 + 0.606823,
- -7 + 0.974148,
- 5 + -0.667598,
- 1 + -0.811568,
- 1 + -0.936551,
- 7 + -0.530943,
- 5 + 0.908057,
- -7 + 0.895185,
- 5 + 0.711135,
- 1 + -0.95896,
- 1 + 0.83532,
- 1 + 0.14732,
- 3 + 0.90921,
- -1 + -0.30945,
- -1 + -0.869543,
- -7 + -0.360646,
- 1 + 0.357157,
- -3 + -0.514692,
- 5 + 0.896144,
- -1 + -0.196886,
- -5 + -0.319624,
- -1 + -0.472977,
- -1 + -0.784624,
- -1 + -0.281646,
- -5 + -0.559682,
- 3 + 0.391078,
- 7 + 0.306199,
- -3 + 0.962734,
- -7 + -0.11162,
- -7 + 0.357581,
- 3 + 0.0805047,
- 3 + -0.922337,
- 1 + 0.232492,
- -5 + -0.574144,
- -1 + 0.710829,
- 7 + -0.284843,
- -1 + 0.831973,
- -1 + -0.336799,
- -3 + -0.745866,
- -5 + -0.645711,
- 5 + 0.0646029,
- -3 + 0.252552,
- 5 + -0.48003,
- -5 + 0.299438,
- 7 + 0.738929,
- -5 + 0.40337,
- 5 + 0.605547,
- -3 + -0.525722,
- 1 + -0.326724,
- 1 + -0.515053,
- 5 + 0.261516,
- -7 + 0.320474,
- -1 + -0.521487,
- -5 + 0.903239,
- -3 + -0.403525,
- 7 + 0.0639151,
- 3 + 0.359482,
- 3 + 0.823776,
- 5 + 0.0387504,
- -7 + 0.109849,
- 3 + -0.097467,
- -5 + -0.832645,
- -5 + 0.526237,
- 7 + 0.438123,
- 3 + -0.519244,
- 1 + -0.0476922,
- 3 + 0.191197,
- -7 + -0.534928,
- 3 + 0.462164,
- 7 + -0.895527,
- -1 + 0.473474,
- -7 + 0.146189,
- 5 + -0.179909,
- -3 + -0.285322,
- 5 + 0.613479,
- -1 + -0.0315166,
- 7 + 0.698841,
- 3 + -0.774282,
- 1 + 0.818017,
- 7 + -0.932623,
- 3 + 0.0664446,
- -7 + 0.06308,
- 3 + -0.519814,
- 5 + -0.576546,
- 5 + -0.267179,
- -3 + -0.837482,
- 5 + -0.255068,
- 5 + -0.0568383,
- -3 + 0.888405,
- -3 + -0.366288,
- -5 + -0.552696,
- -1 + 0.541689,
- 7 + -0.0454361,
- -5 + 0.608489,
- 3 + -0.922755,
- -5 + 0.406846,
- -5 + -0.506253,
- 7 + -0.688017,
- -5 + 0.776949,
- 1 + -0.378568,
- 5 + -0.727209,
- -7 + 0.613322,
- 5 + 0.962756,
- -7 + -0.893482,
- -7 + -0.987528,
- -7 + 0.456806,
- 7 + 0.786419,
- 1 + 0.034181,
- -7 + 0.790939,
- -5 + -0.0300588,
- 1 + 0.1652,
- -7 + -0.481907,
- 3 + 0.0991387,
- -7 + -0.564886,
- 5 + 0.85039,
- -1 + 0.812973,
- -1 + -0.407522,
- 7 + -0.952524,
- 5 + 0.765642,
- -5 + -0.337741,
- 7 + 0.957819,
- 3 + -0.899041,
- -1 + -0.671052,
- -3 + 0.983954,
- 1 + -0.89124,
- -3 + 0.0940522,
- -1 + 0.611417,
- 7 + -0.937967,
- -1 + 0.941416,
- -1 + -0.359601,
- 5 + 0.747211,
- -7 + -0.111301,
- 3 + -0.640113,
- 7 + 0.0550081,
- 7 + -0.189345,
- 3 + 0.214366,
- -5 + 0.135666,
- -5 + 0.226602,
- 3 + -0.410662,
- 5 + -0.843728,
- -3 + -0.371912,
- -7 + -0.989917,
- -1 + 0.690856,
- -1 + 0.0420038,
- 7 + 0.00959448,
- 5 + -0.815518,
- 1 + 0.430825,
- -7 + 0.609881,
- 5 + -0.688188,
- 5 + -0.60674,
- -1 + 0.0334734,
- 1 + 0.722216,
- -3 + 0.285942,
- 7 + 0.519757,
- 3 + -0.27104,
- -1 + 0.509289,
- -3 + -0.81976,
- 5 + 0.481086,
- 3 + -0.974128,
- 7 + -0.337838,
- 5 + 0.962801,
- -3 + -0.798452,
- -3 + 0.457351,
- 1 + 0.103281,
- -1 + -0.0256317,
- 7 + 0.802218,
- 7 + 0.689228,
- -7 + -0.276751,
- 5 + 0.404102,
- -1 + -0.860859,
- -7 + -0.0371287,
- -1 + 0.370437,
- -5 + -0.616334,
- -5 + -0.758392,
- 1 + -0.454585,
- 1 + -0.137519,
- 7 + -0.261276,
- 5 + 0.558348,
- 1 + -0.948463,
- -5 + 0.523879,
- -5 + 0.555652,
- -1 + 0.840325,
- 7 + 0.279812,
- 5 + 0.617966,
- 1 + 0.192231,
- 5 + 0.132018,
- -7 + -0.11959,
- 1 + -0.894721,
- -7 + -0.504819,
- 5 + -0.419666,
- 7 + -0.391328,
- -3 + -0.24103,
- -7 + -0.852627,
- -7 + 0.990221,
- 7 + 0.822151,
- -7 + 0.170617,
- 3 + 0.614475,
- -7 + 0.446277,
- -7 + -0.371819,
- 1 + 0.831829,
- -5 + 0.0787276,
- -1 + -0.684313,
- 3 + -0.611736,
- 5 + 0.472613,
- 7 + 0.730033,
- -5 + -0.811217,
- 1 + -0.760817,
- -3 + 0.268843,
- 5 + 0.584456,
- 1 + 0.823053,
- -7 + 0.80804,
- -7 + 0.457053,
- 5 + -0.577104,
- -5 + -0.224893,
- -5 + -0.107738,
- -1 + -0.51484,
- 3 + -0.198893,
- -7 + 0.278753,
- 7 + 0.502244,
- -1 + 0.0510433,
- 1 + -0.402208,
- -7 + 0.343478,
- 1 + -0.901047,
- 1 + 0.369701,
- -3 + -0.944263,
- -5 + 0.386476,
- 3 + -0.954781,
- 7 + -0.688498,
- 7 + -0.365083,
- 3 + -0.776885,
- -1 + -0.598649,
- 3 + -0.87102,
- 1 + 0.975515,
- -3 + -0.467838,
- 1 + 0.466075,
- -7 + 0.271324,
- -1 + 0.978247,
- 7 + 0.112029,
- -1 + 0.601593,
- -3 + -0.412666,
- 1 + -0.601096,
- 5 + -0.0684049,
- -7 + 0.552019,
- -5 + 0.313324,
- 5 + -0.836011,
- -1 + 0.528016,
- -3 + 0.284965,
- -3 + 0.700575,
- -5 + 0.0874079,
- -7 + -0.0126598,
- -7 + -0.276119,
- 5 + -0.218603,
- -5 + -0.0014039,
- -3 + 0.189325,
- 7 + 0.429569,
- -5 + 0.837003,
- 3 + 0.703335,
- 7 + -0.216503,
- 7 + 0.0920741,
- 7 + 0.750109,
- -1 + -0.322132,
- 7 + -0.128556,
- -1 + 0.00373274,
- -1 + -0.17115,
- 1 + 0.264227,
- 3 + 0.988822,
- -1 + 0.0243255,
- -5 + 0.605084,
- -7 + 0.295968,
- 5 + 0.873413,
- -1 + 0.434273,
- -5 + -0.781778,
- 5 + -0.0426681,
- -5 + 0.167692,
- -1 + -0.334183,
- -1 + 0.07798,
- -1 + -0.297114,
- -3 + 0.816338,
- 1 + -0.611242,
- 3 + -0.423656,
- 3 + -0.432077,
- 1 + -0.145807,
- 5 + 0.10632,
- -5 + 0.756861,
- -7 + -0.931971,
- 7 + -0.397063,
- 5 + 0.283628,
- -7 + 0.721398,
- 7 + 0.348194,
- -3 + -0.33922,
- 3 + 0.412108,
- 7 + 0.510752,
- -3 + -0.263234,
- -7 + 0.485708,
- 5 + 0.573377,
- 3 + 0.244824,
- -7 + 0.756185,
- 5 + -0.981843,
- -7 + 0.890249,
- -5 + -0.785723,
- 1 + 0.429159,
- 7 + 0.891205,
- 5 + -0.310018,
- 5 + -0.0331806,
- -7 + 0.567766,
- -7 + -0.172382,
- 3 + -0.0973954,
- -1 + -0.726783,
- -7 + 0.86626,
- -3 + 0.640023,
- 5 + -0.104726,
- -3 + -0.213919,
- -5 + -0.131563,
- 3 + 0.108026,
- 1 + 0.426832,
- -7 + 0.631181,
- -3 + -0.911012,
- 5 + 0.232769,
- -3 + -0.124074,
- 5 + -0.263584,
- -3 + 0.246066,
- 7 + 0.833384,
- -5 + -0.798822,
- 1 + -0.281957,
- 1 + -0.527281,
- 3 + 0.918325,
- 5 + -0.872591,
- -3 + 0.987781,
- 7 + -0.724259,
- 7 + 0.73749,
- 5 + -0.179643,
- 1 + -0.480496,
- -1 + -0.0747694,
- 3 + -0.162109,
- 1 + 0.655518,
- 5 + 0.815859,
- 7 + -0.422858,
- -1 + 0.19599,
- 3 + -0.601651,
- 7 + -0.598413,
- -5 + -0.951473,
- 7 + 0.684015,
- 7 + 0.121945,
- 5 + 0.330604,
- -1 + 0.800472,
- -5 + -0.892743,
- -5 + -0.0700532,
- -1 + 0.143832,
- -1 + 0.713388,
- 1 + -0.253503,
- 1 + -0.0462767,
- 3 + 0.140933,
- -5 + 0.94534,
- -7 + 0.665662,
- -5 + 0.207102,
- 3 + -0.327194,
- 5 + 0.110171,
- -5 + 0.225803,
- 1 + -0.900872,
- -5 + 0.0169889,
- 5 + 0.152721,
- 7 + 0.125242,
- -1 + 0.63948,
- 7 + 0.0639926,
- -5 + -0.869524,
- 7 + -0.160608,
- -1 + -0.465428,
- 5 + -0.2185,
- -7 + -0.465846,
- -1 + 0.0973919,
- 3 + 0.450568,
- -5 + -0.451587,
- -7 + -0.83918,
- -1 + 0.709855,
- 3 + -0.86862,
- 5 + 0.676479,
- 7 + -0.125049,
- -1 + -0.191198,
- 5 + -0.925049,
- 1 + -0.521026,
- -3 + -0.0364143,
- -7 + 0.600769,
- -7 + 0.164072,
- -5 + 0.416589,
- -7 + -0.595857,
- -3 + 0.220567,
- 3 + 0.0636474,
- -7 + 0.644101,
- 5 + -0.775524,
- -3 + -0.192748,
- 1 + 0.0538391,
- 1 + 0.29524,
- -5 + 0.882538,
- -5 + -0.816844,
- -5 + 0.862396,
- -5 + 0.314402,
- 1 + -0.392808,
- -3 + 0.651255,
- -1 + -0.231968,
- 1 + 0.738021,
- 5 + 0.84997,
- -3 + 0.186296,
- 1 + 0.741231,
- 1 + -0.177977,
- 5 + 0.522434,
- -7 + 0.597047,
- -3 + 0.0266608,
- -5 + -0.152547,
- 5 + -0.579447,
- -1 + -0.357272,
- -7 + -0.497293,
- 5 + 0.869424,
- -5 + -0.0230876,
- -5 + -0.132476,
- -3 + 0.936738,
- 5 + 0.558816,
- -3 + -0.0384813,
- -1 + 0.483534,
- -7 + 0.867384,
- -1 + 0.42158,
- 3 + 0.420513,
- 7 + -0.0754159,
- -5 + -0.379954,
- 7 + 0.769618,
- -7 + 0.340938,
- -7 + -0.869991,
- 3 + 0.830734,
- 3 + 0.94181,
- 3 + -0.130749,
- 3 + 0.517635,
- -3 + -0.252298,
- -3 + -0.0496521,
- 1 + 0.684225,
- 1 + 0.172965,
- 1 + 0.417296,
- 7 + -0.466398,
- 7 + -0.114508,
- -1 + -0.109476,
- -7 + 0.00148834,
- 1 + 0.0949139,
- 1 + 0.432791,
- -1 + -0.240929,
- -1 + 0.652485,
- 5 + -0.217385,
- 7 + -0.8724,
- -1 + 0.387098,
- 3 + -0.444865,
- -3 + 0.184706,
- 7 + -0.730551,
- 7 + 0.754565,
- 7 + -0.604301,
- 3 + -0.119371,
- -1 + -0.28214,
- 5 + 0.143776,
- 3 + 0.957703,
- 3 + -0.104371,
- -5 + -0.261664,
- -1 + 0.495793,
- 1 + -0.734588,
- -3 + 0.628134,
- -3 + 0.817538,
- -7 + 0.361645,
- 3 + 0.162489,
- 5 + -0.536024,
- 7 + -0.486136,
- 5 + -0.776124,
- -5 + -0.629988,
- 1 + -0.0367843,
- -5 + -0.493533,
- -7 + -0.725222,
- -5 + 0.492433,
- 7 + 0.288113,
- -3 + -0.784857,
- -5 + 0.824698,
- -1 + -0.545993,
- -3 + -0.306256,
- 1 + -0.877171,
- -1 + 0.567034,
- 3 + -0.440337,
- -1 + 0.14643,
- 7 + -0.755017,
- -1 + -0.832763,
- 5 + -0.498979,
- 3 + 0.763625,
- 5 + 0.566975,
- -5 + 0.0534092,
- -5 + -0.963171,
- 5 + 0.0216508,
- 7 + 0.597324,
- 7 + -0.441571,
- 7 + 0.0347587,
- 3 + 0.983787,
- 1 + 0.188113,
- -1 + -0.171194,
- -7 + -0.641733,
- 7 + 0.36138,
- -1 + -0.566453,
- 1 + 0.882606,
- 1 + 0.61524,
- -1 + -0.773541,
- 3 + 0.153026,
- 5 + -0.621578,
- -7 + -0.904904,
- -5 + 0.0406272,
- -5 + 0.415864,
- 5 + -0.60085,
- 1 + 0.727596,
- -7 + -0.0860673,
- -1 + -0.785685,
- -5 + -0.889453,
- 7 + -0.141489,
- -5 + 0.04296,
- -5 + 0.564742,
- -7 + -0.12966,
- -1 + 0.841196,
- -5 + 0.71528,
- 1 + -0.104704,
- 1 + -0.263372,
- -7 + 0.680698,
- 3 + 0.756433,
- -3 + -0.200798,
- 1 + 0.027729,
- -1 + -0.464512,
- 7 + -0.60066,
- -1 + 0.104495,
- -3 + 0.713626,
- -5 + -0.776119,
- 3 + 0.168751,
- -1 + -0.905566,
- 5 + -0.955254,
- -7 + -0.407108,
- -3 + 0.170629,
- -3 + -0.453202,
- -1 + -0.907515,
- 5 + -0.210368,
- -3 + -0.98412,
- -3 + -0.798125,
- 3 + -0.414919,
- -1 + -0.236897,
- 3 + -0.491091,
- -5 + -0.77713,
- 3 + 0.230108,
- 1 + -0.796737,
- 5 + -0.26121,
- 3 + 0.397635,
- -1 + 0.85451,
- -3 + -0.393889,
- 5 + 0.983874,
- 5 + 0.942163,
- -3 + 0.74394,
- 1 + 0.242709,
- 3 + -0.779053,
- -1 + 0.341856,
- -7 + -0.116747,
- -7 + -0.640877,
- -1 + -0.318128,
- -7 + 0.00367009,
- -3 + 0.617172,
- 7 + -0.204651,
- -5 + 0.0780388,
- 7 + 0.626396,
- 1 + -0.638141,
- -1 + -0.882934,
- -5 + -0.704026,
- -3 + 0.851265,
- 7 + 0.0141939,
- -7 + 0.611678,
- -1 + 0.341055,
- 3 + -0.405282,
- -7 + 0.993071,
- -5 + -0.0799289,
- 1 + -0.967094,
- -5 + -0.893374,
- 5 + -0.606802,
- -1 + -0.296088,
- 3 + 0.578082,
- 1 + 0.630626,
- -1 + -0.256433,
- -7 + 0.023755,
- 5 + -0.565901,
- 1 + -0.87536,
- -7 + 0.591114,
- 3 + -0.0151382,
- 3 + -0.218575,
- -1 + -0.571426,
- 7 + -0.817884,
- 1 + -0.105616,
- -5 + 0.226052,
- 1 + -0.197419,
- 1 + -0.804454,
- 1 + -0.957871,
- -7 + 0.869702,
- 7 + -0.118016,
- -7 + 0.231177,
- -1 + 0.143965,
- -7 + -0.544014,
- -7 + -0.125394,
- -5 + 0.66333,
- -5 + 0.0453925,
- 3 + -0.445539,
- -3 + -0.841133,
- -1 + 0.406819,
- 1 + 0.066009,
- -7 + -0.141267,
- 7 + 0.20172,
- 1 + -0.397711,
- -3 + -0.341991,
- 3 + -0.66472,
- -1 + 0.1133,
- -1 + -0.0874664,
- 1 + 0.460378,
- -5 + 0.833044,
- -1 + 0.694845,
- -5 + -0.814154,
- 5 + 0.190124,
- 5 + 0.90168,
- -3 + 0.150333,
- 5 + -0.832164,
- 5 + -0.623571,
- 5 + 0.116979,
- 7 + -0.623282,
- -3 + 0.724953,
- 3 + -0.656996,
- 7 + 0.0645319,
- 3 + 0.0895726,
- 7 + -0.776726,
- -1 + 0.318608,
- 3 + 0.0496206,
- -3 + 0.0368759,
- -1 + 0.555521,
- -5 + -0.673436,
- 1 + 0.0103849,
- -3 + 0.0743446,
- -3 + -0.259726,
- 5 + 0.0216708,
- 1 + 0.769972,
- -5 + -0.441797,
- -3 + 0.719177,
- 3 + 0.576816,
- 1 + -0.95444,
- 3 + 0.385715,
- 7 + 0.215961,
- -7 + -0.0887377,
- -3 + 0.9093,
- 5 + 0.231244,
- -5 + 0.878044,
- 1 + 0.237768,
- -5 + -0.224173,
- 7 + 0.115184,
- 5 + -0.507669,
- 3 + -0.4694,
- -5 + -0.559494,
- -7 + 0.256493,
- -3 + 0.691867,
- 7 + 0.760056,
- -5 + -0.0235437,
- -1 + -0.491056,
- -7 + -0.632234,
- -7 + 0.688073,
- -3 + 0.448912,
- 1 + 0.806255,
- 3 + 0.174302,
- -1 + 0.924295,
- 1 + -0.0079971,
- 7 + 0.585534,
- 5 + -0.106368,
- 7 + -0.647104,
- -3 + -0.232442,
- -1 + 0.103303,
- 3 + -0.545308,
- -7 + 0.171427,
- 1 + -0.150061,
- -5 + 0.124142,
- 1 + 0.609533,
- 1 + -0.51341,
- 3 + 0.372706,
- -5 + 0.406665,
- 3 + -0.277069,
- -3 + 0.316304,
- -7 + -0.233404,
- -7 + 0.0158354,
- -3 + -0.376876,
- 1 + -0.914291,
- -3 + -0.819444,
- -7 + 0.566109,
- -5 + -0.582836,
- -5 + -0.839922,
- 5 + 0.186932,
- -5 + -0.675285,
- 5 + -0.957952,
- -7 + -0.784832,
- -3 + 0.403649,
- 3 + 0.798144,
- -3 + -0.880645,
- -3 + 0.528126,
- -1 + -0.657318,
- 3 + 0.890482,
- 5 + -0.46684,
- 5 + -0.566931,
- -7 + 0.81062,
- -1 + -0.0238388,
- -7 + -0.377402,
- -3 + -0.21429,
- -5 + -0.505753,
- -7 + -0.951982,
- -1 + -0.515628,
- 3 + -0.871026,
- -1 + -0.838789,
- -7 + -0.725925,
- 1 + 0.77047,
- -3 + 0.858867,
- 5 + 0.600752,
- -3 + 0.0665514,
- 1 + -0.317725,
- 3 + -0.843704,
- 5 + 0.219384,
- -5 + -0.586559,
- 7 + -0.240551,
- -3 + -0.209033,
- -7 + 0.493641,
- 7 + 0.152856,
- -7 + -0.597324,
- -1 + -0.276392,
- -1 + 0.831608,
- 5 + 0.470546,
- 5 + 0.330143,
- -7 + 0.642262,
- -7 + 0.977435,
- -7 + 0.313444,
- -7 + -0.10048,
- 5 + 0.563594,
- -1 + -0.186187,
- -1 + -0.365659,
- 1 + -0.837578,
- -5 + 0.140403,
- 7 + -0.78022,
- -1 + 0.844668,
- 7 + 0.375148,
- 7 + -0.0498808,
- 1 + 0.40211,
- -1 + 0.744509,
- 3 + 0.079077,
- 7 + 0.296291,
- 7 + -0.27219,
- -7 + -0.660157,
- -3 + 0.915867,
- -1 + 0.102478,
- 1 + -0.851214,
- 7 + -0.634492,
- -5 + -0.253903,
- -5 + -0.598679,
- -7 + -0.223802,
- 3 + 0.0226067,
- 1 + 0.696982,
- -5 + -0.0351859,
- 5 + -0.481739,
- -1 + -0.00746336,
- 3 + 0.416315,
- 5 + 0.321218,
- 3 + -0.283638,
- -7 + 0.752743,
- 3 + -0.774599,
- -1 + 0.30598,
- 5 + -0.0478183,
- 7 + 0.791332,
- -5 + -0.235768,
- 3 + 0.292966,
- -3 + 0.414722,
- 3 + -0.665212,
- 5 + -0.710929,
- -3 + -0.588074,
- -3 + 0.331691,
- 7 + 0.882629,
- 3 + -0.550038,
- 1 + -0.957022,
- -5 + 0.990136,
- 5 + -0.558498,
- -3 + -0.842342,
- -1 + 0.000248163,
- -5 + 0.131952,
- 7 + -0.167911,
- 1 + -0.425364,
- 7 + -0.372087,
- 1 + 0.526899,
- -1 + -0.638801,
- -5 + -0.386877,
- 7 + 0.871863,
- -7 + 0.459965,
- 5 + -0.165079,
- 5 + 0.296509,
- -3 + 0.833452,
- -7 + 0.744527,
- -3 + 0.626609,
- 1 + -0.814472,
- 3 + 0.998261,
- -7 + 0.270782,
- 1 + -0.904688,
- -5 + 0.723069,
- -1 + -0.664172,
- -5 + -0.019654,
- -1 + 0.757106,
- 7 + 0.780875,
- 1 + -0.898937,
- 3 + -0.485577,
- -3 + -0.140519,
- -3 + -0.240458,
- -1 + 0.353802,
- -7 + -0.918099,
- 3 + -0.32276,
- 3 + 0.672086,
- -3 + -0.335273,
- 1 + -0.999146,
- -1 + -0.630338,
- 7 + -0.544571,
- -7 + 0.470793,
- -3 + -0.581126,
- -1 + 0.135819,
- -1 + 0.0451301,
- 5 + 0.479837,
- -3 + 0.172697,
- 5 + 0.796663,
- -1 + -0.566894,
- 1 + 0.470888,
- 3 + 0.0653015,
- -7 + 0.792323,
- 1 + -0.867727,
- -3 + 0.829587,
- -3 + -0.740408,
- 3 + -0.830687,
- 3 + 0.957641,
- -7 + -0.423364,
- 3 + -0.893497,
- 1 + -0.853771,
- -3 + 0.92187,
- 1 + -0.929865,
- -3 + 0.198643,
- 7 + 0.961747,
- -1 + -0.431994,
- 7 + 0.35683,
- -1 + -0.871135,
- 7 + 0.727451,
- 7 + 0.458093,
- -3 + 0.22682,
- -3 + -0.827643,
- -3 + -0.189953,
- 5 + -0.688236,
- -3 + -0.294562,
- 5 + -0.903106,
- -5 + 0.444196,
- -1 + 0.2121,
- -5 + -0.214493,
- -5 + -0.392994,
- -3 + 0.665017,
- 1 + 0.269187,
- 7 + -0.745741,
- 1 + -0.185388,
- -5 + -0.795616,
- -5 + -0.989525,
- -5 + -0.0291574,
- 7 + 0.577641,
- 3 + -0.98546,
- 5 + 0.696809,
- -5 + 0.649647,
- 3 + -0.401609,
- -7 + 0.29181,
- -1 + -0.336865,
- 3 + -0.279985,
- -7 + 0.819639,
- 1 + -0.69903,
- 5 + -0.956345,
- -3 + 0.917636,
- 3 + -0.539845,
- 3 + -0.58337,
- 5 + 0.0319712,
- 3 + -0.682523,
- 3 + -0.160175,
- 1 + -0.707552,
- 3 + -0.197245,
- -1 + 0.583643,
- -7 + 0.128135,
- 3 + 0.240791,
- -7 + -0.289134,
- -7 + 0.955084,
- -5 + 0.495007,
- -1 + 0.955188,
- 3 + 0.523281,
- -1 + 0.468672,
- -5 + -0.467838,
- -3 + 0.654833,
- -5 + 0.85963,
- -3 + 0.532693,
- -3 + -0.11304,
- 5 + 0.947132,
- 5 + 0.395143,
- 1 + -0.114501,
- -5 + 0.275912,
- -7 + -0.816982,
- -3 + 0.280537,
- 1 + -0.290476,
- 3 + 0.753207,
- 3 + -0.37078,
- -5 + -0.73641,
- 1 + 0.720629,
- -1 + 0.61751,
- 5 + -0.114619,
- 3 + -0.509509,
- 1 + 0.349672,
- 7 + 0.426544,
- -5 + -0.567438,
- -7 + -0.52387,
- 3 + -0.376306,
- 3 + -0.49252,
- 5 + 0.441628,
- 3 + 0.703002,
- -7 + 0.62187,
- 3 + 0.754402,
- -1 + -0.344451,
- 5 + -0.0148834,
- -7 + 0.449515,
- 5 + 0.230859,
- 1 + 0.724024,
- 5 + 0.190704,
- 1 + -0.69348,
- -5 + 0.586233,
- 5 + 0.0794267,
- -5 + -0.631736,
- 1 + 0.105417,
- -5 + 0.136263,
- 7 + -0.642064,
- 1 + 0.0430542,
- -7 + -0.41497,
- 5 + 0.775936,
- -1 + 0.687085,
- -5 + 0.925474,
- -5 + 0.0990985,
- 3 + -0.277763,
- -1 + 0.299999,
- 3 + 0.392572,
- -7 + -0.546367,
- 7 + 0.403084,
- 5 + -0.0418944,
- -7 + 0.446579,
- -7 + 0.372017,
- -1 + 0.459786,
- 7 + -0.0032825,
- 5 + 0.189248,
- 5 + -0.155126,
- 3 + 0.53685,
- 3 + 0.933272,
- 3 + -0.384181,
- 5 + 0.204225,
- 1 + -0.327539,
- -7 + 0.348723,
- 1 + -0.685387,
- -7 + -0.750799,
- -1 + -0.627168,
- -7 + 0.610837,
- 5 + -0.957175,
- -3 + 0.834856,
- -1 + 0.528653,
- 7 + -0.780567,
- 7 + 0.0884855,
- 3 + 0.648985,
- -1 + 0.218943,
- -7 + 0.832075,
- 5 + 0.811807,
- -3 + -0.685713,
- -3 + -0.296578,
- 3 + 0.000125931,
- -5 + -0.996983,
- -5 + -0.193044,
- 5 + -0.0545228,
- 1 + 0.893854,
- 5 + 0.97836,
- -3 + -0.748222,
- -1 + 0.196022,
- 1 + 0.163083,
- -5 + -0.180233,
- -1 + 0.209452,
- -3 + 0.744591,
- -3 + -0.1817,
- 1 + -0.447565,
- 5 + 0.528624,
- -7 + -0.692082,
- 7 + -0.428345,
- -7 + 0.0934917,
- 1 + 0.678237,
- -7 + -0.298993,
- -3 + 0.654322,
- -3 + -0.942614,
- 7 + 0.783697,
- 3 + 0.395035,
- 1 + -0.372332,
- 3 + -0.859733,
- 1 + 0.4468,
- 5 + 0.822121,
- -5 + 0.201003,
- -7 + -0.74061,
- 5 + -0.568736,
- 3 + 0.904994,
- -5 + 0.325172,
- 5 + 0.292775,
- 5 + 0.511914,
- -7 + 0.675604,
- 5 + 0.907106,
- -7 + 0.676053,
- -3 + -0.64883,
- -1 + -0.451512,
- 3 + -0.841985,
- -7 + 0.0817016,
- -1 + 0.111568,
- -7 + -0.594469,
- -3 + -0.844349,
- 3 + -0.26745,
- -3 + -0.559703,
- 7 + 0.53067,
- 3 + -0.256771,
- -1 + -0.170001,
- -1 + -0.775529,
- -1 + -0.456536,
- 3 + -0.998071,
- 1 + 0.941052,
- 7 + 0.130878,
- 7 + 0.838738,
- 1 + 0.856186,
- 1 + 0.846151,
- -1 + -0.737487,
- 3 + -0.76553,
- -3 + 0.222,
- -1 + -0.387758,
- 7 + -0.269319,
- -3 + 0.0668951,
- 3 + 0.731949,
- 5 + -0.741075,
- -7 + -0.219907,
- 3 + 0.487581,
- 1 + -0.973969,
- 7 + 0.639967,
- 3 + 0.809232,
- 3 + -0.642748,
- 5 + -0.453162,
- -7 + -0.474022,
- -3 + -0.631836,
- -3 + 0.0981818,
- 7 + 0.684498,
- -1 + -0.654845,
- -5 + -0.612608,
- 7 + 0.610862,
- -3 + -0.369351,
- 3 + -0.261936,
- 7 + -0.814926,
- 7 + 0.390131,
- -5 + 0.531136,
- 3 + 0.974289,
- -3 + -0.111925,
- 3 + 0.376471,
- -3 + -0.941562,
- 7 + -0.410982,
- -7 + 0.875953,
- 5 + -0.448872,
- -1 + -0.806028,
- -1 + -0.814961,
- 5 + 0.395374,
- -7 + 0.814904,
- 1 + 0.383855,
- 1 + -0.252184,
- 3 + 0.524843,
- -7 + -0.233859,
- -7 + 0.764495,
- -7 + 0.817705,
- -5 + 0.641853,
- -3 + -0.758414,
- -1 + -0.260464,
- -7 + -0.240351,
- -3 + 0.0476139,
- -1 + -0.220685,
- -1 + -0.993293,
- 7 + 0.627481,
- -3 + -0.950516,
- -5 + -0.0848613,
- 5 + 0.670037,
- 7 + 0.825011,
- -7 + 0.111405,
- 7 + 0.0703245,
- -3 + 0.177663,
- 7 + -0.739343,
- 3 + -0.673892,
- 7 + -0.947279,
- -5 + 0.732764,
- 7 + -0.807932,
- 1 + -0.494108,
- 1 + 0.611574,
- -1 + 0.205265,
- -1 + -0.485118,
- -5 + 0.0552847,
- -5 + -0.176059,
- 5 + 0.00244508,
- 7 + -0.773636,
- 5 + 0.951496,
- -7 + 0.525518,
- -5 + 0.968101,
- -7 + 0.10137,
- 5 + -0.4487,
- 7 + 0.215142,
- -5 + -0.162651,
- 5 + -0.520808,
- 1 + -0.89087,
- -1 + -0.804296,
- 7 + -0.341382,
- -7 + 0.793131,
- 5 + -0.724335,
- 7 + 0.0832606,
- 3 + -0.819473,
- 7 + -0.613928,
- -1 + -0.975915,
- 7 + 0.555494,
- -1 + -0.753698,
- 1 + -0.570132,
- -5 + -0.00221921,
- 1 + 0.010534,
- -5 + -0.825051,
- -5 + 0.528378,
- 3 + 0.559274,
- -5 + 0.826081,
- 7 + -0.349553,
- 3 + 0.36511,
- -5 + -0.881283,
- 1 + 0.833997,
- 1 + 0.00815386,
- -3 + -0.820684,
- 1 + 0.952573,
- -5 + 0.378794,
- -5 + 0.465909,
- 1 + -0.166333,
- 1 + 0.0746185,
- -1 + 0.431021,
- 5 + 0.266922,
- -1 + 0.339902,
- -1 + 0.372874,
- 7 + -0.0149696,
- -1 + 0.0317811,
- 7 + -0.691387,
- -1 + 0.929823,
- 5 + -0.295751,
- 7 + -0.851862,
- -1 + 0.33382,
- 7 + -0.589562,
- -7 + -0.217095,
- -7 + 0.115214,
- -7 + 0.220949,
- 1 + 0.800567,
- 3 + -0.251049,
- -5 + -0.626753,
- 7 + -0.450723,
- 7 + 0.22979,
- -3 + -0.342451,
- -3 + 0.997709,
- -1 + 0.582385,
- -5 + 0.191317,
- 7 + -0.873862,
- 5 + 0.213097,
- 7 + -0.762892,
- 7 + 0.954305,
- 7 + 0.188828,
- 7 + 0.931783,
- -7 + -0.839115,
- 5 + -0.738813,
- 3 + 0.926841,
- 5 + 0.399905,
- -7 + 0.0123429,
- -5 + 0.545699,
- 3 + -0.661568,
- 3 + -0.261673,
- -5 + -0.81428,
- 7 + 0.866628,
- 5 + -0.048188,
- -3 + 0.165017,
- 7 + -0.698899,
- -7 + 0.0783355,
- -7 + 0.693822,
- 7 + 0.726706,
- -1 + 0.148921,
- 7 + -0.685703,
- 3 + 0.548864,
- -7 + -0.878148,
- 3 + 0.205964,
- 5 + -0.271077,
- -7 + -0.15239,
- 1 + -0.949635,
- -1 + 0.961041,
- -7 + 0.0868696,
- 3 + -0.361298,
- 3 + 0.624626,
- 3 + -0.0838945,
- 5 + 0.132301,
- -1 + 0.192646,
- -5 + -0.579731,
- -5 + -0.101051,
- 5 + 0.870131,
- 1 + 0.535988,
- 5 + 0.255953,
- 1 + 0.314134,
- -7 + 0.762894,
- -7 + 0.127185,
- 7 + -0.222042,
- -5 + -0.529038,
- -3 + 0.231572,
- 1 + 0.788721,
- 5 + -0.891869,
- -5 + -0.472732,
- 3 + -0.0128941,
- 1 + -0.623197,
- 7 + -0.490687,
- -1 + -0.441505,
- 1 + -0.0410075,
- -5 + 0.847264,
- -7 + -0.371955,
- -1 + 0.41401,
- -1 + -0.742,
- 3 + 0.0546079,
- 5 + -0.529726,
- 7 + -0.0630406,
- 1 + 0.196568,
- -3 + 0.488722,
- -5 + -0.357116,
- 3 + -0.179397,
- -3 + 0.358234,
- -7 + 0.821111,
- 7 + -0.634397,
- 5 + -0.490498,
- -5 + -0.103393,
- -7 + -0.996996,
- -5 + 0.358586,
- -7 + 0.785637,
- -5 + 0.46574,
- -1 + -0.714036,
- 7 + 0.73281,
- -1 + -0.980125,
- -5 + 0.152175,
- -1 + -0.468575,
- -1 + -0.154831,
- 5 + -0.257122,
- 3 + -0.414745,
- 3 + 0.663051,
- -3 + 0.787162,
- -1 + 0.773088,
- 5 + -0.0174988,
- 7 + 0.348241,
- 1 + 0.856018,
- -7 + -0.177525,
- 1 + 0.409387,
- 3 + 0.0205055,
- -3 + 0.212273,
- 7 + -0.35314,
- -1 + 0.253691,
- -7 + 0.988757,
- 1 + 0.915514,
- 7 + -0.0632796,
- -3 + -0.0794022,
- 5 + 0.905145,
- 3 + -0.678132,
- 7 + 0.842035,
- -1 + 0.189324,
- -1 + 0.431813,
- 5 + 0.855323,
- 3 + -0.285528,
- -3 + -0.740299,
- 3 + 0.526598,
- -3 + -0.807057,
- -3 + -0.907001,
- -1 + 0.673215,
- 1 + -0.806326,
- -7 + -0.0179321,
- 7 + 0.0822508,
- -1 + 0.850969,
- 5 + 0.18839,
- 3 + -0.692543,
- -5 + 0.064437,
- -7 + -0.112983,
- -3 + -0.0709171,
- -5 + 0.327346,
- 1 + -0.595314,
- -1 + 0.878245,
- 1 + 0.291632,
- -1 + -0.922109,
- -3 + -0.872261,
- -7 + -0.212876,
- 1 + -0.348517,
- 5 + -0.24286,
- 3 + 0.777443,
- 5 + 0.00615786,
- 5 + 0.834023,
- 1 + -0.590069,
- -7 + 0.653321,
- 1 + -0.234737,
- -7 + 0.664936,
- 7 + 0.411378,
- -7 + -0.88205,
- -1 + -0.855369,
- 1 + 0.377919,
- -7 + -0.456485,
- -5 + -0.949986,
- -5 + -0.0158651,
- 3 + 0.535672,
- -1 + -0.687636,
- 1 + 0.736756,
- 7 + -0.696999,
- 1 + 0.847792,
- -3 + -0.349274,
- 1 + -0.544481,
- 7 + 0.608189,
- -7 + 0.608384,
- 5 + -0.323123,
- 7 + -0.947181,
- 5 + 0.753829,
- 5 + -0.573138,
- 5 + -0.485321,
- -5 + 0.480423,
- -5 + -0.371829,
- 5 + -0.853753,
- -7 + 0.878959,
- -7 + 0.0642654,
- 1 + 0.680307,
- 1 + 0.291632,
- 7 + -0.853807,
- 5 + 0.644158,
- 5 + -0.355364,
- 1 + 0.190966,
- 3 + -0.294411,
- -7 + -0.67303,
- -5 + -0.965702,
- -3 + 0.55212,
- 1 + -0.804562,
- -7 + -0.494127,
- -5 + -0.983771,
- 1 + -0.133138,
- -1 + -0.607814,
- 1 + -0.742387,
- -5 + -0.411707,
- -3 + -0.816862,
- 7 + 0.426785,
- 5 + -0.089001,
- 3 + -0.966127,
- 3 + -0.784032,
- 5 + -0.356036,
- 5 + 0.475987,
- 1 + 0.970457,
- -3 + 0.678356,
- 1 + -0.430618,
- 5 + 0.942241,
- -3 + -0.913966,
- 7 + -0.730373,
- -3 + 0.640682,
- 7 + -0.024488,
- -5 + 0.462632,
- -3 + -0.609614,
- -1 + -0.482857,
- -5 + 0.535506,
- 7 + 0.821051,
- -1 + 0.793945,
- 3 + -0.0835013,
- -5 + -0.393026,
- 1 + -0.415528,
- -5 + 0.182819,
- 1 + -0.561988,
- -5 + -0.417262,
- 7 + 0.708211,
- 1 + -0.207354,
- -5 + -0.844518,
- -7 + 0.604461,
- 7 + 0.787027,
- 7 + 0.763122,
- 1 + 0.300372,
- -3 + -0.0203687,
- -7 + -0.500432,
- 7 + -0.5601,
- 5 + -0.682225,
- -5 + -0.547398,
- -3 + 0.769381,
- -3 + 0.750163,
- -5 + -0.820679,
- 3 + 0.236003,
- 1 + -0.316465,
- -3 + 0.802262,
- 3 + -0.399964,
- 5 + -0.166494,
- 1 + 0.776745,
- 5 + 0.716541,
- 7 + -0.251088,
- -5 + -0.42548,
- -3 + -0.761153,
- 7 + -0.0766243,
- 3 + -0.180629,
- 5 + -0.166458,
- -5 + -0.833394,
- -7 + 0.0297446,
- -7 + -0.362676,
- 7 + -0.644897,
- -7 + 0.283366,
- 5 + -0.665628,
- 3 + -0.488068,
- -1 + -0.902438,
- -5 + -0.355751,
- 3 + -0.419479,
- 7 + -0.370073,
- -3 + 0.480753,
- 1 + -0.420338,
- -7 + -0.24157,
- 7 + 0.207747,
- -1 + -0.777488,
- 5 + 0.341417,
- -1 + -0.33618,
- -5 + 0.598459,
- -3 + -0.280681,
- 1 + -0.0398586,
- 7 + 0.717195,
- 5 + 0.431427,
- -5 + -0.839676,
- -1 + -0.74745,
- 1 + 0.73193,
- -1 + 0.729311,
- 5 + 0.561066,
- -5 + -0.670177,
- -1 + -0.254041,
- 3 + 0.0451663,
- -7 + -0.160697,
- 7 + 0.13319,
- -3 + 0.360953,
- -3 + 0.264897,
- 1 + -0.566809,
- -5 + 0.291045,
- 1 + -0.573798,
- -3 + 0.854987,
- -3 + -0.973763,
- -7 + -0.958898,
- 1 + -0.945093,
- -1 + -0.72672,
- 5 + 0.814473,
- 7 + -0.794704,
- -3 + 0.229887,
- -1 + 0.801239,
- -5 + 0.531782,
- -1 + 0.247072,
- 1 + -0.179189,
- -3 + 0.401884,
- 7 + 0.236019,
- -1 + 0.725281,
- -5 + 0.74655,
- 5 + -0.427725,
- -1 + 0.967868,
- -7 + -0.432802,
- -1 + 0.541378,
- 7 + -0.555299,
- -3 + 0.166895,
- -7 + 0.921733,
- -3 + 0.840396,
- -5 + -0.602658,
- -1 + -0.189227,
- -5 + 0.605957,
- 5 + -0.525512,
- 5 + 0.433278,
- -1 + 0.554043,
- -1 + 0.353735,
- 3 + -0.493134,
- -7 + 0.86014,
- -3 + 0.543759,
- -1 + 0.248284,
- -5 + -0.502769,
- 5 + -0.984136,
- 5 + 0.407552,
- -1 + 0.869081,
- -3 + -0.7676,
- -1 + 0.940972,
- 1 + -0.511719,
- 7 + 0.870979,
- 3 + -0.0582847,
- 7 + -0.628254,
- 7 + -0.780393,
- 3 + -0.227097,
- 1 + -0.738505,
- 1 + 0.364707,
- 1 + -0.522339,
- -3 + -0.123359,
- -5 + 0.911237,
- 7 + -0.856169,
- -5 + 0.878138,
- 1 + -0.761068,
- 3 + 0.341228,
- 7 + 0.0689835,
- 3 + -0.15808,
- 7 + -0.138551,
- 3 + 0.368672,
- 5 + -0.617489,
- 1 + 0.404668,
- -7 + -0.699522,
- 5 + -0.997434,
- 5 + 0.36597,
- 5 + 0.785275,
- 3 + -0.231849,
- 3 + -0.0999933,
- 1 + -0.109,
- 3 + -0.686237,
- 1 + -0.902631,
- -7 + 0.51259,
- -5 + 0.0942837,
- 1 + 0.708383,
- -3 + -0.861124,
- -3 + -0.179481,
- -3 + 0.779682,
- 1 + -0.493657,
- 1 + -0.418592,
- -1 + 0.856146,
- 3 + -0.0875076,
- 7 + -0.483033,
- -1 + 0.646554,
- -1 + 0.974864,
- -3 + -0.841565,
- -7 + 0.228352,
- -1 + -0.0205758,
- 7 + -0.359954,
- 7 + 0.314803,
- 1 + -0.357785,
- 7 + 0.751935,
- 1 + 0.215695,
- 5 + -0.190122,
- -7 + 0.428353,
- -1 + -0.890184,
- 7 + 0.122886,
- 1 + -0.557184,
- 5 + -0.556109,
- 7 + 0.828952,
- -5 + -0.989435,
- 7 + 0.830655,
- -3 + -0.217279,
- -1 + -0.835888,
- -1 + 0.254548,
- 5 + 0.523081,
- 3 + 0.584681,
- 1 + -0.0839997,
- 5 + -0.186458,
- 1 + 0.0540011,
- -1 + 0.274899,
- -7 + 0.116505,
- 3 + 0.723544,
- 5 + 0.136319,
- 7 + -0.419947,
- 5 + 0.476982,
- 3 + 0.243726,
- 3 + 0.0739162,
- -3 + -0.028526,
- -1 + -0.915011,
- -7 + 0.764662,
- 5 + -0.449836,
- -1 + 0.54113,
- -5 + 0.435229,
- 3 + 0.0290581,
- -7 + -0.416793,
- 7 + 0.733392,
- 1 + -0.222058,
- -1 + -0.70491,
- 1 + -0.738726,
- 5 + 0.467214,
- -5 + -0.820001,
- 5 + -0.100838,
- 3 + -0.867579,
- -3 + 0.682739,
- 5 + -0.418042,
- -1 + 0.451298,
- 5 + 0.494458,
- 1 + -0.849409,
- 1 + -0.69703,
- 1 + 0.852578,
- -1 + -0.781506,
- -1 + 0.477606,
- 3 + -0.215093,
- -1 + 0.741802,
- -7 + 0.574622,
- 5 + 0.855315,
- 5 + 0.655386,
- 1 + -0.0553299,
- -1 + -0.801709,
- -1 + 0.610893,
- 1 + -0.996069,
- -1 + -0.632696,
- 7 + 0.337866,
- -5 + -0.444426,
- 7 + 0.557502,
- 3 + 0.171951,
- 7 + 0.0341445,
- 3 + 0.332677,
- 3 + 0.169284,
- 3 + -0.273138,
- -5 + 0.31627,
- -1 + -0.456444,
- 5 + -0.892569,
- 3 + 0.936689,
- 5 + -0.406369,
- -5 + 0.589934,
- -3 + -0.20777,
- -1 + 0.757187,
- -5 + 0.629676,
- 5 + 0.365524,
- 5 + 0.289739,
- -7 + -0.182101,
- -1 + 0.784527,
- -3 + 0.382947,
- 3 + -0.380673,
- 3 + -0.748491,
- 1 + 0.642036,
- -1 + 0.423028,
- -3 + -0.740949,
- -7 + 0.0430477,
- -5 + 0.916659,
- 1 + -0.858744,
- 1 + 0.354461,
- -5 + 0.197777,
- 1 + 0.132034,
- 5 + -0.935967,
- -7 + 0.920792,
- 3 + -0.456423,
- 1 + -0.288826,
- 1 + -0.600615,
- 7 + -0.975289,
- -5 + -0.259924,
- -1 + -0.640925,
- -3 + 0.531508,
- 1 + 0.560676,
- 1 + -0.36099,
- -5 + 0.122059,
- -5 + -0.701523,
- 3 + -0.620508,
- 3 + -0.918876,
- 5 + -0.716268,
- 7 + -0.885677,
- 7 + -0.812334,
- 5 + -0.427292,
- -7 + -0.543744,
- 3 + -0.917745,
- 1 + 0.285421,
- 7 + -0.938258,
- -3 + 0.845977,
- 5 + -0.817096,
- -3 + -0.81931,
- 7 + 0.384529,
- -5 + 0.923807,
- -5 + -0.835286,
- -3 + 0.495043,
- -7 + 0.610036,
- 3 + 0.691557,
- 1 + 0.262664,
- -7 + 0.312157,
- -5 + -0.629477,
- -7 + -0.396994,
- 5 + -0.749666,
- -3 + -0.693143,
- 5 + 0.427751,
- 1 + 0.18179,
- -5 + 0.994096,
- 5 + -0.868472,
- -3 + -0.000652722,
- 5 + -0.826959,
- 7 + 0.810413,
- -7 + 0.624387,
- 3 + -0.0808038,
- -3 + 0.766962,
- 7 + -0.576073,
- -1 + 0.549271,
- -7 + -0.831344,
- 7 + -0.693934,
- -1 + 0.494453,
- -1 + 0.201426,
- 7 + 0.722833,
- 5 + -0.156928,
- -5 + 0.470001,
- 5 + 0.928162,
- 3 + 0.282769,
- -1 + 0.914984,
- 7 + 0.453746,
- 7 + 0.641607,
- -7 + -0.00260904,
- -5 + -0.1964,
- -3 + 0.251894,
- 7 + 0.528101,
- 3 + 0.110567,
- 3 + 0.589285,
- 3 + -0.820993,
- -1 + 0.933257,
- 3 + 0.400226,
- 3 + 0.307276,
- 5 + -0.485213,
- -7 + 0.442066,
- 1 + -0.967156,
- 3 + 0.725474,
- 1 + -0.699786,
- -7 + 0.506006,
- 7 + 0.513752,
- -3 + -0.55039,
- -5 + 0.997721,
- -1 + 0.875475,
- 3 + 0.935239,
- -5 + 0.114364,
- 1 + -0.956559,
- 7 + -0.360408,
- 1 + 0.198951,
- -1 + -0.202082,
- 5 + 0.6909,
- -1 + 0.530785,
- -7 + 0.117763,
- 1 + -0.671653,
- -1 + -0.301334,
- -3 + -0.0852486,
- -5 + 0.24372,
- 7 + -0.937574,
- -3 + 0.970979,
- -5 + -0.307326,
- -3 + 0.755383,
- -7 + -0.0614709,
- 7 + -0.354787,
- 3 + -0.195025,
- 7 + -0.294593,
- 1 + 0.679208,
- 5 + 0.876946,
- 1 + 0.896838,
- -1 + 0.343962,
- -7 + -0.0557097,
- 3 + 0.335734,
- -1 + 0.00658689,
- 7 + -0.707898,
- -1 + 0.355665,
- -1 + -0.598976,
- -5 + -0.591982,
- 7 + -0.485165,
- 1 + -0.624015,
- -3 + -0.545053,
- -3 + -0.584821,
- 1 + -0.748295,
- -1 + 0.603633,
- 5 + -0.281878,
- -3 + 0.887608,
- -5 + -0.701604,
- 3 + 0.583568,
- -7 + -0.987855,
- 7 + 0.0166069,
- -3 + 0.156798,
- -7 + 0.693214,
- 7 + 0.197865,
- 7 + 0.461644,
- 7 + -0.751676,
- -1 + 0.989154,
- -3 + -0.828416,
- 5 + 0.478627,
- -5 + -0.225786,
- 3 + 0.146553,
- 3 + 0.242108,
- 1 + -0.991743,
- 5 + -0.23658,
- 1 + 0.712781,
- -1 + -0.320432,
- -1 + -0.272036,
- 3 + 0.601587,
- 5 + -0.176224,
- 7 + -0.599448,
- -5 + 0.821199,
- -5 + -0.650962,
- -5 + 0.54749,
- -7 + 0.846249,
- -5 + 0.895817,
- 3 + -0.368985,
- 1 + -0.479081,
- -3 + 0.780251,
- -3 + 0.30783,
- -5 + -0.0721856,
- -7 + -0.0359803,
- 3 + -0.559485,
- 1 + 0.296459,
- 7 + 0.19517,
- -5 + -0.686891,
- 3 + 0.126611,
- 5 + -0.0218955,
- 5 + -0.0897653,
- 5 + -0.476869,
- 5 + -0.36738,
- 1 + -0.905938,
- -5 + 0.769578,
- -7 + -0.911913,
- -5 + 0.243897,
- 3 + 0.688956,
- 5 + 0.278523,
- -5 + 0.119666,
- 5 + -0.0967183,
- -7 + -0.925501,
- 1 + -0.609733,
- -1 + 0.538315,
- 3 + -0.49403,
- -7 + 0.00403903,
- -1 + 0.422778,
- 1 + -0.676254,
- -5 + -0.495082,
- -3 + 0.887213,
- -7 + -0.210539,
- -5 + 0.802399,
- -3 + -0.205944,
- 5 + -0.684772,
- -7 + 0.844196,
- -5 + -0.69577,
- 5 + -0.822575,
- -7 + -0.158769,
- 5 + 0.942987,
- -7 + -0.739025,
- 3 + 0.791325,
- 1 + -0.931093,
- -7 + -0.8201,
- 3 + -0.732275,
- -1 + 0.945871,
- 3 + -0.891814,
- -7 + 0.0258538,
- 3 + 0.892123,
- 1 + -0.880949,
- -3 + -0.633805,
- -3 + -0.709181,
- -3 + -0.383623,
- 3 + -0.150093,
- -7 + -0.117931,
- 1 + -0.307017,
- 3 + 0.380702,
- -5 + -0.594801,
- 5 + -0.43212,
- 5 + 0.920089,
- 7 + -0.804395,
- 1 + -0.918654,
- -1 + -0.904769,
- 7 + -0.78175,
- 7 + 0.322011,
- 3 + -0.294538,
- -7 + 0.930585,
- 1 + -0.477718,
- -5 + -0.989844,
- -1 + 0.902946,
- -7 + -0.350604,
- 7 + 0.126035,
- -7 + -0.920143,
- -7 + 0.851657,
- 3 + -0.136341,
- 3 + 0.593154,
- -5 + -0.803969,
- -5 + 0.503475,
- 5 + 0.0188022,
- 5 + 0.631931,
- 7 + 0.91577,
- -7 + -0.549304,
- 1 + -0.723671,
- -1 + -0.305956,
- -5 + 0.74761,
- -3 + 0.355676,
- -1 + 0.855675,
- 3 + 0.613764,
- 7 + 0.700543,
- -5 + -0.132191,
- -1 + -0.0646009,
- -5 + 0.590769,
- -3 + -0.49326,
- -1 + 0.216807,
- -3 + -0.946063,
- 1 + 0.186966,
- -7 + 0.790963,
- -1 + 0.45715,
- 1 + 0.743977,
- -5 + -0.136574,
- -3 + -0.888679,
- -5 + -0.732167,
- 7 + -0.397459,
- -7 + -0.0469681,
- -7 + 0.615953,
- -5 + 0.439568,
- 3 + 0.273846,
- 7 + 0.314949,
- 3 + 0.911291,
- -5 + -0.453662,
- 3 + 0.80863,
- 3 + -0.0106643,
- 5 + 0.607597,
- 7 + 0.356758,
- 1 + -0.6931,
- -5 + 0.371134,
- -3 + -0.711628,
- 7 + 0.944743,
- -7 + 0.202408,
- -1 + 0.728236,
- -3 + 0.684351,
- 3 + -0.40255,
- 1 + -0.186503,
- -1 + 0.0150248,
- 3 + 0.185297,
- -7 + 0.36002,
- 3 + 0.750152,
- 5 + -0.381467,
- 7 + 0.334737,
- -3 + 0.0568684,
- 3 + -0.567396,
- 5 + -0.995164,
- 1 + 0.602424,
- 7 + 0.0454783,
- 3 + 0.516061,
- 5 + -0.199994,
- 1 + 0.737877,
- 7 + 0.411311,
- 5 + -0.853456,
- 5 + -0.121685,
- 7 + -0.507778,
- -7 + 0.152738,
- -7 + 0.094981,
- 1 + -0.681713,
- 5 + 0.442789,
- 5 + 0.973592,
- 1 + -0.323444,
- 1 + 0.863931,
- -1 + 0.396984,
- 7 + 0.249854,
- 1 + 0.807021,
- 7 + 0.644638,
- -7 + -0.422386,
- 1 + 0.0698824,
- -1 + 0.24009,
- -3 + -0.406826,
- 3 + -0.997362,
- -7 + -0.410919,
- 3 + 0.0102449,
- 5 + -0.495212,
- 3 + 0.260833,
- -7 + -0.397034,
- 1 + -0.379961,
- 3 + 0.483326,
- 7 + -0.909255,
- -7 + 0.950334,
- -1 + -0.970264,
- -1 + 0.276129,
- -7 + -0.0553154,
- -7 + 0.322334,
- -3 + -0.902084,
- 7 + 0.29514,
- -5 + 0.864139,
- 3 + 0.925323,
- -3 + 0.338491,
- 3 + -0.0651398,
- 3 + 0.912289,
- -3 + 0.52022,
- -3 + -0.709139,
- 3 + -0.742856,
- 7 + 0.565104,
- 5 + 0.894589,
- 5 + -0.556394,
- -1 + -0.864631,
- -5 + 0.794986,
- -7 + -0.869075,
- 7 + 0.774674,
- 3 + 0.428512,
- -5 + 0.839244,
- -1 + 0.357717,
- -7 + 0.199788,
- -1 + -0.458671,
- 7 + 0.526558,
- -1 + -0.318607,
- -5 + 0.630471,
- -3 + -0.441537,
- -1 + -0.580994,
- -1 + 0.690485,
- 3 + -0.547178,
- 7 + 0.0732123,
- 7 + -0.552486,
- 3 + -0.133145,
- 5 + -0.933638,
- 1 + 0.255392,
- -3 + -0.280157,
- -5 + -0.150034,
- 5 + -0.122912,
- 5 + 0.941452,
- -3 + 0.188547,
- 3 + -0.211247,
- 7 + 0.946076,
- -3 + 0.92071,
- 1 + 0.972226,
- -5 + 0.852144,
- 3 + 0.377145,
- -1 + 0.413943,
- -7 + 0.439598,
- -5 + -0.13615,
- 5 + 0.171454,
- -5 + 0.845844,
- -7 + 0.783942,
- 3 + -0.618869,
- -7 + 0.760145,
- 5 + -0.0578561,
- -1 + -0.582842,
- 3 + -0.155049,
- 5 + -0.220217,
- 7 + -0.73738,
- 1 + -0.767926,
- -1 + -0.1484,
- 7 + 0.834785,
- 1 + 0.101825,
- -7 + -0.449194,
- 3 + 0.11657,
- -1 + 0.904672,
- -5 + 0.054498,
- 3 + 0.924094,
- -5 + -0.0965653,
- 1 + -0.613703,
- -7 + 0.4126,
- -3 + 0.584113,
- -7 + 0.159096,
- -5 + -0.485646,
- 3 + -0.0365765,
- -3 + -0.417187,
- 7 + 0.916336,
- -1 + 0.725319,
- 1 + 0.494014,
- -5 + -0.532621,
- -1 + 0.646111,
- -7 + -0.417253,
- -1 + -0.0992868,
- -1 + 0.654899,
- 3 + -0.444689,
- 3 + 0.800794,
- 1 + -0.112122,
- -1 + -0.712385,
- -3 + 0.166391,
- 5 + 0.314575,
- -5 + 0.950806,
- 3 + -0.44719,
- 1 + -0.175398,
- 5 + -0.225897,
- 3 + 0.258122,
- -1 + -0.571683,
- -3 + 0.745108,
- 7 + -0.489975,
- 3 + 0.869279,
- 3 + -0.536627,
- 5 + -0.828879,
- -7 + -0.62512,
- -7 + -0.456803,
- 7 + 0.142581,
- 7 + -0.220935,
- 7 + 0.012534,
- -5 + -0.681989,
- -7 + 0.622798,
- 1 + -0.557702,
- -3 + 0.482869,
- 5 + 0.197984,
- 3 + 0.934018,
- 7 + -0.094445,
- -7 + 0.325073,
- 7 + 0.917923,
- -7 + 0.17338,
- -5 + -0.354761,
- -5 + 0.71292,
- -1 + -0.877613,
- 7 + -0.857628,
- -7 + 0.5547,
- 5 + 0.819892,
- 5 + 0.550559,
- 3 + -0.0277248,
- 3 + 0.0711193,
- -3 + -0.0491096,
- -5 + -0.860672,
- 3 + -0.0807872,
- -5 + 0.651853,
- 7 + 0.104082,
- -7 + 0.236164,
- -1 + -0.330286,
- -7 + -0.480073,
- 3 + 0.406925,
- -5 + -0.518305,
- -1 + -0.605615,
- -1 + 0.381587,
- -1 + -0.11044,
- 3 + -0.160278,
- 1 + -0.304637,
- -1 + -0.527384,
- -7 + 0.882399,
- 3 + -0.777911,
- -7 + -0.0419154,
- 1 + -0.719173,
- -7 + 0.936713,
- -3 + -0.751213,
- -3 + 0.441754,
- 1 + -0.0637285,
- -1 + 0.375699,
- 7 + -0.153902,
- 7 + -0.792171,
- 5 + 0.655847,
- 7 + 0.882999,
- 5 + 0.0812634,
- 3 + 0.546496,
- -7 + -0.223494,
- -1 + -0.356427,
- 1 + 0.310918,
- -7 + 0.571231,
- -1 + 0.798337,
- -3 + 0.598408,
- -3 + 0.72025,
- 3 + 0.51356,
- -3 + -0.167374,
- 3 + 0.240713,
- 5 + 0.933577,
- 5 + 0.267443,
- -7 + 0.853163,
- 7 + 0.751923,
- 1 + -0.76546,
- 1 + -0.464537,
- -5 + -0.307334,
- 1 + 0.78241,
- -3 + -0.998566,
- -1 + 0.35207,
- -5 + 0.427847,
- -5 + 0.110459,
- 3 + 0.834955,
- -7 + 0.254993,
- 5 + 0.368997,
- 1 + 0.697111,
- 5 + 0.458215,
- 5 + 0.0957664,
- 7 + -0.97862,
- -7 + -0.615026,
- 3 + 0.859467,
- 5 + -0.306685,
- 1 + 0.305295,
- -5 + 0.093081,
- -3 + 0.673005,
- 1 + 0.985715,
- -5 + -0.944994,
- -5 + 0.817741,
- 7 + -0.898887,
- 7 + -0.742699,
- -7 + 0.298725,
- 5 + -0.180113,
- -7 + 0.18706,
- 1 + 0.185461,
- -1 + -0.522394,
- -1 + -0.117225,
- -7 + -0.143794,
- -3 + -0.273471,
- 1 + 0.139797,
- 5 + -0.265773,
- 3 + 0.427259,
- 3 + -0.869272,
- -5 + -0.144366,
- -1 + 0.337665,
- -1 + 0.171026,
- 5 + -0.79788,
- -5 + 0.192947,
- -5 + -0.311556,
- 5 + 0.785642,
- -1 + -0.505434,
- -1 + 0.233518,
- 1 + 0.420173,
- -1 + 0.163412,
- 7 + 0.605216,
- 1 + -0.593143,
- -1 + -0.957213,
- -1 + -0.515973,
- 1 + 0.525257,
- -5 + 0.446536,
- 1 + 0.486375,
- -3 + -0.5737,
- 3 + -0.217493,
- -1 + 0.517623,
- -7 + 0.920525,
- 5 + 0.365421,
- 5 + 0.00848039,
- -5 + 0.153402,
- 1 + 0.13929,
- 5 + 0.977456,
- -7 + 0.22807,
- -1 + -0.119464,
- -1 + -0.351284,
- -1 + -0.991155,
- 7 + 0.889795,
- -3 + 0.691846,
- 1 + -0.746596,
- -3 + 0.586713,
- 5 + 0.596188,
- -7 + -0.477961,
- 3 + -0.620132,
- 5 + -0.0775085,
- 1 + -0.165338,
- 5 + -0.211165,
- 7 + -0.0470844,
- 7 + -0.748061,
- -3 + -0.810057,
- 5 + -0.196284,
- -7 + 0.0831261,
- 7 + 0.823358,
- 3 + -0.628647,
- 7 + 0.576381,
- -3 + -0.347779,
- 7 + 0.223497,
- -7 + -0.526754,
- -7 + 0.806814,
- -7 + -0.725776,
- 5 + -0.793048,
- -3 + -0.678268,
- 7 + -0.718848,
- 1 + 0.914832,
- -5 + 0.808905,
- 5 + 0.664148,
- 3 + -0.151127,
- -3 + -0.289634,
- 7 + 0.276275,
- 5 + 0.0411116,
- -3 + 0.180697,
- 7 + -0.957571,
- 5 + -0.931349,
- 3 + 0.346197,
- 3 + 0.855933,
- 1 + -0.9529,
- -1 + -0.687524,
- 1 + 0.393423,
- 7 + 0.946512,
- -5 + 0.361563,
- 1 + 0.197133,
- -5 + 0.313557,
- 3 + -0.932788,
- 3 + -0.342819,
- 3 + 0.07439,
- -7 + 0.703045,
- -5 + -0.37896,
- 1 + -0.175719,
- 5 + 0.223835,
- 5 + -0.516742,
- -7 + 0.791386,
- -3 + 0.594912,
- 3 + 0.917958,
- -3 + -0.550284,
- 5 + 0.161439,
- -1 + 0.308031,
- -3 + 0.129603,
- -5 + -0.755601,
- -5 + -0.0725142,
- -3 + 0.900576,
- 5 + -0.0439364,
- 3 + -0.571107,
- -5 + -0.696274,
- -7 + -0.101347,
- 1 + 0.364593,
- -7 + -0.428825,
- -7 + 0.723648,
- -7 + -0.196055,
- 5 + -0.466505,
- -3 + 0.906948,
- 7 + 0.869376,
- -1 + 0.965839,
- 3 + -0.279962,
- 1 + 0.734883,
- 5 + 0.829225,
- -3 + 0.931521,
- 3 + 0.362365,
- -7 + 0.797885,
- -7 + 0.497423,
- 3 + 0.776487,
- 7 + 0.636682,
- 1 + 0.285877,
- 5 + 0.662518,
- 3 + -0.273415,
- -3 + -0.609258,
- 7 + -0.621225,
- 5 + 0.795938,
- -1 + 0.330694,
- -3 + 0.690014,
- 1 + -0.493836,
- -7 + 0.308625,
- -3 + -0.948984,
- -1 + -0.553156,
- 1 + -0.561592,
- 5 + 0.835248,
- 7 + -0.722998,
- -3 + -0.147382,
- 3 + -0.986829,
- 3 + -0.428939,
- 7 + -0.486681,
- -3 + -0.512164,
- -7 + -0.849359,
- 1 + 0.169338,
- -3 + 0.794093,
- 5 + -0.54137,
- 5 + -0.526859,
- -1 + 0.452928,
- 1 + -0.42493,
- -1 + 0.121008,
- 3 + 0.227603,
- -3 + -0.933629,
- -7 + -0.176661,
- 7 + -0.444884,
- 5 + 0.0810715,
- 5 + -0.139102,
- 7 + -0.726052,
- -3 + 0.342913,
- 3 + -0.586903,
- 7 + 0.619812,
- 7 + 0.513767,
- 3 + 0.179749,
- -5 + 0.28388,
- 5 + 0.494988,
- 7 + -0.697871,
- -1 + 0.320561,
- 3 + 0.336703,
- -5 + 0.277044,
- -5 + 0.637778,
- 3 + -0.778878,
- -7 + 0.563479,
- 5 + 0.933587,
- -1 + -0.0155785,
- 7 + 0.967945,
- 7 + -0.441443,
- -1 + 0.476776,
- -1 + 0.784109,
- 1 + 0.282272,
- -3 + 0.120237,
- 5 + 0.909491,
- 7 + 0.0166548,
- 1 + 0.0874624,
- 7 + -0.943263,
- -7 + 0.404136,
- -3 + -0.425458,
- 5 + -0.279096,
- -7 + 0.297659,
- -5 + -0.909941,
- -3 + 0.417617,
- 3 + 0.541595,
- 5 + 0.553146,
- -7 + -0.758788,
- -3 + 0.810651,
- 3 + 0.824127,
- 3 + -0.860216,
- 1 + -0.301784,
- -7 + 0.774392,
- -3 + -0.409294,
- -1 + -0.233762,
- 7 + -0.169785,
- -3 + 0.0785076,
- 5 + 0.612462,
- 3 + -0.436439,
- -7 + 0.879343,
- 1 + 0.639467,
- 1 + 0.052389,
- -5 + -0.0166562,
- -3 + 0.341038,
- 5 + -0.828713,
- 3 + 0.794875,
- -1 + 0.45125,
- -3 + 0.681263,
- -5 + 0.420113,
- -7 + -0.367513,
- -7 + 0.706676,
- -3 + -0.494458,
- -3 + -0.834332,
- -5 + -0.683485,
- -1 + -0.0354494,
- -5 + -0.604827,
- 3 + 0.413222,
- -3 + 0.275839,
- 1 + 0.456946,
- -7 + -0.171177,
- -7 + -0.518215,
- -7 + 0.0480101,
- 3 + -0.543404,
- 3 + 0.634555,
- 7 + 0.509344,
- 5 + 0.032606,
- -7 + 0.847702,
- -7 + -0.382019,
- 1 + -0.893403,
- -3 + 0.0839257,
- -5 + -0.605519,
- 5 + -0.398689,
- -1 + 0.777001,
- 1 + 0.557634,
- 5 + -0.203117,
- -7 + 0.388056,
- -1 + -0.841352,
- 5 + 0.571447,
- -1 + 0.540101,
- 7 + 0.707744,
- 3 + 0.0310338,
- -1 + -0.222217,
- -3 + 0.878539,
- 7 + 0.0656955,
- -1 + 0.579365,
- -7 + 0.77745,
- 5 + -0.330132,
- -1 + -0.181327,
- 5 + -0.936911,
- 7 + -0.28417,
- -1 + 0.184943,
- 3 + 0.470113,
- -3 + -0.668268,
- 3 + 0.443922,
- -7 + -0.254059,
- -5 + -0.998164,
- -7 + -0.293805,
- -7 + 0.0910158,
- 7 + 0.692813,
- -1 + -0.0799075,
- -7 + 0.721993,
- -1 + 0.385094,
- 5 + -0.00619203,
- 7 + 0.552784,
- 1 + -0.596967,
- -5 + -0.00704482,
- 1 + -0.110811,
- 3 + 0.121887,
- 3 + 0.674047,
- -3 + 0.170743,
- 3 + 0.760664,
- -3 + 0.42977,
- 1 + 0.315997,
- 5 + 0.154003,
- -3 + 0.369766,
- -3 + 0.646692,
- -3 + -0.0673465,
- 3 + -0.0560396,
- -7 + 0.138723,
- 7 + -0.0105182,
- -7 + -0.742613,
- -1 + -0.0661037,
- 3 + 0.00532501,
- 5 + -0.755478,
- -3 + 0.363332,
- -7 + -0.299669,
- -1 + 0.27668,
- 1 + -0.117032,
- -1 + -0.0241725,
- 3 + 0.0823766,
- -7 + -0.207114,
- 5 + -0.0581861,
- -5 + 0.689536,
- -5 + -0.206481,
- 3 + -0.457966,
- 7 + -0.489086,
- -5 + 0.467335,
- -3 + -0.360001,
- -1 + -0.138445,
- -7 + -0.914763,
- 7 + 0.588969,
- -5 + 0.283839,
- -7 + 0.959326,
- -7 + -0.67792,
- -7 + -0.334574,
- 7 + 0.370579,
- 7 + -0.171007,
- 3 + -0.868796,
- -3 + -0.319757,
- 3 + -0.879288,
- -3 + -0.435152,
- 1 + -0.700487,
- 5 + -0.313853,
- -5 + 0.0436639,
- -3 + -0.579779,
- -3 + -0.778584,
- -5 + -0.789192,
- -7 + -0.0165036,
- 5 + -0.746662,
- 3 + 0.423599,
- 1 + -0.896458,
- 1 + 0.884175,
- -7 + -0.861808,
- 1 + 0.0740701,
- -7 + 0.338526,
- 7 + 0.292062,
- 3 + 0.948647,
- 3 + -0.473585,
- 5 + -0.420246,
- 3 + -0.949748,
- -3 + -0.593698,
- -1 + -0.996076,
- 1 + -0.862255,
- 7 + 0.137548,
- -7 + -0.28388,
- 5 + 0.534124,
- 5 + 0.434866,
- 5 + 0.139012,
- 5 + -0.468484,
- -7 + 0.740186,
- -7 + -0.376626,
- -3 + -0.183861,
- -1 + 0.669948,
- 5 + 0.859722,
- 1 + -0.138174,
- -5 + -0.573832,
- 5 + -0.940617,
- 7 + -0.267174,
- 7 + -0.3461,
- -7 + -0.741914,
- -3 + -0.322358,
- -5 + 0.718059,
- -7 + -0.97611,
- -3 + 0.154576,
- -1 + -0.183644,
- 1 + -0.575116,
- -3 + 0.825954,
- 3 + -0.751385,
- 7 + -0.607166,
- -5 + -0.500472,
- 7 + 0.882115,
- -7 + 0.0493956,
- -5 + 0.362625,
- -3 + 0.492293,
- 5 + 0.389105,
- -5 + 0.800949,
- 1 + 0.94705,
- -7 + -0.377441,
- 7 + 0.351678,
- 7 + -0.44366,
- -1 + 0.320667,
- -1 + 0.752543,
- 1 + 0.969968,
- -7 + 0.0223379,
- 5 + -0.91498,
- -7 + -0.172866,
- -5 + -0.173087,
- 5 + 0.996417,
- -1 + -0.490241,
- -3 + 0.91821,
- 7 + -0.563976,
- 5 + -0.485962,
- -7 + 0.892581,
- -3 + -0.460805,
- 3 + 0.941525,
- 1 + -0.174042,
- -3 + 0.838862,
- -7 + -0.156077,
- -7 + 0.466488,
- 1 + -0.724364,
- 7 + 0.587571,
- 3 + -0.274185,
- 5 + -0.514854,
- -3 + 0.254629,
- 7 + -0.291446,
- 5 + -0.0912776,
- -3 + -0.54812,
- 5 + -0.0964439,
- -1 + -0.952324,
- -3 + 0.477252,
- -5 + -0.75421,
- -7 + -0.536212,
- 1 + 0.97589,
- 1 + -0.534707,
- 1 + -0.610279,
- -5 + -0.380512,
- 3 + -0.213305,
- 7 + 0.951862,
- 1 + 0.514467,
- 3 + -0.52728,
- 7 + -0.107415,
- -1 + 0.530744,
- -7 + -0.780547,
- -7 + 0.601507,
- -1 + -0.884028,
- -5 + 0.295033,
- 5 + 0.216542,
- -3 + 0.803556,
- -5 + 0.408551,
- -1 + 0.0640241,
- -7 + 0.337687,
- -3 + 0.973948,
- -7 + -0.112561,
- 3 + 0.497891,
- -1 + -0.360651,
- 1 + 0.429832,
- 3 + 0.599578,
- -7 + 0.62018,
- -5 + 0.00679079,
- -7 + 0.214149,
- 7 + 0.840447,
- -3 + -0.167543,
- 5 + 0.0564775,
- -7 + 0.824302,
- 3 + 0.0793194,
- 3 + 0.999321,
- -1 + -0.446545,
- -3 + 0.703463,
- 7 + 0.991686,
- -1 + -0.894842,
- -7 + -0.011711,
- 5 + 0.280148,
- -7 + 0.854388,
- -7 + -0.187445,
- -1 + 0.594443,
- -7 + 0.933654,
- 1 + 0.297684,
- 7 + 0.305794,
- 5 + -0.871352,
- -5 + -0.415714,
- -3 + -0.437484,
- -5 + 0.425868,
- 3 + 0.413091,
- -5 + 0.413299,
- 7 + -0.94675,
- 1 + 0.403995,
- 7 + 0.792962,
- -3 + -0.663822,
- -1 + 0.782255,
- 5 + 0.740358,
- 5 + 0.64335,
- -3 + -0.677456,
- -7 + 0.318753,
- 3 + 0.637624,
- 5 + 0.716802,
- -3 + 0.506525,
- -5 + -0.0154431,
- 5 + -0.413524,
- -3 + -0.97805,
- 3 + -0.715193,
- -1 + 0.855351,
- -3 + -0.547344,
- -1 + 0.707832,
- -7 + -0.100186,
- -3 + 0.1044,
- -1 + 0.834975,
- 5 + 0.950804,
- -3 + -0.146867,
- 7 + -0.922332,
- -5 + 0.361724,
- 1 + -0.376783,
- 1 + -0.979652,
- -3 + -0.860688,
- 7 + -0.0470151,
- 7 + -0.29374,
- 1 + -0.820914,
- -1 + -0.811114,
- 5 + -0.585238,
- 3 + 0.0997306,
- -5 + -0.789875,
- 5 + -0.240234,
- 5 + -0.795669,
- -3 + 0.834812,
- -5 + -0.0813862,
- 5 + -0.154017,
- -5 + 0.414384,
- 1 + 0.878358,
- -7 + -0.0818945,
- 3 + -0.239543,
- -3 + -0.203324,
- -3 + -0.921207,
- 5 + 0.69081,
- 1 + -0.727172,
- 1 + 0.287061,
- 3 + 0.216088,
- 1 + -0.47675,
- -1 + 0.679726,
- -1 + 0.147156,
- 3 + 0.785956,
- 5 + -0.0128753,
- -1 + -0.198679,
- 7 + 0.16421,
- -7 + -0.41241,
- -7 + 0.785757,
- 1 + 0.502945,
- -3 + -0.611199,
- 1 + 0.589565,
- -1 + -0.0650551,
- -5 + -0.575992,
- -3 + -0.744359,
- 5 + -0.856259,
- -1 + 0.95337,
- -7 + 0.285215,
- 3 + -0.692112,
- 1 + 0.427753,
- 5 + -0.771773,
- 1 + 0.469569,
- -1 + -0.428564,
- 7 + 0.465778,
- 7 + -0.468184,
- 7 + 0.958522,
- 1 + -0.129728,
- -7 + 0.48096,
- 7 + -0.127209,
- 7 + -0.725595,
- -5 + -0.100204,
- -3 + 0.231591,
- 7 + 0.54961,
- 5 + 0.714396,
- -5 + -0.891057,
- 7 + 0.0990063,
- 5 + -0.0485793,
- 5 + 0.350462,
- -7 + 0.683771,
- 1 + -0.69861,
- 1 + 0.0453779,
- -1 + -0.609794,
- 3 + -0.30366,
- -1 + -0.0804034,
- -1 + -0.119469,
- 3 + 0.0833771,
- -1 + 0.365207,
- -3 + 0.569098,
- 1 + 0.122556,
- -3 + 0.383273,
- -3 + 0.873332,
- 5 + -0.992991,
- -5 + -0.888515,
- 5 + 0.0792137,
- 7 + -0.949043,
- -5 + -0.311345,
- 1 + 0.129391,
- -7 + 0.514229,
- -7 + -0.889496,
- 1 + -0.188848,
- 5 + -0.47186,
- -5 + -0.0947434,
- -5 + -0.860318,
- -5 + 0.240262,
- 5 + -0.855161,
- -7 + -0.682376,
- 5 + -0.268279,
- -1 + 0.574063,
- -1 + -0.607989,
- 3 + 0.563884,
- -1 + -0.28172,
- 5 + 0.889506,
- 3 + 0.961434,
- 1 + 0.701135,
- -3 + -0.36667,
- -7 + -0.665516,
- 5 + -0.982884,
- -7 + -0.444751,
- -3 + -0.0457394,
- 1 + 0.686493,
- 3 + -0.763344,
- -3 + -0.969778,
- -5 + 0.557193,
- 3 + -0.70817,
- -3 + -0.0794386,
- 7 + -0.674222,
- 1 + 0.776054,
- 3 + 0.0315101,
- -5 + 0.629314,
- -3 + 0.0376186,
- -1 + 0.363226,
- 7 + -0.829763,
- 7 + -0.252856,
- 5 + -0.622667,
- 3 + -0.409799,
- 1 + 0.33154,
- 5 + 0.731536,
- 7 + 0.702268,
- 5 + 0.926338,
- 5 + 0.843521,
- -3 + -0.505366,
- 3 + 0.034738,
- 7 + 0.935227,
- 3 + -0.633068,
- 5 + 0.612473,
- 7 + -0.0785781,
- 7 + -0.209858,
- 3 + -0.519326,
- -1 + -0.900059,
- 5 + 0.167903,
- 7 + -0.237923,
- 1 + 0.568017,
- -3 + 0.338209,
- 1 + -0.262908,
- 1 + 0.0486361,
- 7 + 0.05413,
- 5 + -0.900298,
- -1 + 0.13673,
- 5 + 0.256166,
- 5 + 0.302061,
- -5 + 0.399097,
- 5 + -0.379186,
- -5 + 0.623826,
- 5 + -0.436995,
- 3 + 0.15716,
- -1 + -0.839201,
- -5 + -0.0482146,
- 5 + -0.580043,
- -5 + -0.276397,
- -7 + -0.224163,
- -7 + 0.569099,
- 1 + 0.112961,
- 7 + 0.695617,
- -5 + -0.985498,
- -5 + 0.624633,
- -5 + -0.698944,
- 1 + 0.290597,
- -1 + 0.492301,
- 5 + -0.873225,
- 5 + 0.517916,
- 1 + -0.739614,
- -5 + -0.118872,
- -7 + 0.429263,
- 5 + -0.374059,
- -3 + -0.196779,
- 5 + 0.845428,
- 3 + -0.825515,
- 1 + -0.324621,
- 3 + -0.321085,
- 5 + 0.659568,
- -7 + 0.507627,
- 3 + -0.762506,
- -5 + 0.0177499,
- 1 + -0.969493,
- 5 + -0.989013,
- 7 + 0.639013,
- 5 + -0.293451,
- -3 + -0.399314,
- 3 + -0.164182,
- -5 + -0.0115777,
- -7 + 0.728109,
- 1 + 0.0601385,
- -3 + 0.53905,
- -3 + 0.557821,
- -3 + 0.267226,
- 7 + 0.484006,
- 3 + -0.462906,
- 7 + 0.593879,
- 7 + 0.70928,
- 3 + 0.783019,
- 7 + -0.390819,
- 5 + 0.447453,
- -1 + -0.327203,
- -7 + -0.249398,
- -5 + -0.100986,
- 1 + -0.155282,
- -7 + -0.798511,
- -5 + -0.415777,
- 1 + 0.971724,
- -3 + -0.087326,
- 7 + 0.946116,
- -7 + -0.681513,
- 1 + -0.564743,
- 5 + 0.939016,
- 3 + -0.437047,
- -7 + -0.551414,
- -3 + 0.489793,
- 5 + -0.535763,
- -3 + -0.98994,
- 7 + 0.192269,
- -5 + 0.802636,
- -3 + 0.335588,
- -7 + -0.346334,
- 7 + 0.710128,
- 7 + 0.359396,
- 7 + 0.167325,
- -1 + -0.359781,
- 5 + -0.450043,
- -3 + -0.399062,
- -1 + 0.220616,
- -1 + -0.713507,
- 5 + -0.323577,
- -3 + -0.324612,
- -5 + -0.0478501,
- 7 + 0.0652244,
- -1 + 0.694262,
- -5 + 0.234324,
- -1 + 0.684074,
- -3 + 0.885926,
- -1 + 0.709219,
- 7 + -0.403976,
- -5 + 0.0613845,
- -5 + 0.578585,
- 5 + 0.531759,
- 5 + -0.823466,
- 1 + 0.885001,
- -5 + 0.678863,
- 1 + 0.235131,
- -5 + 0.741793,
- -7 + 0.831432,
- -3 + 0.524304,
- 3 + -0.740704,
- 7 + 0.507732,
- 3 + -0.0357639,
- 7 + 0.863181,
- -1 + 0.576264,
- 3 + 0.516363,
- 3 + -0.764998,
- -1 + -0.362159,
- -5 + 0.197446,
- 3 + -0.446453,
- 3 + 0.981725,
- 7 + 0.0734841,
- 3 + 0.256196,
- -3 + -0.77722,
- -5 + 0.791577,
- -7 + 0.402091,
- 7 + 0.553504,
- 1 + -0.93853,
- -7 + 0.584471,
- -3 + -0.437479,
- 5 + 0.997935,
- -5 + 0.682598,
- -7 + 0.641139,
- 3 + -0.732735,
- -1 + 0.930625,
- -7 + -0.488808,
- 7 + -0.985779,
- 7 + 0.526349,
- 1 + 0.412067,
- 7 + 0.405549,
- 3 + 0.95903,
- -3 + 0.304788,
- 5 + -0.344784,
- 7 + -0.707093,
- 7 + 0.508233,
- 3 + 0.704947,
- 1 + 0.790839,
- -7 + -0.789173,
- -3 + -0.320104,
- -5 + -0.0990607,
- -1 + -0.181266,
- 3 + 0.413149,
- 5 + -0.445842,
- 7 + 0.114297,
- -1 + -0.0193645,
- -3 + -0.630197,
- 7 + 0.549956,
- 3 + 0.832843,
- -1 + 0.709999,
- 5 + 0.35154,
- -3 + 0.488788,
- -1 + -0.367693,
- 7 + 0.81898,
- 3 + -0.977579,
- -7 + 0.677679,
- 3 + 0.0798718,
- -5 + -0.361776,
- -7 + 0.029239,
- -3 + 0.752219,
- -5 + 0.36909,
- -1 + -0.845805,
- -5 + 0.552649,
- 7 + -0.320622,
- 5 + -0.0791636,
- -7 + 0.155842,
- -5 + -0.383591,
- -7 + -0.921708,
- 7 + 0.262659,
- -5 + -0.311854,
- -3 + 0.909658,
- 5 + 0.220908,
- -5 + -0.24149,
- 5 + 0.424055,
- -7 + -0.115968,
- -1 + -0.837231,
- -3 + -0.943953,
- -1 + -0.501246,
- 3 + -0.30943,
- -7 + 0.726022,
- 5 + 0.468604,
- 7 + -0.536298,
- -5 + 0.180367,
- -5 + 0.478635,
- -5 + -0.983354,
- -7 + 0.948823,
- 7 + -0.964671,
- -7 + 0.83219,
- -1 + -0.00482819,
- -5 + 0.910779,
- 7 + 0.0379913,
- 5 + 0.958815,
- -7 + 0.37621,
- 5 + -0.348852,
- 1 + 0.251557,
- 5 + 0.421582,
- 7 + 0.100173,
- -3 + -0.343514,
- 7 + 0.866663,
- -1 + 0.442026,
- 7 + 0.0442502,
- 3 + -0.617214,
- 1 + -0.743735,
- -5 + 0.458965,
- 5 + -0.572788,
- 5 + 0.040819,
- 3 + -0.445056,
- 5 + -0.58016,
- 5 + 0.386475,
- -5 + 0.470098,
- 5 + -0.00197146,
- 7 + -0.614743,
- -7 + 0.632339,
- 5 + -0.445174,
- -5 + -0.462788,
- -5 + 0.994442,
- 5 + -0.0414883,
- -5 + 0.882532,
- 1 + 0.694469,
- -5 + -0.36298,
- -7 + 0.836014,
- 1 + 0.247427,
- 5 + -0.623588,
- -3 + 0.509161,
- 3 + -0.0136789,
- -5 + 0.551708,
- -5 + 0.714889,
- 5 + 0.948555,
- 7 + -0.542934,
- -3 + 0.284379,
- -1 + 0.445103,
- 5 + -0.302788,
- -3 + 0.782427,
- -1 + -0.137974,
- -1 + 0.874363,
- -3 + -0.450784,
- 1 + -0.962429,
- -5 + 0.938102,
- -7 + -0.879492,
- 5 + 0.666352,
- -5 + 0.146655,
- -3 + 0.505806,
- 3 + -0.90168,
- 5 + -0.00662362,
- -5 + 0.401645,
- -5 + 0.516729,
- 7 + -0.325518,
- 7 + -0.670081,
- 3 + -0.898185,
- 7 + 0.725776,
- -1 + -0.519448,
- -1 + 0.101936,
- 3 + -0.800607,
- 7 + -0.407942,
- 7 + -0.249011,
- 7 + 0.974777,
- -7 + 0.984282,
- -1 + 0.177661,
- -3 + 0.165499,
- -5 + -0.145106,
- 1 + 0.092101,
- -3 + -0.287475,
- -1 + -0.160128,
- -5 + 0.20695,
- -1 + 0.278086,
- 7 + 0.376328,
- -7 + 0.854766,
- 7 + 0.242705,
- -5 + -0.623362,
- 1 + -0.755314,
- -3 + -0.498729,
- -5 + -0.742776,
- 3 + -0.17839,
- -7 + -0.141452,
- -7 + 0.0890251,
- 3 + -0.761854,
- -7 + 0.316197,
- 1 + 0.531921,
- -1 + 0.763375,
- -7 + 0.398482,
- 1 + -0.930327,
- -5 + 0.559533,
- 3 + -0.782727,
- -1 + -0.809251,
- -3 + -0.827661,
- -7 + -0.790187,
- 3 + 0.886559,
- 3 + -0.312838,
- 7 + -0.205646,
- 3 + 0.538917,
- -5 + -0.151619,
- 7 + -0.498444,
- -1 + -0.777891,
- -7 + 0.709902,
- 5 + -0.842215,
- -3 + -0.0873613,
- -3 + 0.88423,
- 1 + 0.50133,
- 5 + 0.87654,
- -1 + 0.775389,
- -1 + 0.274183,
- -7 + -0.1128,
- 7 + 0.129837,
- 7 + -0.138116,
- 7 + 0.697651,
- 3 + -0.363404,
- 5 + -0.51758,
- 5 + 0.276224,
- -5 + -0.843988,
- 5 + 0.965171,
- 5 + -0.433201,
- 5 + 0.77057,
- 5 + -0.347871,
- -1 + -0.337877,
- 5 + 0.0192994,
- 5 + -0.00149202,
- 5 + -0.705596,
- -7 + 0.848062,
- 3 + -0.780618,
- 3 + 0.33526,
- -3 + -0.0251735,
- 7 + -0.148926,
- -1 + -0.655041,
- -3 + -0.559493,
- -3 + -0.604536,
- 3 + -0.0386967,
- -3 + 0.830413,
- 1 + -0.428,
- 5 + -0.0231212,
- 7 + -0.199671,
- 5 + -0.396984,
- -3 + 0.687779,
- -7 + -0.126673,
- 3 + -0.14281,
- 3 + -0.663755,
- -1 + 0.590741,
- 7 + -0.259138,
- -1 + 0.36915,
- 7 + -0.193918,
- -3 + 0.074994,
- 3 + 0.0734893,
- 3 + -0.87442,
- 5 + -0.277579,
- -7 + 0.874191,
- 1 + 0.603273,
- -1 + -0.933543,
- 7 + 0.952655,
- 3 + -0.0753299,
- -1 + -0.0547395,
- 1 + 0.298926,
- 7 + 0.89666,
- -1 + -0.169361,
- -7 + -0.0164988,
- -1 + 0.536616,
- 3 + 0.123214,
- -3 + -0.686119,
- -3 + 0.207928,
- 1 + 0.690104,
- -7 + -0.840309,
- -1 + 0.22515,
- 5 + -0.848586,
- 7 + -0.266778,
- -7 + -0.573275,
- -1 + 0.792824,
- 7 + -0.984161,
- -3 + -0.188004,
- 5 + -0.461688,
- -1 + -0.62303,
- 3 + -0.513087,
- -1 + -0.0713464,
- 7 + -0.4341,
- 1 + 0.791935,
- -7 + -0.216476,
- -5 + -0.472753,
- 7 + 0.887405,
- 5 + -0.629382,
- -1 + 0.960013,
- -7 + -0.225607,
- 5 + -0.783357,
- 3 + 0.238133,
- 1 + -0.939504,
- 7 + 0.300807,
- 7 + 0.714341,
- -1 + 0.0662017,
- -3 + 0.709742,
- -1 + 0.80212,
- -5 + 0.78005,
- -3 + 0.252241,
- -3 + -0.848605,
- -7 + -0.928371,
- -1 + 0.6205,
- 3 + -0.355202,
- 3 + -0.884526,
- 1 + 0.766157,
- 1 + -0.48066,
- -5 + 0.148214,
- -5 + 0.416083,
- 1 + 0.141582,
- 3 + 0.954276,
- 7 + -0.598539,
- 1 + 0.302432,
- -7 + -0.302829,
- -5 + 0.365095,
- -5 + 0.291996,
- -7 + -0.853708,
- 3 + -0.27352,
- 3 + 0.544414,
- -1 + -0.459018,
- 1 + 0.184556,
- 3 + -0.52332,
- -1 + -0.191827,
- -1 + 0.670293,
- 1 + 0.519123,
- 5 + 0.841211,
- -1 + -0.940759,
- -1 + -0.251439,
- -1 + 0.695483,
- -3 + 0.557767,
- -3 + 0.26932,
- 1 + 0.0599606,
- -5 + -0.731488,
- -3 + -0.559606,
- -7 + -0.161615,
- -7 + -0.269363,
- -3 + 0.700813,
- -5 + -0.598768,
- -3 + 0.805228,
- 5 + -0.856961,
- -1 + -0.385613,
- -3 + -0.323487,
- -7 + 0.411967,
- -5 + 0.21551,
- -7 + 0.010317,
- -3 + 0.573196,
- 3 + -0.360943,
- -1 + 0.564722,
- 7 + 0.0449874,
- 5 + -0.230872,
- -3 + -0.394789,
- -3 + 0.992717,
- 5 + 0.241152,
- -1 + -0.849168,
- 5 + 0.828781,
- 5 + -0.408953,
- -1 + -0.289148,
- -1 + 0.222295,
- 1 + -0.537086,
- 3 + 0.306834,
- -1 + -0.585661,
- -7 + 0.538775,
- 3 + -0.204193,
- 7 + -0.77022,
- 1 + -0.540422,
- -5 + 0.104483,
- 3 + 0.0113785,
- -3 + 0.358089,
- 7 + 0.83108,
- 7 + -0.810261,
- -1 + 0.0540461,
- -1 + 0.87434,
- -7 + -0.379698,
- 5 + -0.722662,
- -7 + -0.587491,
- 3 + -0.152501,
- 1 + -0.137736,
- -1 + 0.137048,
- -7 + -0.993715,
- -5 + -0.817584,
- -7 + 0.192652,
- -7 + 0.965716,
- 3 + -0.497121,
- -3 + -0.583623,
- 3 + 0.724106,
- 3 + 0.906286,
- 3 + 0.369401,
- -5 + -0.333858,
- -7 + 0.201107,
- 1 + -0.481391,
- 3 + 0.214079,
- 1 + -0.634333,
- 3 + 0.32668,
- -5 + 0.438198,
- 3 + 0.0183425,
- -7 + -0.854446,
- -3 + -0.749623,
- 5 + 0.260525,
- -3 + -0.246166,
- 7 + -0.256046,
- 5 + -0.0506104,
- -5 + -0.546944,
- -3 + 0.70895,
- 7 + 0.671615,
- -7 + -0.178744,
- -7 + -0.296848,
- 3 + -0.786894,
- 1 + 0.486466,
- 5 + 0.984005,
- -3 + 0.755768,
- -3 + 0.60431,
- -7 + -0.658241,
- 7 + -0.99308,
- -7 + 0.730603,
- 1 + -0.147345,
- 3 + -0.914348,
- -5 + 0.176437,
- -5 + -0.883513,
- -5 + -0.746214,
- 1 + 0.599807,
- -1 + -0.826388,
- -1 + -0.231019,
- 7 + -0.427187,
- 3 + 0.436418,
- -5 + -0.0296006,
- 3 + 0.342193,
- 5 + -0.02255,
- -1 + 0.332447,
- 1 + 0.627013,
- -7 + -0.257934,
- -5 + -0.61819,
- -7 + 0.660406,
- 7 + -0.749068,
- -1 + -0.826357,
- 7 + 0.259934,
- 1 + 0.624619,
- -5 + -0.409846,
- -7 + 0.175771,
- 7 + 0.841248,
- -7 + -0.182872,
- 7 + 0.728087,
- 3 + -0.272224,
- -1 + 0.694387,
- 1 + 0.87123,
- -7 + -0.36121,
- -3 + 0.231829,
- -3 + -0.288232,
- -1 + 0.860921,
- 3 + -0.667815,
- -1 + -0.9711,
- 3 + -0.778314,
- 3 + -0.298502,
- 7 + 0.460686,
- -7 + -0.972103,
- 1 + -0.791205,
- -7 + -0.527057,
- 3 + 0.680872,
- 1 + 0.854739,
- -7 + -0.673826,
- -1 + 0.137268,
- -1 + 0.333986,
- -1 + 0.901741,
- -1 + -0.202348,
- -3 + -0.774122,
- 1 + 0.589625,
- 3 + -0.849021,
- 7 + -0.456618,
- 5 + 0.567717,
- 5 + -0.636284,
- 1 + 0.365766,
- 1 + -0.511727,
- -7 + 0.166757,
- 5 + 0.919885,
- 1 + -0.642062,
- 5 + -0.296797,
- -7 + -0.385574,
- 7 + 0.591877,
- -7 + 0.436025,
- 3 + 0.451077,
- -1 + -0.716762,
- -3 + 0.374155,
- 5 + 0.337632,
- -7 + 0.723804,
- -5 + 0.383933,
- -3 + -0.0862489,
- 3 + 0.990362,
- 5 + 0.133119,
- 1 + -0.12971,
- 3 + 0.044241,
- 3 + -0.964742,
- -5 + 0.702827,
- -5 + 0.52507,
- 7 + 0.813182,
- 7 + 0.456129,
- -7 + -0.564425,
- -3 + 0.681494,
- -1 + 0.503007,
- 1 + 0.488921,
- -5 + -0.978964,
- 5 + -0.978504,
- -5 + 0.458051,
- -7 + 0.0654869,
- 3 + -0.245564,
- -1 + -0.337528,
- -5 + -0.55446,
- -5 + 0.273099,
- -7 + 0.215733,
- 1 + -0.138924,
- 7 + -0.219671,
- 3 + -0.887201,
- -7 + -0.516248,
- -5 + -0.396037,
- -5 + 0.818756,
- 3 + -0.712209,
- 7 + -0.282743,
- -3 + 0.707385,
- 7 + 0.359774,
- -5 + -0.845302,
- 1 + -0.1686,
- -7 + -0.483578,
- 1 + 0.720247,
- 1 + 0.626128,
- 7 + -0.2298,
- -7 + -0.491252,
- -1 + 0.568972,
- 1 + 0.348875,
- 5 + -0.21767,
- 5 + -0.844788,
- -7 + 0.212711,
- -5 + -0.728646,
- 5 + -0.257998,
- -3 + 0.91577,
- 3 + -0.356945,
- -5 + -0.727851,
- 3 + -0.839908,
- -5 + -0.87513,
- 5 + 0.492427,
- 7 + 0.859239,
- 5 + 0.63738,
- 7 + -0.567552,
- 7 + -0.311746,
- -5 + -0.293624,
- -5 + -0.0892278,
- -1 + 0.68692,
- -3 + -0.584071,
- -7 + -0.368564,
- 3 + 0.685985,
- 1 + -0.443952,
- 5 + -0.799968,
- -5 + 0.849293,
- 7 + 0.419622,
- 7 + -0.719699,
- -5 + 0.776349,
- 7 + 0.353652,
- -3 + -0.957607,
- 7 + -0.233657,
- -3 + 0.110137,
- -5 + -0.825374,
- -5 + 0.936229,
- 3 + 0.611605,
- -5 + 0.598961,
- 3 + 0.914424,
- -5 + 0.185668,
- 1 + -0.506371,
- -1 + 0.19368,
- -3 + 0.135954,
- 5 + 0.0317122,
- -3 + 0.926598,
- 3 + 0.841409,
- -7 + -0.995628,
- 7 + -0.516938,
- 1 + -0.327213,
- -7 + -0.988622,
- 7 + 0.0436381,
- -1 + -0.736482,
- 3 + 0.0252206,
- -7 + -0.999107,
- 1 + 0.287324,
- 3 + -0.710148,
- -3 + -0.863982,
- 5 + -0.110109,
- -1 + -0.382303,
- 1 + -0.00955381,
- 7 + 0.574434,
- 3 + 0.772632,
- -3 + 0.427061,
- -3 + -0.47615,
- 1 + 0.159639,
- -1 + 0.0973485,
- -7 + 0.670094,
- -3 + 0.66009,
- 3 + -0.966069,
- 5 + 0.729848,
- -1 + -0.165828,
- -5 + -0.991247,
- 3 + -0.796155,
- -3 + -0.665567,
- 1 + 0.705734,
- -3 + -0.0729422,
- -5 + 0.569012,
- -5 + 0.532164,
- -3 + 0.114169,
- -3 + -0.79896,
- 5 + -0.434429,
- 3 + 0.0409003,
- 5 + -0.656138,
- 1 + 0.80331,
- -1 + -0.832592,
- 1 + -0.512036,
- 5 + 0.821594,
- -5 + 0.153262,
- -7 + 0.742653,
- 7 + 0.775938,
- 7 + 0.794682,
- -1 + 0.436735,
- 1 + 0.232814,
- 5 + 0.173647,
- -7 + 0.0346826,
- -5 + -0.764013,
- -3 + 0.414464,
- -7 + -0.107918,
- -5 + -0.909358,
- -3 + -0.855809,
- 3 + 0.321112,
- -7 + -0.853217,
- -1 + 0.240779,
- -5 + 0.308181,
- -3 + -0.101137,
- -3 + 0.0592809,
- 1 + -0.475771,
- 1 + -0.805118,
- 1 + -0.497502,
- 1 + 0.0533702,
- 1 + 0.256822,
- 1 + 0.943496,
- 5 + 0.195682,
- 3 + 0.84158,
- -7 + 0.691885,
- 7 + 0.702398,
- -5 + -0.0240126,
- 3 + 0.0729154,
- 1 + 0.683697,
- -5 + 0.261411,
- 5 + 0.953329,
- 5 + -0.728981,
- -5 + -0.635009,
- 5 + -0.630682,
- -7 + 0.122834,
- -3 + 0.959923,
- -1 + 0.374435,
- 1 + 0.720612,
- 5 + 0.664998,
- 1 + 0.00891615,
- -7 + 0.432124,
- -3 + 0.0339184,
- -1 + -0.257549,
- 7 + 0.584476,
- -3 + 0.0935045,
- -1 + -0.804627,
- 1 + -0.992967,
- -3 + 0.538947,
- 7 + 0.180181,
- -5 + -0.90103,
- -3 + -0.368599,
- 7 + 0.775146,
- -3 + -0.990663,
- 5 + -0.991429,
- 3 + 0.229796,
- 3 + 0.933547,
- -7 + 0.629628,
- 7 + -0.128119,
- -3 + 0.993864,
- 3 + -0.518632,
- 1 + 0.431409,
- 5 + 0.162359,
- -1 + 0.340156,
- 7 + 0.99834,
- -1 + -0.37602,
- 7 + 0.798388,
- -5 + -0.977304,
- -1 + -0.714549,
- -7 + 0.371461,
- -3 + 0.429763,
- -5 + -0.176519,
- 1 + 0.130875,
- 3 + -0.192991,
- -3 + 0.926126,
- 3 + -0.756796,
- -3 + 0.0799201,
- -5 + -0.885874,
- -5 + -0.922719,
- -1 + 0.788957,
- 1 + 0.876735,
- 1 + 0.505541,
- 1 + 0.0568082,
- 5 + -0.546276,
- -5 + 0.987925,
- 1 + 0.559679,
- -5 + 0.240393,
- 7 + 0.460363,
- 5 + 0.194578,
- 3 + 0.987203,
- 7 + 0.781711,
- -7 + -0.0489823,
- -1 + -0.776679,
- -7 + -0.496617,
- 5 + -0.488827,
- -3 + -0.501392,
- 5 + 0.703741,
- 7 + -0.0924905,
- 5 + -0.948555,
- -3 + -0.508697,
- -5 + -0.211705,
- -1 + -0.0656021,
- 1 + 0.526428,
- 3 + 0.977313,
- 7 + 0.717488,
- 1 + 0.987358,
- -1 + -0.492118,
- -1 + 0.765235,
- 1 + -0.576154,
- 3 + 0.52365,
- -7 + 0.253303,
- 1 + -0.492177,
- 5 + 0.865942,
- 5 + 0.977195,
- 7 + 0.161001,
- 5 + -0.907593,
- -7 + -0.557902,
- -7 + 0.825849,
- 7 + -0.120301,
- -5 + 0.531996,
- 1 + 0.80755,
- 7 + 0.969872,
- -7 + -0.738685,
- -3 + 0.636749,
- 1 + -0.655666,
- -3 + 0.999979,
- 7 + -0.843387,
- -3 + 0.693217,
- 7 + 0.615595,
- -3 + -0.585734,
- 5 + -0.349962,
- -5 + -0.708827,
- 5 + 0.767043,
- -3 + -0.561155,
- 5 + 0.0547506,
- 7 + -0.00058388,
- 5 + 0.683614,
- -5 + 0.933133,
- -7 + -0.705963,
- -1 + 0.432718,
- -5 + -0.745574,
- -1 + 0.578781,
- -3 + 0.265256,
- -1 + -0.723166,
- 3 + -0.609362,
- -3 + 0.897704,
- -1 + 0.630349,
- -5 + 0.582721,
- -5 + -0.0955401,
- 5 + -0.235266,
- -1 + 0.829279,
- -5 + -0.824548,
- 3 + -0.803079,
- 3 + -0.505004,
- -1 + -0.492252,
- 1 + -0.92866,
- 1 + -0.193727,
- 7 + 0.855165,
- -5 + -0.409258,
- 3 + 0.483943,
- 5 + -0.711778,
- 1 + -0.291856,
- -1 + -0.309453,
- -1 + -0.961907,
- 3 + 0.239915,
- 3 + 0.333033,
- -5 + -0.520074,
- 7 + 0.80808,
- 7 + -0.392463,
- -5 + -0.268562,
- 7 + 0.963694,
- -5 + -0.27416,
- -3 + 0.136372,
- -3 + -0.533467,
- 5 + 0.0336407,
- 5 + 0.269954,
- -1 + 0.481331,
- -5 + 0.883264,
- -5 + 0.917248,
- -5 + 0.841082,
- 7 + -0.272449,
- -1 + 0.612493,
- -7 + -0.0456689,
- 3 + -0.468522,
- -5 + -0.783857,
- -5 + -0.963398,
- -7 + 0.0600612,
- -3 + 0.80801,
- -3 + -0.969476,
- -5 + 0.949233,
- 7 + -0.954761,
- 7 + -0.0774834,
- 5 + -0.245508,
- 5 + 0.345368,
- 3 + -0.476338,
- -5 + -0.322511,
- -3 + 0.450538,
- -7 + -0.678719,
- -3 + -0.172123,
- -5 + -0.209171,
- -3 + -0.420884,
- -1 + 0.00383168,
- -3 + -0.312955,
- -7 + -0.0884187,
- -7 + 0.201349,
- 5 + -0.601248,
- 5 + -0.413319,
- 3 + -0.246626,
- 5 + 0.977104,
- -5 + 0.0133906,
- 7 + 0.349431,
- 5 + 0.216145,
- -1 + -0.529927,
- 1 + -0.249291,
- 1 + 0.658874,
- 7 + 0.43074,
- 5 + 0.124815,
- 7 + -0.553229,
- 1 + 0.116857,
- -5 + 0.734356,
- -1 + -0.647581,
- 5 + -0.323226,
- -5 + -0.810003,
- -3 + 0.822276,
- -1 + -0.591676,
- -5 + -0.434047,
- 1 + 0.15821,
- 7 + 0.165069,
- 3 + 0.253866,
- 3 + 0.973848,
- -7 + 0.713996,
- -5 + 0.215808,
- -1 + 0.0812883,
- -3 + 0.846565,
- -5 + -0.947667,
- 3 + 0.409641,
- 5 + -0.385462,
- -3 + 0.787733,
- 1 + 0.844418,
- 1 + 0.349241,
- 5 + -0.586969,
- 7 + 0.257519,
- 1 + -0.315586,
- -1 + -0.327033,
- 1 + 0.767669,
- -1 + -0.292183,
- 3 + 0.389264,
- -7 + 0.339534,
- -3 + 0.477526,
- -3 + 0.11475,
- -7 + -0.119439,
- 3 + 0.406966,
- 5 + 0.419678,
- 1 + 0.76062,
- -7 + 0.536916,
- -7 + -0.510681,
- -5 + 0.905296,
- 7 + 0.13423,
- -5 + 0.748596,
- 3 + -0.431882,
- 7 + 0.33909,
- 3 + 0.341309,
- 5 + -0.172616,
- -7 + -0.778667,
- -5 + -0.984483,
- 7 + 0.04289,
- -3 + 0.791158,
- -1 + -0.606419,
- -3 + 0.939034,
- 5 + -0.688122,
- 7 + -0.0797096,
- -3 + -0.176378,
- 3 + -0.200208,
- -3 + 0.539966,
- -5 + 0.55811,
- -1 + -0.965644,
- -7 + -0.62776,
- 3 + -0.327998,
- 3 + -0.518732,
- 3 + 0.713363,
- 5 + 0.082287,
- -7 + -0.799949,
- 5 + -0.144101,
- -7 + -0.416404,
- 3 + 0.926589,
- -3 + -0.0426248,
- -3 + 0.823828,
- 3 + -0.899492,
- -1 + 0.925421,
- -5 + -0.987104,
- -3 + -0.667032,
- -1 + -0.376583,
- -1 + 0.776434,
- 5 + 0.838315,
- -3 + -0.411202,
- -7 + -0.918427,
- -5 + 0.627889,
- 7 + -0.542975,
- -3 + -0.0689918,
- -5 + -0.55104,
- -5 + 0.829815,
- 7 + 0.466128,
- -7 + -0.910729,
- -3 + 0.587943,
- -5 + -0.989778,
- 3 + 0.429693,
- -5 + 0.363276,
- 5 + 0.48865,
- -1 + 0.462889,
- -1 + 0.933537,
- -1 + -0.237365,
- 7 + -0.503287,
- 3 + 0.898831,
- 5 + -0.88925,
- 1 + 0.491187,
- -3 + 0.819494,
- 7 + -0.841093,
- 5 + -0.172405,
- -3 + 0.296082,
- -5 + 0.230588,
- 1 + -0.135964,
- -7 + -0.24852,
- 7 + 0.779819,
- 1 + -0.0197039,
- 3 + 0.690689,
- 5 + 0.201188,
- -3 + 0.316178,
- 3 + -0.790151,
- -3 + 0.353513,
- 1 + 0.482168,
- -7 + 0.5088,
- 5 + -0.619387,
- 3 + -0.572638,
- -1 + 0.737113,
- -3 + -0.330907,
- 3 + -0.642647,
- 7 + -0.587751,
- 7 + 0.705296,
- -1 + 0.765705,
- -7 + 0.342622,
- 1 + -0.443867,
- -7 + 0.64285,
- 5 + 0.119933,
- 1 + 0.146719,
- -3 + 0.808331,
- 5 + 0.362826,
- -5 + 0.649288,
- -5 + -0.919914,
- 5 + 0.530805,
- 7 + 0.836641,
- -1 + -0.33567,
- 7 + -0.814941,
- -3 + 0.521328,
- -7 + -0.0633902,
- 3 + 0.637973,
- 5 + -0.448024,
- -7 + 0.529787,
- -1 + 0.158647,
- 1 + -0.343875,
- 5 + 0.862299,
- -7 + 0.269423,
- -3 + 0.205924,
- -3 + 0.543444,
- -1 + -0.0442747,
- -1 + -0.514346,
- -7 + -0.538346,
- 5 + -0.134437,
- 3 + -0.242908,
- -3 + 0.960616,
- -3 + 0.613265,
- 5 + -0.578398,
- 5 + -0.196621,
- -1 + 0.99966,
- -7 + -0.206926,
- -7 + 0.149597,
- 1 + -0.618079,
- 7 + -0.779085,
- 5 + 0.78756,
- -3 + -0.461424,
- 1 + -0.8271,
- 7 + -0.779893,
- 1 + -0.034591,
- 3 + -0.618594,
- 7 + -0.508509,
- 3 + 0.858569,
- -3 + -0.292217,
- -3 + 0.638647,
- 7 + 0.429429,
- -3 + 0.0850469,
- 3 + 0.840684,
- -5 + -0.361285,
- -1 + -0.0439304,
- -5 + -0.464768,
- 5 + 0.814776,
- -7 + 0.838205,
- -1 + 0.932473,
- 3 + 0.0800499,
- 3 + 0.430625,
- -1 + -0.379486,
- -5 + 0.566269,
- 1 + -0.191075,
- 1 + 0.426799,
- -3 + -0.865195,
- -1 + -0.286844,
- -5 + -0.347813,
- -1 + 0.254653,
- -5 + -0.0217081,
- -7 + 0.712565,
- -5 + 0.626585,
- -3 + 0.407399,
- -1 + -0.495544,
- 7 + 0.988263,
- 5 + 0.752268,
- 7 + -0.57751,
- 1 + -0.699522,
- -3 + -0.559222,
- -5 + -0.142211,
- -5 + -0.984406,
- -7 + 0.478908,
- 3 + -0.492842,
- -1 + -0.75382,
- 1 + 0.00969996,
- 1 + -0.893656,
- -7 + 0.928332,
- 7 + -0.310557,
- 3 + -0.203997,
- -3 + -0.119623,
- -3 + 0.23919,
- -5 + 0.89898,
- 3 + -0.000236075,
- -1 + -0.75715,
- 5 + -0.946444,
- 5 + 0.830343,
- 5 + 0.170209,
- -5 + 0.0682683,
- 7 + 0.490712,
- 3 + 0.0912319,
- 7 + -0.939061,
- -5 + -0.27871,
- 3 + 0.292512,
- 3 + 0.7815,
- 3 + 0.780423,
- 3 + -0.995218,
- 1 + -0.971244,
- 5 + 0.863878,
- 3 + 0.605471,
- 1 + 0.615707,
- -1 + -0.430001,
- 7 + 0.137532,
- -7 + 0.420738,
- 5 + -0.511889,
- -7 + -0.894203,
- -1 + -0.442678,
- 7 + 0.58245,
- -1 + -0.302989,
- -7 + 0.046658,
- -1 + 0.213312,
- -3 + -0.40466,
- 3 + 0.119842,
- -3 + -0.209236,
- 1 + 0.489636,
- -1 + 0.0750853,
- 1 + -0.138393,
- 3 + 0.197677,
- 1 + 0.801,
- 5 + -0.737093,
- 5 + 0.0908536,
- -7 + -0.604504,
- -5 + 0.56203,
- -3 + 0.309546,
- 1 + -0.966521,
- 5 + 0.977852,
- 7 + 0.73063,
- -5 + -0.256762,
- -3 + -0.431265,
- 5 + 0.661912,
- -1 + 0.865871,
- -3 + 0.10026,
- -3 + 0.979883,
- -3 + -0.50973,
- 7 + -0.387004,
- -5 + 0.872216,
- -1 + -0.552574,
- 3 + -0.00281111,
- -5 + -0.433458,
- 3 + 0.228333,
- -5 + -0.784953,
- 5 + 0.571488,
- -5 + -0.107047,
- 3 + 0.598395,
- 7 + -0.209076,
- 7 + 0.968037,
- -7 + 0.133602,
- -3 + 0.197601,
- -1 + -0.737348,
- -7 + -0.0987225,
- -1 + -0.680374,
- -5 + 0.902133,
- 5 + -0.065214,
- 7 + 0.820436,
- -1 + -0.994703,
- 5 + 0.928257,
- 3 + 0.387782,
- -1 + -0.867014,
- -1 + -0.343716,
- -3 + -0.0119044,
- 5 + -0.882348,
- 3 + -0.349223,
- -3 + -0.423901,
- -1 + -0.358375,
- -7 + 0.877898,
- -1 + -0.0346012,
- -3 + -0.731243,
- 1 + -0.0103546,
- -1 + -0.662776,
- 1 + 0.486511,
- -1 + -0.0129122,
- -5 + 0.0121863,
- -3 + 0.550817,
- -3 + 0.0375324,
- 5 + 0.371006,
- 5 + -0.111812,
- 5 + 0.963243,
- 1 + 0.36354,
- -3 + -0.0390213,
- -7 + -0.512331,
- -3 + 0.530897,
- -1 + -0.961326,
- 1 + -0.128698,
- 5 + -0.0345879,
- 7 + -0.724934,
- -7 + -0.990395,
- 7 + -0.0956077,
- 5 + 0.998217,
- -1 + -0.38503,
- -5 + 0.431693,
- 3 + -0.322315,
- 1 + -0.520076,
- -3 + -0.403514,
- 3 + -0.638799,
- -1 + -0.665616,
- -7 + 0.866326,
- 7 + -0.314543,
- -3 + -0.752403,
- 7 + 0.180847,
- 7 + -0.924565,
- 3 + 0.431162,
- -7 + -0.844134,
- 5 + -0.621084,
- 1 + 0.678683,
- 7 + -0.643627,
- -1 + 0.464485,
- 3 + 0.311484,
- 1 + 0.61938,
- 1 + -0.362697,
- -1 + -0.545854,
- -7 + -0.693428,
- 3 + -0.162961,
- 3 + 0.362332,
- -5 + -0.0418496,
- -3 + -0.790282,
- 1 + -0.362329,
- -5 + -0.679632,
- -7 + 0.193632,
- 7 + 0.169699,
- 5 + -0.0276975,
- 3 + 0.145423,
- 7 + -0.526892,
- 7 + 0.23963,
- -5 + -0.0191274,
- 3 + 0.267953,
- 5 + -0.963432,
- 7 + 0.72934,
- 5 + -0.0415711,
- 3 + -0.0615771,
- -1 + -0.441843,
- 5 + -0.196666,
- -5 + 0.656983,
- 5 + 0.764159,
- -7 + -0.0188419,
- -1 + 0.515285,
- -5 + 0.77527,
- -1 + -0.362528,
- 1 + 0.360052,
- 3 + 0.134359,
- -5 + 0.37625,
- 7 + -0.511201,
- 7 + -0.846493,
- 5 + 0.94168,
- 1 + -0.100134,
- 5 + -0.157002,
- 3 + -0.374631,
- -7 + -0.364117,
- -1 + -0.142558,
- -7 + 0.0265685,
- -3 + 0.138828,
- -5 + -0.289868,
- 1 + 0.664193,
- -7 + 0.887828,
- 1 + -0.652588,
- 3 + -0.527631,
- -1 + 0.284251,
- -5 + 0.278712,
- 1 + -0.105013,
- -1 + 0.853542,
- 1 + -0.436623,
- -5 + -0.867476,
- 3 + 0.96232,
- 7 + 0.427617,
- 3 + -0.501165,
- -5 + 0.411637,
- 7 + 0.891616,
- -7 + 0.664072,
- -1 + -0.888475,
- 5 + 0.548079,
- 3 + 0.503912,
- -5 + -0.612317,
- -1 + -0.180983,
- 1 + -0.239876,
- 1 + 0.596635,
- -3 + -0.0827705,
- -7 + 0.277359,
- 5 + -0.941413,
- -5 + 0.697875,
- 3 + 0.714356,
- 1 + -0.558584,
- 1 + -0.0174082,
- 5 + -0.587225,
- -5 + -0.512741,
- 7 + -0.434388,
- 7 + -0.473811,
- -1 + 0.285865,
- 5 + 0.988991,
- -5 + -0.991867,
- -3 + 0.864291,
- -5 + 0.661288,
- 5 + -0.460111,
- 7 + 0.366331,
- -7 + 0.784093,
- 5 + 0.918848,
- 7 + 0.965396,
- -3 + -0.161624,
- 7 + -0.476323,
- -5 + 0.501047,
- 7 + 0.964268,
- 1 + -0.388995,
- -1 + 0.308069,
- 7 + 0.449621,
- -3 + 0.517261,
- -1 + -0.931887,
- -3 + -0.314139,
- -1 + -0.88269,
- 1 + -0.641202,
- -7 + 0.426506,
- -7 + 0.765908,
- 3 + -0.839435,
- -1 + 0.85062,
- -5 + -0.068266,
- 7 + -0.336073,
- 5 + -0.552052,
- 7 + 0.968225,
- 5 + -0.489061,
- -1 + 0.549817,
- 7 + 0.155363,
- 7 + 0.287813,
- 5 + -0.0712527,
- 7 + -0.539294,
- 3 + 0.515963,
- -7 + 0.309448,
- 5 + -0.400565,
- -3 + 0.772515,
- -3 + 0.47223,
- -5 + -0.377265,
- -3 + -0.277457,
- 3 + -0.0481647,
- 1 + 0.253072,
- 7 + -0.701416,
- 3 + -0.983524,
- -1 + 0.859256,
- 3 + 0.684439,
- 7 + -0.715583,
- 1 + -0.927083,
- 5 + -0.820364,
- 3 + -0.818987,
- -1 + 0.0484889,
- -5 + 0.88172,
- -1 + 0.642372,
- 7 + -0.486761,
- 1 + -0.154892,
- -3 + 0.620922,
- -7 + -0.307461,
- -5 + 0.958143,
- -5 + -0.945751,
- -7 + 0.420205,
- 3 + 0.212257,
- -7 + 0.343969,
- -7 + -0.56883,
- -7 + 0.542757,
- 1 + 0.338133,
- -1 + 0.205287,
- 3 + -0.678275,
- -3 + 0.162556,
- 7 + 0.7356,
- -1 + -0.366469,
- -5 + 0.818684,
- 1 + -0.375059,
- -7 + -0.326917,
- -1 + 0.21386,
- -1 + 0.933421,
- -5 + -0.0965871,
- -1 + -0.327707,
- -3 + -0.293112,
- 5 + -0.399372,
- -1 + -0.243464,
- -1 + -0.477791,
- 5 + 0.160018,
- 3 + 0.0379489,
- -7 + -0.468135,
- -5 + -0.924231,
- 7 + -0.559268,
- -1 + -0.869929,
- 1 + 0.644987,
- 7 + -0.416144,
- -3 + -0.64862,
- 1 + 0.0932449,
- -1 + -0.941752,
- -7 + -0.448205,
- 5 + 0.816932,
- -1 + -0.010022,
- -3 + -0.611324,
- 5 + -0.688206,
- 1 + 0.868089,
- -3 + -0.454031,
- 3 + -0.633225,
- 5 + -0.11036,
- 7 + 0.119173,
- -7 + -0.663239,
- -7 + 0.86954,
- 7 + 0.335132,
- -1 + 0.512855,
- 1 + -0.130088,
- 3 + -0.225548,
- 5 + -0.745615,
- 7 + 0.963223,
- -3 + -0.678778,
- -7 + -0.430329,
- -3 + 0.964206,
- 7 + 0.808534,
- 5 + -0.632605,
- -5 + -0.728056,
- -5 + -0.0283051,
- -1 + -0.292853,
- 3 + -0.960114,
- 1 + 0.266249,
- 7 + -0.94076,
- 7 + -0.680042,
- -1 + 0.678469,
- 3 + 0.553279,
- 7 + 0.392802,
- 1 + -0.308376,
- 7 + -0.588163,
- 5 + -0.235282,
- 7 + -0.490381,
- 5 + 0.412499,
- -7 + -0.148118,
- 7 + -0.20069,
- -1 + -0.256974,
- 1 + -0.946528,
- -5 + -0.190544,
- 1 + -0.774484,
- -1 + 0.939011,
- 3 + 0.401197,
- 7 + 0.763682,
- -7 + 0.970152,
- 5 + -0.471915,
- -3 + -0.0230657,
- -1 + 0.666549,
- 3 + -0.312851,
- 5 + 0.909774,
- -5 + 0.608703,
- -1 + -0.398985,
- -1 + -0.579955,
- -3 + 0.427466,
- -3 + -0.406024,
- 5 + -0.923879,
- 5 + -0.124516,
- -7 + 0.389177,
- -1 + 0.978163,
- 7 + 0.321733,
- -5 + -0.401276,
- -3 + -0.669763,
- 5 + 0.837051,
- -3 + -0.507979,
- -5 + 0.650163,
- 5 + -0.533125,
- -7 + -0.352708,
- -3 + 0.975917,
- -1 + 0.333199,
- 1 + 0.786429,
- 7 + 0.588826,
- -3 + -0.254794,
- -5 + 0.577074,
- 3 + -0.445216,
- -3 + -0.913091,
- 1 + 0.833436,
- 3 + 0.879009,
- 7 + -0.420452,
- -7 + -0.841488,
- 3 + 0.941771,
- -5 + -0.516194,
- 1 + -0.111796,
- 1 + 0.913016,
- -3 + 0.831405,
- 7 + -0.456459,
- 5 + 0.52518,
- 7 + 0.407003,
- 5 + 0.477567,
- -1 + 0.420401,
- -1 + 0.437449,
- -7 + -0.0206778,
- -3 + 0.132506,
- 3 + -0.0369548,
- -3 + -0.66723,
- 3 + 0.639026,
- -5 + 0.818826,
- -3 + 0.521142,
- -7 + 0.239988,
- 7 + 0.798847,
- 3 + 0.568449,
- -7 + -0.322325,
- 1 + 0.74602,
- 5 + -0.820488,
- 5 + 0.422569,
- -5 + 0.154974,
- 3 + -0.598438,
- -3 + -0.0493216,
- 5 + -0.437171,
- -7 + 0.91565,
- 1 + -0.76322,
- -7 + 0.655683,
- 1 + -0.221855,
- 3 + 0.499042,
- 7 + -0.551781,
- -1 + 0.776521,
- 3 + 0.364049,
- 7 + 0.76778,
- 1 + 0.98362,
- 1 + 0.901754,
- -7 + -0.301171,
- -7 + -0.154012,
- -3 + -0.967804,
- -1 + 0.205987,
- 7 + -0.231608,
- 1 + 0.577335,
- -5 + 0.133768,
- -5 + 0.959646,
- -3 + -0.0372217,
- -3 + 0.404834,
- -1 + 0.457923,
- 1 + 0.0552233,
- -3 + 0.2,
- 5 + -0.787169,
- -1 + 0.572437,
- 7 + -0.18741,
- -1 + 0.0523727,
- -1 + -0.804208,
- 7 + -0.303471,
- 7 + 0.73635,
- -3 + -0.804122,
- 1 + 0.962955,
- 7 + 0.065147,
- -7 + -0.464851,
- 7 + 0.410402,
- -1 + -0.213138,
- 7 + 0.323269,
- 5 + -0.812589,
- 1 + -0.924136,
- 3 + -0.0515391,
- 5 + -0.942719,
- -7 + 0.0813437,
- -5 + -0.919358,
- -3 + 0.09817,
- -3 + 0.204768,
- -3 + 0.895305,
- -5 + 0.426145,
- -1 + -0.654514,
- 1 + -0.527968,
- 1 + -0.93447,
- 7 + -0.259295,
- -5 + -0.357566,
- -3 + 0.820761,
- 3 + 0.061946,
- 1 + -0.365104,
- -1 + -0.484186,
- 5 + -0.0747202,
- 7 + 0.373292,
- 3 + -0.225615,
- 1 + 0.387072,
- -1 + 0.0964885,
- 5 + 0.318965,
- -5 + -0.574407,
- -1 + -0.5876,
- 3 + -0.0651205,
- -7 + -0.131517,
- -5 + -0.700999,
- -1 + 0.431009,
- -5 + -0.378572,
- -5 + -0.438665,
- 3 + -0.0663064,
- -1 + 0.303877,
- 7 + 0.252822,
- -5 + 0.127981,
- -5 + -0.979741,
- -7 + -0.977809,
- 1 + -0.939208,
- -5 + -0.619289,
- -3 + -0.817288,
- -7 + -0.682975,
- 5 + 0.945473,
- 3 + 0.696275,
- -1 + 0.466816,
- 3 + -0.632966,
- -3 + 0.078222,
- 5 + 0.546507,
- -1 + 0.977089,
- 7 + -0.133295,
- -5 + -0.604371,
- -3 + 0.365631,
- -3 + 0.673212,
- -1 + 0.180141,
- 5 + 0.223484,
- -1 + 0.146777,
- 1 + -0.319683,
- -1 + 0.857262,
- 5 + -0.356152,
- 5 + -0.598653,
- 1 + 0.975409,
- -5 + -0.881246,
- -7 + -0.472377,
- -3 + 0.0214979,
- 7 + -0.788032,
- 7 + -0.333508,
- 7 + -0.750094,
- -3 + -0.814424,
- 7 + -0.965833,
- 5 + -0.36787,
- 3 + -0.612635,
- -5 + 0.236003,
- -5 + -0.785485,
- -5 + 0.745934,
- 3 + 0.841095,
- 3 + 0.331357,
- 3 + -0.341722,
- 1 + 0.0449292,
- 7 + -0.256584,
- -3 + -0.666529,
- 7 + -0.203782,
- 1 + -0.442113,
- 5 + 0.281735,
- -7 + -0.600958,
- 5 + -0.297631,
- 7 + 0.834514,
- 1 + -0.965433,
- -7 + 0.980322,
- -5 + -0.275104,
- -5 + 0.501189,
- 1 + 0.861033,
- 3 + -0.186388,
- -7 + -0.783021,
- -3 + -0.331772,
- -7 + -0.923864,
- 7 + 0.981171,
- -7 + 0.677146,
- 5 + -0.764622,
- 7 + 0.544671,
- 3 + -0.149741,
- -1 + -0.115158,
- 5 + 0.315554,
- 3 + -0.0435786,
- -7 + -0.198421,
- 3 + 0.728623,
- 3 + 0.917598,
- -7 + -0.222429,
- -1 + -0.839337,
- 1 + -0.837996,
- 5 + 0.7184,
- 3 + 0.279682,
- 5 + 0.89931,
- 1 + -0.0903269,
- -3 + 0.311248,
- -3 + -0.0615842,
- -5 + 0.978228,
- 5 + -0.0288547,
- -7 + -0.319235,
- 1 + 0.459872,
- -7 + -0.762583,
- 1 + 0.430673,
- 7 + -0.202576,
- 7 + -0.508028,
- 5 + -0.563939,
- 7 + 0.431253,
- 3 + 0.924691,
- -7 + -0.929823,
- -7 + -0.745149,
- -3 + -0.54763,
- 7 + -0.233056,
- -3 + 0.0728049,
- 3 + 0.173541,
- 5 + -0.99085,
- -5 + -0.509606,
- -7 + -0.0573629,
- -5 + 0.146235,
- 7 + -0.530049,
- 5 + -0.92378,
- 5 + -0.150627,
- 7 + -0.632136,
- 3 + -0.544558,
- -1 + -0.559563,
- -5 + -0.183858,
- -3 + -0.0823922,
- 3 + -0.845123,
- -5 + 0.740183,
- -1 + -0.864943,
- -7 + -0.517753,
- -7 + 0.273158,
- -7 + 0.597718,
- 7 + -0.960088,
- -1 + 0.628689,
- 5 + -0.100486,
- 5 + -0.28978,
- -3 + 0.591832,
- 5 + -0.225949,
- 1 + 0.434438,
- 3 + 0.701275,
- -5 + -0.110868,
- 3 + -0.993528,
- -1 + -0.279674,
- -7 + -0.695508,
- 3 + 0.208776,
- 5 + 0.280286,
- -7 + 0.098819,
- 1 + -0.270841,
- -3 + 0.163315,
- 7 + -0.339504,
- -1 + 0.503129,
- -5 + -0.42331,
- -5 + 0.289597,
- 5 + -0.48842,
- -1 + -0.301035,
- -7 + 0.307344,
- 3 + 0.149469,
- -7 + -0.91815,
- -7 + 0.735915,
- -7 + 0.651662,
- -5 + -0.367747,
- 3 + 0.571618,
- 3 + -0.0886024,
- 7 + -0.287501,
- 3 + -0.332199,
- -3 + 0.103811,
- 1 + 0.281067,
- 1 + -0.380718,
- -1 + 0.343006,
- -7 + -0.940098,
- -3 + 0.722196,
- 5 + 0.874495,
- 1 + 0.990522,
- 3 + -0.915597,
- -5 + -0.278943,
- -7 + 0.203699,
- -5 + 0.170043,
- 7 + 0.536621,
- -5 + 0.824829,
- 5 + -0.832656,
- -7 + 0.333,
- -3 + -0.667407,
- 7 + 0.105231,
- 7 + -0.905234,
- -1 + -0.810245,
- 3 + 0.294136,
- -1 + -0.514902,
- 3 + -0.2467,
- 3 + -0.587121,
- 3 + 0.60538,
- -3 + 0.0694657,
- -5 + 0.0962229,
- 7 + -0.291999,
- -5 + 0.450209,
- 3 + -0.147034,
- -1 + -0.0838816,
- 3 + 0.112086,
- -5 + 0.194085,
- 5 + -0.0903105,
- -7 + -0.919954,
- -5 + -0.967825,
- -1 + -0.441373,
- 5 + 0.768526,
- 5 + 0.38484,
- 3 + -0.947454,
- 5 + -0.262922,
- 7 + -0.593716,
- -3 + 0.219333,
- 3 + 0.076773,
- 7 + 0.192425,
- 1 + 0.970687,
- 7 + -0.00340885,
- 3 + -0.199764,
- -3 + 0.255666,
- -5 + 0.439951,
- 1 + 0.505418,
- 3 + -0.356007,
- 5 + -0.318271,
- -3 + 0.788047,
- 5 + -0.924415,
- -1 + 0.394691,
- 1 + 0.972997,
- 1 + 0.357046,
- 3 + 0.419342,
- -5 + -0.774465,
- -7 + 0.0996104,
- 5 + -0.458399,
- -3 + -0.133173,
- -1 + -0.671463,
- 7 + -0.916153,
- -7 + 0.110461,
- 3 + 0.409689,
- -3 + -0.355372,
- -5 + -0.896134,
- -7 + -0.950039,
- 7 + 0.386037,
- 3 + -0.798405,
- -3 + -0.744455,
- 1 + -0.572819,
- -1 + 0.839239,
- -3 + 0.570676,
- 3 + -0.835377,
- -7 + 0.034378,
- 5 + 0.724415,
- 5 + -0.252927,
- -3 + 0.287315,
- -3 + 0.334237,
- 5 + -0.118203,
- -1 + 0.502825,
- -5 + -0.154511,
- 5 + -0.127665,
- 7 + 0.0817964,
- 1 + 0.132329,
- -5 + -0.546248,
- -3 + 0.874254,
- -3 + 0.421468,
- 3 + -0.928829,
- 5 + 0.620968,
- 7 + 0.0580643,
- -7 + -0.687253,
- -7 + -0.628005,
- 5 + -0.883083,
- -5 + -0.270135,
- 1 + -0.623219,
- -7 + 0.277921,
- 3 + 0.116588,
- -5 + 0.264649,
- -1 + -0.593871,
- -7 + 0.329278,
- -1 + -0.0926952,
- -1 + 0.64349,
- 1 + -0.10689,
- 3 + -0.541441,
- 1 + 0.499186,
- -3 + 0.920398,
- -1 + 0.381933,
- 5 + -0.518618,
- -5 + 0.618314,
- 1 + 0.110954,
- -1 + 0.576074,
- 3 + 0.45385,
- -5 + -0.917242,
- 5 + -0.451152,
- 5 + -0.705703,
- -5 + -0.97524,
- -5 + -0.732996,
- 5 + 0.702813,
- 3 + -0.229341,
- 7 + -0.13257,
- 7 + 0.994484,
- 7 + -0.0231948,
- 5 + 0.538224,
- 1 + -0.838791,
- 7 + 0.848763,
- -7 + -0.539283,
- -3 + 0.321736,
- 5 + 0.22943,
- 1 + -0.626804,
- 5 + 0.209983,
- -5 + 0.977037,
- 3 + 0.448198,
- 5 + -0.419565,
- 7 + 0.666147,
- -7 + 0.412532,
- 7 + -0.0260039,
- 1 + 0.545681,
- 1 + 0.657399,
- -5 + 0.275525,
- 5 + 0.563082,
- 1 + 0.88785,
- -5 + 0.855898,
- -1 + -0.758617,
- -1 + 0.0505126,
- 5 + 0.0387102,
- 5 + 0.574784,
- 1 + 0.1487,
- 7 + -0.234118,
- -1 + 0.458783,
- 5 + -0.798949,
- -7 + -0.300432,
- 3 + -0.455072,
- 1 + 0.24667,
- -3 + 0.034758,
- 1 + -0.491485,
- 1 + 0.27987,
- -5 + -0.92334,
- 1 + 0.486993,
- 5 + -0.624284,
- -3 + 0.259474,
- 3 + 0.384827,
- 7 + -0.744943,
- 3 + 0.669036,
- -7 + -0.171024,
- 1 + -0.963747,
- -3 + -0.457945,
- -1 + -0.271542,
- 3 + -0.642662,
- 5 + 0.867933,
- -7 + 0.872486,
- -5 + -0.0610653,
- -3 + 0.0567537,
- -5 + -0.384634,
- -1 + -0.810843,
- 1 + -0.210336,
- 7 + -0.782186,
- -3 + 0.206301,
- 3 + -0.532726,
- -1 + 0.792476,
- 1 + -0.0254994,
- 1 + -0.38317,
- 5 + -0.444631,
- -3 + 0.202259,
- 7 + 0.906256,
- -5 + -0.283238,
- 1 + 0.761982,
- -1 + 0.456456,
- 7 + -0.213898,
- 7 + -0.98443,
- -7 + -0.984132,
- -3 + -0.549083,
- 7 + 0.946917,
- 1 + -0.817794,
- 3 + -0.902041,
- -7 + 0.667457,
- 7 + 0.476978,
- -1 + 0.864841,
- -1 + -0.100561,
- -1 + 0.589944,
- 1 + -0.417731,
- -5 + -0.291668,
- 3 + -0.341364,
- 1 + -0.116372,
- -5 + -0.678389,
- 5 + -0.621016,
- -7 + -0.557662,
- 5 + -0.916104,
- 1 + 0.416737,
- -3 + -0.397013,
- 3 + -0.767577,
- 1 + 0.340769,
- 7 + -0.54333,
- -5 + 0.825698,
- -7 + -0.0227328,
- 1 + 0.688705,
- -5 + 0.783876,
- -5 + 0.36354,
- 3 + -0.405894,
- -1 + -0.505203,
- 3 + -0.280375,
- -7 + -0.0717587,
- -5 + 0.254936,
- -5 + -0.792482,
- 7 + -0.425804,
- 3 + 0.295604,
- -5 + 0.294844,
- -3 + 0.730185,
- 3 + 0.0271969,
- 5 + -0.303161,
- -3 + 0.883759,
- 3 + 0.827756,
- -7 + 0.450664,
- 5 + 0.435759,
- 3 + 0.360285,
- -7 + 0.409698,
- 1 + 0.230758,
- 7 + -0.352144,
- 1 + -0.389721,
- 7 + -0.718911,
- 3 + 0.41957,
- -3 + 0.620353,
- -7 + 0.254944,
- -1 + 0.81995,
- 3 + -0.280774,
- 3 + 0.906947,
- 7 + -0.349169,
- -1 + -0.00793728,
- -5 + -0.64104,
- -7 + 0.445183,
- 3 + 0.914473,
- 3 + -0.570084,
- -1 + 0.594879,
- -5 + -0.521969,
- 1 + 0.0416743,
- -3 + -0.799298,
- 5 + -0.041766,
- -7 + -0.218755,
- 1 + 0.173665,
- 7 + -0.880771,
- -7 + 0.339146,
- -1 + 0.961946,
- 1 + 0.859441,
- -5 + 0.0599979,
- -3 + -0.243646,
- 1 + 0.642304,
- 5 + 0.427633,
- -3 + 0.337803,
- 5 + -0.876868,
- -5 + 0.124084,
- 7 + -0.390476,
- 5 + -0.889517,
- 7 + -0.0881519,
- -5 + -0.985327,
- -1 + 0.364205,
- -1 + 0.481156,
- 1 + 0.878136,
- 3 + 0.270873,
- -1 + -0.133771,
- 7 + -0.599314,
- 7 + 0.784159,
- 1 + 0.555296,
- 7 + -0.974226,
- 5 + 0.520163,
- -5 + 0.046348,
- -5 + -0.487602,
- 3 + 0.0383354,
- -7 + -0.969134,
- 5 + -0.00830264,
- 5 + 0.582434,
- -5 + 0.498667,
- -5 + 0.0475678,
- 7 + -0.011481,
- -5 + 0.0134767,
- 1 + 0.897857,
- -1 + 0.859261,
- 3 + -0.741447,
- -5 + 0.61813,
- 3 + 0.976057,
- -5 + 0.671342,
- -1 + -0.480269,
- -7 + -0.183415,
- 3 + -0.955847,
- 3 + 0.770801,
- -3 + 0.470981,
- -7 + -0.778816,
- 3 + -0.906343,
- -1 + -0.727997,
- 7 + -0.39431,
- 7 + 0.80919,
- 7 + -0.973433,
- -3 + -0.627311,
- 3 + 0.373299,
- 5 + 0.907636,
- -5 + 0.658848,
- 7 + 0.681815,
- 5 + 0.589045,
- -5 + 0.0950571,
- -7 + 0.112081,
- 5 + 0.34511,
- -3 + 0.315859,
- 5 + -0.181386,
- -3 + -0.714938,
- 1 + 0.308135,
- 7 + 0.535557,
- 7 + -0.0709868,
- -1 + 0.552407,
- -7 + -0.847801,
- 7 + 0.160415,
- 5 + -0.51117,
- 3 + -0.951139,
- -3 + 0.0406191,
- 5 + -0.895575,
- 5 + 0.0746354,
- -3 + 0.915248,
- -3 + 0.842174,
- -7 + 0.595946,
- 3 + 0.700337,
- -3 + -0.23779,
- 3 + -0.655733,
- -5 + -0.894634,
- -3 + -0.695807,
- 5 + -0.476673,
- 7 + -0.279169,
- -5 + 0.507948,
- -5 + 0.499507,
- 3 + 0.0916842,
- 3 + -0.837399,
- -5 + 0.143527,
- 3 + 0.58052,
- -7 + 0.378768,
- 5 + 0.811361,
- -1 + 0.0748057,
- 3 + 0.453959,
- -7 + 0.990606,
- 3 + -0.450379,
- 5 + 0.395584,
- -7 + -0.114441,
- 5 + 0.426232,
- 1 + -0.711673,
- 1 + 0.077825,
- -5 + -0.584918,
- 1 + -0.457057,
- -3 + -0.366392,
- -7 + 0.00484131,
- -3 + 0.215838,
- -3 + -0.19239,
- -5 + 0.300349,
- 5 + 0.925702,
- 7 + 0.693147,
- -3 + -0.771327,
- 7 + 0.850479,
- 7 + 0.55379,
- -5 + -0.622361,
- -7 + -0.797468,
- -1 + 0.865325,
- -1 + 0.594149,
- -3 + 0.402537,
- 3 + 0.5647,
- -5 + 0.408661,
- 7 + 0.434393,
- -5 + 0.369053,
- 7 + 0.193313,
- 7 + 0.0768285,
- -5 + -0.966767,
- 7 + 0.316068,
- 5 + 0.393416,
- -1 + 0.678055,
- -1 + -0.426397,
- 7 + -0.0972791,
- 5 + 0.863534,
- 7 + 0.857534,
- 3 + -0.591288,
- -1 + -0.978807,
- -5 + 0.47735,
- 1 + -0.387742,
- 7 + 0.418231,
- -7 + -0.918646,
- 3 + -0.487032,
- -7 + 0.169229,
- 5 + 0.963037,
- 3 + -0.651308,
- 1 + -0.963926,
- -7 + -0.870113,
- -1 + -0.598625,
- 1 + 0.578904,
- -1 + -0.0948276,
- -5 + 0.227649,
- 1 + 0.555606,
- -1 + -0.668322,
- 1 + 0.0749024,
- -5 + -0.607571,
- 5 + -0.349931,
- -1 + -0.898107,
- 5 + 0.312465,
- 7 + 0.772347,
- 5 + 0.0899041,
- -1 + -0.741034,
- -3 + 0.26158,
- 1 + -0.539694,
- 7 + -0.115106,
- -1 + -0.411724,
- 3 + 0.0316011,
- -7 + -0.810337,
- -5 + 0.181813,
- 5 + 0.318575,
- -5 + -0.176396,
- -1 + -0.639559,
- 1 + 0.966577,
- 7 + -0.685124,
- -3 + -0.036449,
- -5 + -0.456288,
- -1 + 0.80942,
- 1 + -0.842449,
- -7 + 0.390273,
- 3 + -0.931459,
- 5 + 0.693488,
- -7 + 0.247743,
- -3 + -0.848713,
- -3 + 0.137249,
- -7 + -0.213185,
- -7 + -0.755191,
- 7 + -0.639001,
- 5 + 0.91416,
- 5 + -0.193425,
- -5 + 0.80731,
- -1 + -0.716912,
- 5 + -0.503475,
- 5 + -0.0585372,
- 5 + -0.0209306,
- 5 + -0.150028,
- -3 + 0.634776,
- 5 + 0.538764,
- 7 + 0.704398,
- -1 + -0.61061,
- -7 + -0.624288,
- 1 + -0.926651,
- -7 + 0.580724,
- 3 + 0.24162,
- 1 + 0.447202,
- 7 + -0.76537,
- 7 + -0.753749,
- 7 + -0.93289,
- 7 + 0.570568,
- -1 + 0.901893,
- -1 + -0.297356,
- 5 + -0.189813,
- -3 + 0.21001,
- -3 + 0.541859,
- -5 + -0.73421,
- 7 + 0.928552,
- -7 + -0.355678,
- -5 + -0.221657,
- -5 + -0.0512875,
- 3 + -0.298442,
- -1 + -0.820576,
- 7 + -0.771328,
- 1 + -0.961217,
- 5 + -0.161851,
- -1 + -0.405209,
- 3 + -0.662432,
- -3 + 0.528404,
- 1 + -0.226934,
- -3 + 0.0363932,
- 7 + 0.886687,
- 3 + 0.393918,
- -5 + -0.507128,
- 1 + -0.189558,
- -7 + -0.823271,
- 7 + -0.180617,
- -1 + 0.321553,
- -1 + 0.989206,
- -7 + -0.874277,
- 1 + -0.113906,
- 7 + 0.161257,
- 3 + 0.670416,
- -3 + -0.763578,
- -1 + 0.424893,
- 3 + -0.0447045,
- -5 + -0.957789,
- -1 + 0.196626,
- -5 + 0.00535004,
- 3 + 0.254757,
- -7 + -0.927024,
- 3 + -0.959979,
- 1 + -0.949363,
- -5 + 0.674222,
- 1 + -0.848884,
- -7 + 0.0919615,
- 1 + -0.58394,
- -1 + -0.515551,
- -7 + -0.961024,
- 7 + -0.978422,
- 7 + 0.86705,
- 7 + -0.323448,
- -5 + -0.916549,
- -3 + -0.512443,
- -3 + -0.892435,
- -1 + 0.0811992,
- 7 + -0.1951,
- 1 + -0.31832,
- 7 + 0.389861,
- -7 + -0.429737,
- 7 + 0.14079,
- -7 + -0.306634,
- 1 + -0.0533624,
- 1 + -0.438584,
- -7 + -0.63111,
- -7 + -0.559344,
- -5 + 0.783094,
- -7 + -0.735777,
- 7 + -0.58636,
- -7 + -0.116192,
- -5 + -0.801831,
- -5 + 0.969511,
- -5 + 0.144718,
- -5 + 0.363059,
- -1 + -0.667404,
- 3 + -0.134134,
- -1 + 0.734085,
- 5 + -0.165216,
- 1 + 0.149468,
- -5 + -0.15301,
- -3 + 0.83035,
- -3 + -0.27281,
- -1 + 0.688733,
- 5 + -0.406828,
- -5 + -0.018298,
- 5 + 0.219722,
- -5 + 0.840822,
- -7 + 0.256695,
- -1 + -0.300632,
- -5 + 0.403999,
- -5 + 0.574885,
- -3 + -0.92988,
- 1 + -0.837794,
- 3 + 0.510347,
- 1 + 0.946242,
- 1 + -0.558269,
- 7 + -0.945935,
- -7 + -0.106771,
- 3 + -0.383966,
- -5 + 0.370004,
- -7 + 0.428693,
- 5 + 0.936122,
- 1 + -0.782085,
- -7 + 0.528864,
- 1 + 0.697761,
- -7 + -0.681381,
- -5 + 0.152231,
- 5 + -0.900638,
- 5 + -0.334353,
- 1 + 0.862458,
- -5 + -0.694343,
- -7 + -0.938721,
- -5 + 0.119729,
- -7 + -0.874769,
- -5 + -0.120494,
- -3 + 0.506938,
- 5 + 0.965172,
- -1 + -0.888394,
- -3 + -0.595798,
- -5 + 0.802503,
- -3 + -0.789257,
- -3 + 0.351862,
- 3 + -0.750966,
- -1 + 0.584273,
- -3 + -0.0831131,
- -7 + -0.28384,
- -3 + 0.806411,
- 7 + -0.200101,
- 3 + 0.640918,
- -1 + 0.977479,
- 1 + 0.865009,
- -3 + -0.368203,
- 7 + 0.556652,
- -1 + -0.991885,
- -5 + 0.332904,
- 3 + 0.470344,
- -7 + 0.205081,
- -7 + -0.314842,
- -3 + -0.62,
- 3 + 0.34363,
- 1 + -0.425907,
- -7 + -0.702084,
- -3 + -0.288143,
- -7 + 0.243932,
- -1 + 0.0855131,
- -5 + -0.139345,
- 3 + -0.959163,
- 3 + 0.431497,
- -7 + 0.261823,
- -3 + 0.914225,
- -1 + 0.325961,
- 3 + -0.359881,
- 7 + -0.468639,
- 7 + -0.803865,
- -1 + 0.343444,
- 1 + 0.736499,
- 5 + 0.382909,
- -1 + -0.721058,
- -1 + -0.823382,
- 3 + -0.176144,
- 5 + 0.251272,
- -1 + -0.786581,
- -5 + 0.273133,
- 7 + -0.41622,
- 3 + 0.121719,
- 7 + 0.620911,
- -1 + 0.237504,
- 1 + -0.335624,
- -7 + 0.42324,
- -3 + 0.729575,
- -7 + -0.723781,
- 3 + 0.273075,
- 3 + -0.229695,
- 3 + 0.507748,
- -5 + 0.294614,
- -7 + -0.490011,
- 3 + 0.297713,
- -3 + -0.330685,
- -7 + 0.441233,
- 5 + -0.622061,
- 5 + -0.208099,
- 5 + -0.710362,
- -1 + 0.154774,
- -5 + 0.486696,
- 5 + -0.168477,
- 7 + -0.653855,
- 7 + -0.0172002,
- -1 + -0.1059,
- 3 + 0.654305,
- 1 + -0.459053,
- 7 + 0.751362,
- 7 + 0.407269,
- 7 + 0.871658,
- 7 + 0.654213,
- 7 + 0.0624889,
- 7 + -0.583527,
- 1 + -0.252231,
- 1 + -0.320237,
- 5 + -0.0136125,
- 7 + -0.729181,
- -5 + -0.0353086,
- 5 + -0.0951113,
- 3 + -0.0836304,
- -1 + -0.11923,
- 7 + 0.962136,
- -5 + -0.830669,
- 1 + 0.29644,
- 5 + 0.045498,
- 1 + 0.76292,
- -5 + -0.929796,
- 5 + -0.083544,
- -7 + 0.472663,
- 7 + -0.746787,
- 3 + 0.662228,
- -5 + -0.41748,
- -7 + 0.850784,
- -7 + -0.130054,
- -1 + 0.432904,
- 7 + -0.787268,
- -3 + -0.248262,
- 5 + 0.406222,
- 5 + -0.775207,
- 7 + -0.0549824,
- -1 + 0.930082,
- -3 + 0.651628,
- -7 + -0.373963,
- 7 + -0.38767,
- -5 + -0.199335,
- 3 + -0.0845591,
- -3 + -0.400573,
- -1 + -0.423932,
- 3 + 0.496079,
- 3 + -0.0049753,
- 5 + -0.937373,
- -1 + 0.00805519,
- 7 + -0.387026,
- -7 + 0.379173,
- 3 + -0.509631,
- -3 + 0.0652572,
- -7 + 0.292195,
- -3 + -0.0630124,
- -3 + 0.210706,
- -7 + 0.0474516,
- -3 + 0.088253,
- 5 + -0.729131,
- -1 + -0.118407,
- 5 + 0.587638,
- -7 + 0.963741,
- -3 + 0.912494,
- -7 + 0.723939,
- 5 + 0.977461,
- 3 + 0.230908,
- -7 + 0.0875093,
- -5 + 0.827526,
- 7 + -0.821136,
- -3 + 0.402932,
- -7 + 0.441547,
- 7 + 0.416953,
- 5 + 0.70044,
- 3 + 0.973559,
- 3 + 0.407091,
- -5 + -0.826277,
- 3 + -0.389221,
- 5 + -0.583906,
- 1 + -0.0841909,
- -7 + 0.530444,
- -1 + -0.918261,
- 3 + -0.638232,
- 1 + -0.776938,
- -7 + 0.706762,
- -1 + 0.16429,
- -7 + -0.306863,
- -3 + -0.670615,
- 1 + -0.819745,
- 1 + -0.014878,
- -3 + 0.178679,
- 1 + 0.441678,
- -1 + -0.193108,
- -3 + -0.33399,
- 5 + 0.275276,
- -7 + 0.167054,
- -5 + 0.134306,
- 7 + -0.394252,
- 3 + 0.941986,
- -7 + -0.878877,
- -5 + 0.770656,
- -5 + 0.730814,
- -1 + 0.143592,
- -3 + 0.442492,
- -1 + -0.712593,
- 5 + 0.599122,
- 1 + 0.263907,
- -7 + 0.47737,
- -7 + 0.0559669,
- -3 + 0.208639,
- 1 + 0.827161,
- 1 + 0.886639,
- 1 + 0.598246,
- -7 + -0.191541,
- 3 + 0.511962,
- 3 + -0.645528,
- 1 + -0.593154,
- -5 + 0.52999,
- 5 + -0.653963,
- 1 + 0.574099,
- -5 + -0.0896155,
- 1 + -0.636268,
- 7 + 0.343794,
- -7 + 0.155548,
- -1 + -0.121609,
- -1 + -0.297629,
- -5 + -0.468962,
- 5 + -0.555227,
- -1 + -0.296793,
- -3 + -0.855934,
- 7 + -0.739775,
- 1 + -0.756048,
- 1 + -0.46236,
- -7 + -0.179736,
- 3 + 0.125628,
- 1 + 0.10038,
- -5 + -0.380856,
- 7 + 0.450066,
- 7 + 0.959734,
- -3 + 0.796831,
- -1 + 0.23315,
- -3 + 0.298099,
- -5 + -0.383893,
- -3 + -0.296636,
- -5 + 0.138614,
- 1 + -0.114746,
- 7 + 0.555051,
- 1 + -0.950471,
- -1 + 0.124465,
- 1 + 0.037862,
- 1 + 0.719934,
- 7 + -0.0167727,
- -7 + -0.983453,
- -5 + -0.418557,
- 7 + -0.192828,
- 7 + -0.0814223,
- 1 + 0.224621,
- 5 + -0.597524,
- 5 + 0.415634,
- 1 + -0.954608,
- -3 + 0.227498,
- -5 + -0.108549,
- 7 + 0.0881721,
- 3 + 0.845206,
- 3 + -0.913562,
- -7 + 0.24586,
- -7 + 0.289418,
- -1 + 0.194941,
- 3 + 0.793157,
- 7 + -0.434518,
- -7 + 0.820917,
- 5 + 0.2382,
- 5 + -0.946464,
- 1 + 0.686291,
- 3 + -0.265611,
- -1 + -0.215793,
- 1 + 0.247293,
- 3 + 0.370775,
- -1 + -0.1934,
- 5 + 0.306202,
- 5 + -0.454743,
- -1 + -0.529622,
- 1 + 0.856026,
- -5 + -0.672594,
- -5 + -0.429688,
- 7 + -0.898493,
- 3 + -0.296784,
- -7 + -0.839249,
- 7 + -0.238149,
- -3 + 0.87197,
- 7 + -0.985437,
- -3 + 0.243879,
- 1 + -0.0590569,
- -7 + 0.3087,
- -7 + -0.415904,
- -3 + 0.238146,
- -3 + -0.00380364,
- 7 + -0.524692,
- -1 + 0.715206,
- -1 + -0.382632,
- 7 + -0.433315,
- -3 + 0.671116,
- 5 + 0.319951,
- -5 + -0.467809,
- 1 + -0.914862,
- -1 + -0.848039,
- -7 + 0.916399,
- -3 + 0.158824,
- -7 + 0.432194,
- 5 + 0.939947,
- -3 + -0.938313,
- -1 + 0.111712,
- 1 + -0.830159,
- -1 + 0.269145,
- -3 + -0.282773,
- -7 + 0.397815,
- -7 + 0.312644,
- 7 + 0.101858,
- 5 + 0.398991,
- 7 + 0.931748,
- 5 + -0.216404,
- 5 + -0.739909,
- -3 + 0.837449,
- 5 + -0.292918,
- 3 + -0.811216,
- 3 + -0.54535,
- 3 + -0.206546,
- 7 + 0.287012,
- 5 + 0.416343,
- -7 + 0.226965,
- 3 + 0.650639,
- 7 + -0.513567,
- 3 + 0.35494,
- 7 + 0.251297,
- 3 + 0.222854,
- -3 + 0.631017,
- 1 + -0.834925,
- -5 + 0.302606,
- 5 + -0.161238,
- -1 + -0.717755,
- -1 + 0.163733,
- 7 + 0.683634,
- -3 + -0.0890416,
- 5 + -0.0241376,
- -7 + -0.331885,
- -1 + -0.566607,
- 5 + -0.0680727,
- -1 + 0.69374,
- -5 + -0.441671,
- 3 + -0.917287,
- 5 + -0.447226,
- 5 + 0.530121,
- 3 + -0.393156,
- 7 + -0.625747,
- 1 + 0.660945,
- 1 + 0.0093144,
- 7 + -0.198812,
- 5 + 0.442133,
- 1 + -0.569587,
- -1 + 0.969233,
- -3 + 0.831887,
- 7 + -0.129281,
- -5 + 0.790104,
- -3 + -0.329582,
- 3 + -0.846209,
- 5 + 0.921283,
- 5 + 0.0625507,
- -3 + 0.292014,
- -5 + 0.833173,
- -7 + -0.674783,
- -3 + -0.846611,
- 1 + 0.893338,
- -7 + 0.983207,
- -7 + -0.776993,
- -7 + 0.250987,
- -5 + 0.0683537,
- 7 + -0.183423,
- 1 + -0.0923144,
- 3 + 0.316882,
- 3 + 0.436083,
- -1 + 0.561959,
- 5 + 0.199397,
- 3 + 0.998894,
- -5 + -0.762317,
- 1 + -0.264652,
- -1 + 0.000935957,
- -5 + -0.737429,
- 5 + -0.449802,
- -3 + -0.153005,
- -7 + -0.825486,
- -3 + 0.381528,
- -3 + -0.834704,
- 1 + -0.869081,
- -5 + 0.658949,
- -7 + 0.538412,
- 1 + -0.274676,
- -3 + -0.131948,
- -5 + -0.89239,
- 5 + -0.216419,
- 5 + 0.0464617,
- -5 + -0.202859,
- -5 + 0.937449,
- 5 + 0.424624,
- 1 + 0.22882,
- 7 + 0.683182,
- 1 + -0.649762,
- 3 + -0.764787,
- 7 + -0.573145,
- -5 + 0.304541,
- 3 + 0.3929,
- -7 + -0.210616,
- -3 + 0.373165,
- -7 + -0.21229,
- -7 + 0.897832,
- -7 + 0.909656,
- 1 + 0.948898,
- 3 + -0.42523,
- 3 + 0.567772,
- -3 + -0.527982,
- 3 + -0.189502,
- 5 + 0.970517,
- 7 + 0.282051,
- -3 + 0.430664,
- 3 + -0.793949,
- -7 + 0.545716,
- -3 + 0.35154,
- -3 + -0.821351,
- 5 + -0.395689,
- -5 + -0.620034,
- 5 + -0.608408,
- -3 + 0.94029,
- -1 + 0.0666049,
- 5 + -0.51607,
- 1 + 0.991041,
- 7 + 0.172753,
- 5 + -0.0221328,
- 5 + -0.193889,
- -5 + -0.13076,
- 3 + 0.138734,
- 3 + 0.59089,
- 3 + -0.887206,
- -3 + 0.845891,
- -1 + -0.347074,
- 5 + -0.0834612,
- 3 + -0.876824,
- -1 + -0.810422,
- -1 + -0.231434,
- 1 + -0.239487,
- -5 + 0.0323537,
- 1 + -0.581238,
- 5 + 0.00602403,
- 5 + 0.0905542,
- 3 + 0.498012,
- -5 + 0.254225,
- 3 + 0.314102,
- 5 + 0.0299345,
- 5 + -0.45939,
- -1 + 0.448653,
- -3 + 0.647585,
- 1 + 0.318478,
- 5 + 0.455767,
- -1 + 0.133022,
- 1 + 0.614847,
- 1 + 0.120892,
- -5 + 0.224634,
- 5 + 0.132055,
- -1 + 0.743952,
- -5 + 0.425553,
- 5 + -0.111105,
- 1 + 0.174118,
- 1 + 0.221772,
- -7 + -0.845315,
- -3 + 0.19196,
- 7 + -0.840461,
- 5 + -0.129635,
- 1 + -0.596764,
- 3 + -0.955832,
- 1 + 0.585824,
- 5 + 0.0742671,
- 5 + -0.517633,
- -1 + 0.48289,
- 7 + 0.0644312,
- 1 + -0.795109,
- -7 + -0.782286,
- -1 + 0.0230929,
- 1 + -0.718512,
- -1 + 0.764088,
- 5 + 0.510258,
- -5 + 0.657883,
- -7 + -0.345766,
- -3 + 0.430414,
- 5 + 0.0833478,
- -5 + -0.264892,
- 3 + 0.710985,
- 1 + 0.150336,
- 5 + -0.861506,
- 3 + -0.0429562,
- -1 + 0.434927,
- 7 + 0.815823,
- -5 + -0.824405,
- 7 + -0.262346,
- -7 + -0.164051,
- -5 + -0.646918,
- 3 + -0.147091,
- 3 + 0.13859,
- -1 + -0.575533,
- -3 + 0.103353,
- -5 + 0.992246,
- -1 + -0.611302,
- 7 + -0.0318776,
- 1 + 0.460203,
- -3 + 0.548152,
- -7 + 0.0172631,
- -3 + -0.485489,
- -7 + -0.980713,
- -7 + -0.827265,
- -1 + -0.864176,
- -7 + 0.851271,
- 7 + -0.466744,
- -7 + 0.436088,
- -3 + 0.576107,
- -7 + -0.637538,
- 7 + 0.655137,
- 5 + -0.826798,
- -5 + 0.848056,
- 3 + 0.666798,
- -1 + -0.180115,
- 7 + 0.419637,
- 5 + -0.0167801,
- 3 + -0.68837,
- 3 + 0.946745,
- 3 + -0.0950071,
- -7 + -0.827281,
- -1 + 0.78343,
- -5 + -0.582113,
- 7 + 0.299523,
- 1 + -0.488113,
- 5 + -0.341736,
- 7 + 0.530617,
- 7 + -0.326339,
- -7 + -0.817531,
- -3 + -0.221869,
- -5 + 0.416757,
- 1 + 0.506333,
- 1 + -0.2654,
- 7 + 0.763487,
- -5 + -0.943085,
- 7 + 0.791527,
- -5 + 0.0668543,
- -7 + 0.938847,
- -3 + 0.143887,
- -3 + 0.381707,
- -3 + 0.19505,
- -3 + -0.920517,
- -5 + 0.145063,
- -5 + 0.237513,
- -7 + -0.120207,
- -7 + -0.0991134,
- -5 + 0.0680013,
- 1 + -0.0638738,
- 5 + 0.970159,
- 5 + 0.213576,
- 1 + -0.263613,
- -7 + -0.544301,
- -5 + -0.828692,
- -5 + 0.166918,
- -5 + -0.761728,
- 5 + 0.120694,
- 5 + 0.903705,
- -5 + 0.211521,
- 3 + 0.290967,
- 7 + -0.464751,
- -7 + 0.186847,
- 7 + 0.32524,
- -7 + 0.111797,
- 1 + -0.788556,
- 1 + -0.14745,
- -3 + -0.968889,
- 3 + -0.37981,
- 5 + 0.00729347,
- 7 + 0.504821,
- 1 + -0.961113,
- 3 + 0.710415,
- -5 + -0.613475,
- 5 + -0.895771,
- -1 + -0.895503,
- 5 + -0.461719,
- 5 + 0.0161815,
- -5 + -0.24625,
- -7 + -0.572922,
- -1 + -0.459816,
- 7 + -0.419624,
- -5 + 0.696952,
- -5 + 0.927165,
- -5 + 0.243638,
- 7 + 0.360799,
- 3 + 0.347879,
- -3 + -0.0232377,
- 3 + 0.712201,
- -1 + 0.759489,
- -7 + 0.438561,
- -7 + -0.572822,
- 1 + -0.737766,
- 3 + 0.0680258,
- -1 + 0.686509,
- 5 + -0.262713,
- -5 + -0.79966,
- 5 + -0.236232,
- -7 + -0.0260004,
- -7 + 0.218216,
- -3 + 0.370607,
- 3 + 0.816354,
- 7 + 0.452291,
- -3 + -0.822625,
- 3 + 0.848817,
- 7 + 0.365835,
- 1 + -0.676283,
- 1 + -0.0594598,
- -5 + 0.521534,
- 1 + -0.486592,
- 7 + -0.986362,
- -7 + 0.0779941,
- -3 + -0.08751,
- 7 + -0.491647,
- 7 + -0.270531,
- -1 + -0.204778,
- 1 + -0.231377,
- -7 + -0.469895,
- -1 + -0.844354,
- -7 + -0.264911,
- -1 + -0.1599,
- -7 + -0.44972,
- -1 + 0.194789,
- 1 + -0.104809,
- 3 + -0.228419,
- -7 + -0.803297,
- -7 + 0.625464,
- -1 + -0.352292,
- -1 + -0.755153,
- -1 + -0.67635,
- 7 + 0.297913,
- 5 + 0.57017,
- 5 + -0.173484,
- 5 + 0.668881,
- 1 + 0.277459,
- -3 + -0.784868,
- 5 + -0.499577,
- 3 + -0.10745,
- 7 + 0.92074,
- -3 + -0.987991,
- 7 + 0.915782,
- 3 + -0.98239,
- 1 + -0.781632,
- -5 + 0.853114,
- 5 + -0.13405,
- -5 + 0.870097,
- 7 + -0.696323,
- 7 + -0.94934,
- -3 + -0.398685,
- -7 + 0.869119,
- -5 + -0.903581,
- -7 + 0.131423,
- -3 + 0.834563,
- 7 + 0.143985,
- 3 + 0.145958,
- -3 + 0.536994,
- -5 + -0.691582,
- 5 + 0.556042,
- 7 + -0.58014,
- -5 + -0.103551,
- -1 + 0.15221,
- 3 + -0.757364,
- -5 + 0.580815,
- 5 + 0.852026,
- -7 + -0.470408,
- -3 + 0.0561844,
- 5 + -0.515549,
- 1 + 0.173103,
- -3 + -0.168945,
- 5 + -0.762956,
- -3 + 0.793081,
- -1 + -0.676991,
- 3 + 0.665824,
- 5 + 0.121066,
- -5 + 0.731384,
- -5 + 0.671191,
- -7 + -0.175862,
- -7 + 0.486734,
- 5 + 0.163906,
- -3 + -0.529629,
- -3 + -0.741516,
- -5 + 0.780671,
- -7 + -0.230291,
- -3 + 0.302234,
- 7 + -0.987584,
- -7 + 0.429419,
- 7 + -0.123349,
- -3 + -0.693596,
- 1 + 0.156304,
- -7 + -0.070418,
- -5 + 0.939389,
- 3 + -0.282077,
- 7 + -0.461724,
- -7 + -0.266467,
- -3 + 0.973726,
- 5 + 0.324534,
- 1 + 0.798357,
- -3 + -0.225007,
- -3 + 0.326469,
- 1 + 0.217389,
- -7 + 0.771884,
- 1 + -0.448262,
- 1 + 0.834186,
- 5 + -0.8447,
- 7 + 0.265382,
- 7 + 0.882236,
- 7 + 0.951853,
- 3 + -0.212489,
- 7 + -0.900493,
- -1 + 0.827988,
- 5 + -0.96957,
- 5 + -0.794382,
- 1 + -0.360357,
- -7 + 0.686111,
- -5 + -0.770717,
- -3 + 0.777591,
- 1 + -0.164214,
- -1 + 0.85202,
- -1 + -0.838606,
- 5 + 0.727194,
- 3 + 0.628267,
- 3 + 0.94657,
- 3 + 0.664833,
- -1 + -0.545169,
- 1 + -0.791937,
- 5 + -0.863989,
- 1 + -0.433051,
- 7 + 0.604505,
- -5 + 0.469176,
- 5 + 0.521661,
- 5 + -0.652277,
- 5 + -0.956757,
- -1 + 0.179364,
- 3 + 0.0835185,
- 5 + 0.379708,
- -5 + -0.00418501,
- -3 + 0.802623,
- -1 + 0.127959,
- 3 + 0.740128,
- 7 + 0.0877058,
- -3 + -0.644691,
- -7 + 0.803557,
- -3 + 0.35763,
- 7 + -0.896354,
- 5 + -0.985988,
- -5 + -0.475576,
- -7 + -0.837911,
- -5 + 0.399102,
- -1 + 0.180557,
- 7 + -0.257409,
- -3 + 0.748304,
- 1 + 0.488153,
- 1 + -0.528074,
- -7 + -0.568786,
- -1 + -0.209861,
- 7 + 0.758874,
- -7 + 0.690599,
- -5 + 0.29666,
- -7 + 0.14263,
- -5 + -0.580595,
- -5 + 0.436222,
- -7 + -0.230854,
- 1 + -0.0199466,
- 7 + 0.0582533,
- 1 + -0.241347,
- -7 + 0.120772,
- -5 + 0.158568,
- -7 + 0.590528,
- 1 + 0.26066,
- 7 + 0.696681,
- -3 + 0.343628,
- -1 + -0.341235,
- -1 + 0.426748,
- -5 + -0.39029,
- -3 + 0.0793041,
- -1 + 0.240872,
- -7 + -0.986816,
- 5 + -0.546091,
- 7 + -0.435825,
- -5 + 0.631116,
- 5 + 0.793044,
- -3 + -0.219459,
- 7 + 0.140597,
- 5 + 0.447243,
- 1 + -0.968491,
- 5 + 0.843524,
- -5 + -0.860415,
- 5 + -0.620946,
- 1 + -0.41902,
- 7 + -0.81125,
- 5 + 0.753432,
- -3 + -0.727435,
- -1 + -0.141588,
- -3 + -0.551413,
- -5 + 0.381663,
- 5 + -0.0711982,
- -5 + 0.390526,
- 1 + 0.783724,
- -7 + 0.573399,
- -3 + -0.939007,
- -7 + 0.238314,
- -1 + -0.521158,
- 5 + 0.779281,
- -7 + -0.53298,
- 3 + 0.21555,
- 3 + 0.482487,
- 7 + -0.514751,
- -1 + -0.800237,
- 1 + -0.764197,
- -3 + 0.647617,
- 7 + 0.0499004,
- -5 + 0.979748,
- -3 + 0.67735,
- -7 + 0.183253,
- -5 + 0.362151,
- 5 + -0.545888,
- 3 + 0.771438,
- -3 + 0.255733,
- -7 + 0.115492,
- 3 + 0.469995,
- -1 + 0.129762,
- 3 + -0.767167,
- -1 + 0.59735,
- -7 + 0.999858,
- -5 + -0.412252,
- -5 + -0.240744,
- -7 + -0.94988,
- 7 + -0.533656,
- 3 + 0.842152,
- 5 + -0.0103345,
- 7 + 0.0454008,
- 3 + 0.333439,
- 3 + -0.456548,
- -3 + -0.295064,
- 1 + -0.0291067,
- 3 + -0.980701,
- 5 + 0.0998633,
- -7 + -0.236756,
- -1 + -0.209321,
- 3 + -0.238139,
- -1 + 0.873939,
- 3 + -0.723713,
- -5 + 0.814455,
- 3 + 0.679885,
- -5 + -0.309287,
- 1 + 0.911921,
- -5 + -0.330781,
- 5 + 0.780826,
- 1 + 0.715838,
- 3 + -0.334343,
- -1 + 0.986761,
- -1 + -0.439617,
- -3 + -0.590452,
- 1 + -0.263775,
- 7 + 0.667562,
- -5 + -0.76034,
- -5 + 0.362745,
- 1 + -0.472352,
- -7 + 0.206034,
- -3 + 0.376895,
- 5 + 0.551758,
- -3 + 0.0431443,
- 5 + -0.310862,
- -3 + -0.430074,
- 5 + 0.275111,
- 7 + -0.912242,
- 5 + -0.535872,
- 3 + 0.320622,
- 3 + 0.381784,
- 5 + 0.39575,
- -5 + 0.419947,
- -1 + 0.632249,
- 7 + 0.699329,
- 5 + -0.53677,
- -7 + 0.160241,
- 5 + -0.293807,
- -5 + 0.291076,
- -5 + 0.691705,
- 1 + 0.759055,
- 3 + -0.907042,
- -5 + -0.23742,
- -1 + -0.718808,
- -3 + 0.324324,
- -5 + 0.768603,
- -1 + -0.765854,
- 3 + -0.270759,
- -3 + -0.780064,
- 7 + 0.530695,
- 5 + -0.923683,
- -1 + -0.209208,
- 5 + -0.3521,
- 7 + -0.81082,
- 7 + -0.472168,
- 7 + 0.56371,
- 5 + -0.87698,
- 3 + -0.0658053,
- -3 + 0.646983,
- 1 + -0.603423,
- 7 + 0.458566,
- 7 + 0.32752,
- -7 + 0.852152,
- 1 + 0.996179,
- -1 + 0.686456,
- -3 + -0.484814,
- 5 + -0.675017,
- 5 + -0.458211,
- 3 + -0.984357,
- -1 + 0.266912,
- -7 + -0.589247,
- -5 + 0.082882,
- -5 + -0.885084,
- -3 + -0.560765,
- 5 + -0.942018,
- 7 + 0.572901,
- 7 + -0.171902,
- -3 + 0.895929,
- -7 + -0.655681,
- 5 + -0.029179,
- 1 + -0.978318,
- 1 + -0.0494022,
- -3 + 0.315903,
- -7 + -0.249841,
- 7 + -0.960858,
- -3 + 0.444645,
- 3 + -0.725221,
- -1 + -0.250617,
- 5 + 0.072717,
- 3 + -0.348692,
- -7 + 0.465731,
- 7 + 0.770554,
- -1 + 0.161133,
- 3 + 0.0440529,
- -1 + -0.245592,
- -1 + -0.286838,
- 1 + 0.710223,
- 7 + -0.744359,
- -7 + 0.754745,
- -3 + 0.268595,
- -7 + -0.952184,
- 5 + -0.12754,
- 1 + -0.113531,
- 3 + -0.965244,
- 3 + -0.295564,
- 5 + -0.589246,
- -5 + 0.901493,
- 7 + 0.499927,
- -1 + 0.205479,
- -1 + 0.799496,
- 7 + 0.159986,
- 1 + 0.0494691,
- 5 + 0.414586,
- 1 + 0.160234,
- 5 + -0.754135,
- 7 + 0.533292,
- 3 + 0.20959,
- -3 + 0.265984,
- -1 + -0.596171,
- -3 + 0.59227,
- -5 + 0.809165,
- -3 + 0.731077,
- -5 + 0.77249,
- -3 + 0.114624,
- 7 + -0.612689,
- -3 + -0.226237,
- -1 + -0.491637,
- 5 + -0.902752,
- 7 + -0.340862,
- 7 + -0.764615,
- 1 + 0.361337,
- 5 + 0.907293,
- -1 + -0.207671,
- -7 + 0.749045,
- 7 + -0.736116,
- 7 + 0.331618,
- -5 + -0.0821605,
- 3 + -0.784978,
- 3 + -0.962937,
- 5 + 0.0240877,
- -7 + -0.357058,
- 7 + 0.582812,
- -1 + 0.300038,
- 3 + 0.442207,
- 1 + 0.311886,
- 1 + -0.0907658,
- -3 + -0.190202,
- 3 + 0.752307,
- -5 + 0.110897,
- -3 + -0.130689,
- 3 + 0.604778,
- -5 + 0.832513,
- -5 + 0.20769,
- 1 + 0.918947,
- 7 + 0.635097,
- -3 + -0.250696,
- -5 + -0.673562,
- -7 + 0.188827,
- -7 + 0.859836,
- -5 + -0.553663,
- -1 + -0.693482,
- -3 + -0.0370091,
- -5 + -0.945403,
- -3 + -0.0942642,
- 5 + -0.788987,
- 7 + 0.130865,
- -3 + -0.0568169,
- 1 + 0.469934,
- -3 + 0.236228,
- -3 + 0.969961,
- -7 + 0.777844,
- -1 + -0.863909,
- 1 + -0.0100366,
- 3 + -0.901984,
- 7 + -0.188674,
- -3 + -0.0859814,
- -7 + 0.289988,
- -5 + 0.216434,
- 5 + 0.373371,
- -3 + 0.756403,
- -3 + -0.327696,
- -1 + 0.500791,
- 5 + 0.577182,
- 1 + 0.846249,
- 7 + -0.851769,
- -7 + 0.957447,
- -3 + -0.351796,
- -1 + -0.985339,
- -7 + -0.840053,
- 7 + -0.911335,
- 3 + 0.856743,
- 3 + -0.901107,
- 3 + -0.966849,
- 7 + -0.885129,
- -5 + -0.284155,
- 7 + -0.344691,
- -5 + 0.355503,
- 7 + 0.752017,
- 5 + -0.243656,
- 3 + -0.928544,
- 5 + 0.782105,
- -7 + -0.759649,
- 1 + -0.0744518,
- -3 + 0.609258,
- 5 + -0.125631,
- 5 + 0.25112,
- -7 + -0.339128,
- 7 + 0.412046,
- -5 + 0.555857,
- 7 + -0.635087,
- 7 + 0.516426,
- -1 + 0.74659,
- 3 + 0.969918,
- -1 + 0.436694,
- -5 + 0.0135384,
- -3 + 0.340553,
- 1 + -0.333334,
- 5 + -0.401135,
- 3 + 0.217065,
- 5 + -0.585701,
- 7 + 0.283774,
- 1 + 0.436392,
- 7 + 0.636664,
- 5 + -0.0233952,
- 5 + 0.966634,
- -5 + 0.792896,
- 5 + 0.946402,
- -1 + -0.831078,
- -7 + -0.944117,
- 7 + 0.832928,
- -3 + -0.37542,
- -7 + -0.951767,
- -7 + -0.414159,
- 3 + -0.440777,
- 5 + -0.591346,
- -3 + -0.942129,
- 1 + -0.475855,
- -1 + -0.452418,
- -7 + 0.0502203,
- -1 + -0.715986,
- 5 + -0.39207,
- -1 + 0.00692897,
- 1 + -0.305166,
- -3 + -0.469096,
- -1 + 0.214434,
- -7 + 0.0882326,
- -7 + -0.311931,
- 7 + 0.289892,
- 5 + 0.529032,
- -3 + 0.543897,
- -7 + 0.734108,
- 5 + 0.760244,
- 7 + -0.921361,
- -7 + -0.499923,
- 5 + 0.932586,
- 3 + -0.492252,
- -5 + 0.29961,
- 3 + 0.40997,
- 1 + 0.607012,
- -1 + 0.0977883,
- 7 + -0.666918,
- 1 + 0.092606,
- -3 + 0.48582,
- -7 + -0.413194,
- -1 + 0.657655,
- 7 + -0.790176,
- 3 + -0.79396,
- 5 + -0.401432,
- 3 + 0.241941,
- -7 + -0.0372352,
- 1 + -0.422785,
- -7 + 0.412112,
- 3 + -0.649941,
- 5 + -0.885332,
- -1 + 0.918587,
- 5 + 0.580861,
- 5 + -0.56943,
- 7 + -0.313623,
- 1 + 0.508329,
- -7 + -0.311971,
- -1 + 0.384163,
- 7 + -0.407872,
- 5 + 0.252608,
- -5 + -0.748733,
- 7 + -0.766854,
- 7 + 0.963027,
- 7 + 0.370056,
- 7 + 0.91614,
- 5 + -0.10655,
- 5 + 0.114024,
- 3 + 0.6354,
- -3 + 0.526766,
- -3 + 0.0656808,
- -1 + 0.273656,
- 3 + -0.518891,
- 5 + 0.602608,
- -3 + 0.14799,
- -5 + -0.304276,
- 5 + 0.282315,
- -5 + 0.525241,
- 3 + 0.917138,
- 1 + -0.407829,
- 1 + 0.148744,
- 7 + 0.374387,
- 1 + 0.719541,
- 5 + -0.845279,
- -7 + -0.271885,
- -3 + 0.498453,
- -3 + -0.108517,
- 7 + -0.916167,
- 1 + -0.00524844,
- 3 + 0.230628,
- 1 + 0.928817,
- 5 + 0.961846,
- 3 + -0.970376,
- -5 + -0.991187,
- 1 + -0.988078,
- -3 + -0.321644,
- 7 + 0.299365,
- -1 + 0.260651,
- -5 + 0.901838,
- -7 + 0.905185,
- -7 + -0.998068,
- -1 + -0.717301,
- 3 + -0.448447,
- -5 + 0.853505,
- 1 + 0.691012,
- -5 + 0.858187,
- -7 + 0.744305,
- -1 + -0.546463,
- -5 + 0.0513083,
- -5 + 0.113148,
- 1 + 0.753596,
- -1 + 0.453985,
- 1 + -0.558975,
- -3 + -0.931769,
- -7 + -0.421414,
- -7 + -0.61578,
- 3 + -0.601418,
- -1 + 0.384031,
- 1 + 0.180447,
- -1 + 0.160505,
- 7 + -0.14269,
- 3 + 0.553436,
- 3 + 0.842422,
- -1 + -0.298941,
- -3 + -0.704512,
- 1 + -0.817883,
- -5 + 0.689056,
- 3 + 0.54275,
- -7 + -0.244876,
- -7 + 0.497505,
- -3 + -0.385801,
- -7 + -0.228079,
- 1 + 0.607185,
- 7 + -0.625709,
- 5 + -0.851795,
- -3 + 0.657661,
- 7 + 0.568546,
- 1 + -0.0359739,
- 1 + 0.836243,
- 1 + -0.747603,
- -5 + 0.463366,
- 7 + -0.62775,
- -5 + -0.129517,
- 7 + -0.0784853,
- -5 + -0.338617,
- 1 + -0.0951821,
- -3 + -0.0586496,
- 1 + 0.548171,
- -5 + -0.142791,
- 1 + -0.137619,
- -5 + 0.86615,
- 3 + 0.337578,
- -7 + -0.0597365,
- -5 + -0.843939,
- -3 + -0.607342,
- -1 + -0.630138,
- -3 + -0.393534,
- 7 + 0.354908,
- -5 + 0.184251,
- 5 + -0.154522,
- -5 + 0.828516,
- 5 + 0.817169,
- -5 + 0.833938,
- -5 + 0.689288,
- 5 + -0.995259,
- -1 + -0.932191,
- -7 + 0.964076,
- 1 + -0.85304,
- -3 + -0.0782913,
- 7 + -0.696813,
- 5 + 0.231297,
- 7 + 0.688421,
- 7 + 0.0322752,
- 1 + 0.839409,
- 1 + -0.362455,
- -3 + 0.561378,
- 3 + -0.496498,
- 1 + 0.841212,
- -7 + -0.299443,
- 7 + 0.527505,
- -1 + 0.51827,
- 5 + -0.348049,
- -3 + -0.983604,
- -1 + 0.694304,
- 1 + -0.31786,
- -3 + 0.643969,
- -1 + -0.650723,
- -7 + -0.14479,
- -3 + 0.455813,
- 7 + -0.627596,
- -3 + -0.245695,
- -5 + 0.0893783,
- 3 + -0.236629,
- 5 + -0.277597,
- 7 + 0.481512,
- -7 + 0.143052,
- 3 + 0.615401,
- 7 + -0.975698,
- -1 + 0.50143,
- -3 + 0.0737497,
- 1 + 0.345961,
- -1 + 0.944933,
- -1 + 0.00710848,
- 3 + -0.908855,
- 3 + -0.104037,
- -1 + -0.0996714,
- -1 + 0.480154,
- -5 + -0.684452,
- -3 + -0.104955,
- -1 + -0.972497,
- 5 + 0.619405,
- -5 + -0.361996,
- 1 + -0.780079,
- -7 + 0.443635,
- 7 + 0.527956,
- -1 + 0.927314,
- 3 + 0.606136,
- 3 + -0.22611,
- 1 + -0.288871,
- -3 + 0.683856,
- 5 + 0.486252,
- -7 + -0.781706,
- 5 + 0.348522,
- -7 + -0.743252,
- 5 + 0.790582,
- -1 + -0.417564,
- 1 + 0.971814,
- 1 + -0.394633,
- 3 + -0.538042,
- 7 + -0.82342,
- -5 + 0.46215,
- -3 + -0.725289,
- -1 + -0.248699,
- 3 + 0.194388,
- -1 + 0.572686,
- -1 + 0.57203,
- -1 + -0.73258,
- 3 + -0.841193,
- 3 + 0.846292,
- 7 + -0.106951,
- -1 + -0.82125,
- 5 + -0.565781,
- -7 + -0.178221,
- 3 + -0.396988,
- -1 + -0.194377,
- -7 + -0.184276,
- 3 + 0.530178,
- -1 + 0.0792818,
- 3 + 0.698151,
- 7 + 0.540132,
- 5 + -0.0324876,
- -5 + -0.539282,
- 1 + -0.0612176,
- 1 + -0.00825787,
- -5 + -0.594088,
- 5 + -0.720534,
- -3 + -0.726017,
- 3 + -0.247803,
- -5 + -0.0351876,
- -3 + -0.485217,
- 7 + -0.711281,
- 1 + -0.143779,
- 5 + 0.830104,
- -1 + -0.680937,
- -5 + -0.406956,
- -7 + -0.572693,
- 1 + -0.916711,
- -7 + -0.361021,
- 5 + -0.669143,
- -7 + 0.0977001,
- -1 + -0.351618,
- -3 + -0.292778,
- -3 + 0.94385,
- -5 + 0.64688,
- -5 + 0.462901,
- -7 + 0.139473,
- 5 + -0.923586,
- -7 + 0.100025,
- 7 + 0.762592,
- 5 + -0.669251,
- -5 + 0.552417,
- 3 + 0.578362,
- -3 + 0.286511,
- -5 + -0.819517,
- 5 + -0.174663,
- 1 + 0.898405,
- -3 + 0.276757,
- -5 + -0.860502,
- -3 + -0.508774,
- -7 + -0.619703,
- -1 + -0.576515,
- 7 + 0.442863,
- 1 + -0.792524,
- 1 + -0.967062,
- -7 + 0.495375,
- -7 + -0.497338,
- -5 + -0.649645,
- -1 + -0.692724,
- -7 + -0.681675,
- 5 + 0.80008,
- -1 + -0.476369,
- -3 + 0.102149,
- -3 + -0.595665,
- -5 + -0.961165,
- 7 + -0.990363,
- -5 + 0.716457,
- -7 + -0.404208,
- -1 + -0.483432,
- 1 + 0.236347,
- -1 + 0.376305,
- 1 + -0.0533286,
- -7 + -0.610223,
- 3 + 0.843043,
- -1 + -0.609047,
- 1 + 0.725496,
- -1 + -0.31617,
- -5 + -0.0189003,
- -3 + -0.425178,
- -7 + -0.321938,
- 3 + 0.0120751,
- -1 + 0.315381,
- -3 + -0.324733,
- -3 + -0.571329,
- 5 + -0.30955,
- 3 + -0.997293,
- 3 + 0.105692,
- 1 + 0.0166829,
- -7 + 0.295209,
- -5 + 0.0396503,
- -7 + -0.698527,
- 1 + -0.983116,
- 7 + 0.659054,
- -1 + 0.33142,
- -7 + -0.0377453,
- -5 + -0.0574753,
- -1 + 0.852526,
- -1 + 0.983994,
- -5 + 0.938022,
- 1 + 0.513438,
- 3 + 0.0546758,
- -5 + 0.0823434,
- -7 + 0.166195,
- -3 + -0.852176,
- 1 + 0.366113,
- 1 + -0.397224,
- -7 + 0.665549,
- 1 + -0.0446258,
- 3 + 0.702024,
- 5 + -0.733169,
- -1 + -0.0454769,
- -7 + -0.668073,
- 1 + 0.27592,
- 7 + -0.323333,
- 5 + -0.674522,
- 7 + 0.0814798,
- 7 + -0.782666,
- 3 + -0.0710991,
- 5 + 0.773968,
- -1 + 0.803732,
- -1 + 0.142462,
- -3 + -0.243322,
- -3 + -0.958958,
- 5 + 0.308394,
- 7 + -0.500096,
- -7 + 0.914925,
- 7 + 0.150591,
- -5 + 0.58597,
- 7 + 0.251341,
- -3 + -0.636188,
- 7 + 0.909046,
- 3 + -0.577617,
- -7 + -0.903661,
- 7 + -0.275888,
- 1 + -0.21705,
- -5 + 0.736324,
- -1 + -0.820161,
- -1 + -0.545268,
- 3 + -0.0618935,
- 7 + -0.126791,
- 1 + -0.792842,
- -7 + -0.398747,
- 3 + -0.583208,
- -5 + -0.325178,
- 7 + -0.0370357,
- -5 + -0.083306,
- 5 + 0.819585,
- -7 + 0.0991425,
- -3 + -0.130402,
- -5 + -0.157376,
- 7 + 0.691842,
- 5 + -0.748137,
- -1 + 0.758925,
- 1 + -0.312916,
- 3 + -0.820843,
- 7 + -0.261816,
- 7 + -0.172358,
- 7 + 0.536986,
- 7 + 0.759576,
- 7 + -0.754446,
- -7 + 0.567095,
- -1 + -0.524981,
- -3 + -0.802519,
- -3 + 0.3109,
- 3 + -0.248219,
- 5 + 0.0748601,
- 7 + 0.960564,
- 1 + 0.667926,
- -7 + -0.706296,
- -3 + 0.635725,
- 7 + 0.978146,
- -1 + -0.574543,
- 5 + -0.430696,
- 1 + 0.0996064,
- 1 + -0.00163434,
- 3 + 0.14937,
- 3 + -0.0844981,
- 3 + -0.136261,
- 5 + 0.973049,
- 3 + 0.282247,
- 7 + 0.579739,
- 5 + -0.0823847,
- 5 + -0.0467881,
- 5 + 0.596636,
- -1 + -0.297972,
- -5 + 0.706257,
- -7 + 0.604586,
- -3 + 0.0669439,
- -1 + -0.453354,
- 5 + -0.477196,
- 5 + 0.311931,
- 5 + 0.166079,
- 3 + 0.412152,
- 7 + 0.474994,
- 5 + -0.771076,
- 5 + 0.536177,
- -5 + -0.0305953,
- -3 + 0.580228,
- -3 + 0.284461,
- -7 + -0.726361,
- -3 + -0.726564,
- 1 + -0.345421,
- 3 + 0.80056,
- 1 + 0.878273,
- -5 + 0.654627,
- -1 + 0.295187,
- 7 + 0.591756,
- 3 + 0.260911,
- 3 + 0.481528,
- -3 + -0.77778,
- 3 + -0.683316,
- -7 + -0.658198,
- -3 + -0.74585,
- 1 + 0.938157,
- 1 + 0.192402,
- 5 + 0.361699,
- 3 + -0.163265,
- -3 + 0.783476,
- -5 + 0.737259,
- 1 + -0.569672,
- 7 + 0.10586,
- -1 + -0.173976,
- 1 + 0.935026,
- -7 + 0.356488,
- -1 + 0.0017309,
- 5 + -0.675919,
- -1 + 0.0665381,
- -1 + -0.307875,
- 7 + 0.0983045,
- 5 + 0.963101,
- 3 + -0.519587,
- -5 + 0.899631,
- 1 + 0.31666,
- 7 + -0.756871,
- 7 + 0.333545,
- -3 + -0.168074,
- 7 + 0.87813,
- -1 + 0.779471,
- -5 + 0.754198,
- 7 + -0.868269,
- 1 + 0.333521,
- 7 + -0.731973,
- -1 + 0.33527,
- -3 + -0.467703,
- -1 + 0.234056,
- -3 + -0.237028,
- 3 + 0.74204,
- 7 + -0.257894,
- -7 + 0.690854,
- -1 + 0.652636,
- 3 + 0.0301753,
- -7 + 0.814373,
- -1 + -0.951698,
- -5 + 0.976247,
- -3 + 0.431324,
- -3 + 0.192437,
- 3 + 0.31289,
- -3 + 0.422132,
- 3 + -0.00384281,
- 3 + 0.72445,
- -5 + 0.920278,
- -3 + -0.324996,
- 3 + 0.181187,
- 7 + 0.658717,
- -5 + -0.977313,
- -1 + 0.378038,
- 1 + 0.615551,
- -1 + 0.475454,
- 3 + 0.735309,
- 7 + -0.398705,
- 7 + 0.0674037,
- -1 + 0.273941,
- 5 + -0.376697,
- 1 + -0.934663,
- 3 + 0.764279,
- -5 + -0.67983,
- -5 + -0.951744,
- -7 + 0.559239,
- -7 + 0.123601,
- -1 + 0.279154,
- 7 + -0.349745,
- -1 + 0.881504,
- 5 + 0.743417,
- -7 + -0.126299,
- -3 + 0.129631,
- -7 + -0.248369,
- 3 + -0.582388,
- 7 + 0.606937,
- -1 + -0.766819,
- -1 + -0.887898,
- -3 + 0.628891,
- -3 + 0.797051,
- 1 + 0.258235,
- 1 + -0.289372,
- -7 + -0.689227,
- -5 + -0.223412,
- -5 + -0.0717334,
- 5 + 0.444987,
- 3 + -0.47443,
- 5 + -0.622907,
- 1 + 0.231064,
- 7 + 0.0643792,
- -5 + -0.545879,
- -3 + 0.881704,
- 7 + 0.421487,
- 7 + -0.163227,
- 1 + -0.19334,
- 5 + 0.754454,
- -7 + -0.173896,
- -1 + -0.148776,
- -5 + 0.342022,
- -3 + 0.00779013,
- 7 + -0.959293,
- 5 + 0.888742,
- 1 + -0.0373372,
- 3 + 0.154647,
- 7 + 0.522902,
- -1 + -0.91692,
- 1 + -0.762814,
- 1 + -0.308587,
- -5 + 0.252501,
- 3 + 0.186752,
- 7 + -0.897854,
- 3 + -0.314141,
- 7 + -0.123752,
- 5 + -0.986531,
- 7 + 0.89791,
- 1 + -0.133572,
- -7 + -0.828677,
- -7 + -0.362269,
- 1 + -0.231981,
- 1 + 0.6903,
- 5 + 0.212784,
- -1 + 0.790468,
- -7 + -0.822496,
- 1 + -0.215268,
- 5 + -0.232525,
- -1 + -0.479589,
- 3 + -0.79679,
- -5 + -0.604188,
- 7 + -0.201313,
- -1 + -0.525663,
- -7 + -0.155085,
- 1 + -0.820419,
- -3 + -0.37499,
- -3 + -0.983146,
- -5 + -0.793733,
- -1 + -0.0931721,
- 5 + -0.601751,
- 3 + 0.0783009,
- -1 + 0.768638,
- 1 + 0.492399,
- -5 + -0.0098969,
- -1 + 0.19191,
- -7 + -0.979377,
- -7 + -0.0178371,
- -5 + -0.329518,
- 1 + 0.373382,
- -7 + -0.845312,
- 3 + -0.922893,
- 3 + 0.315986,
- 3 + 0.486665,
- 1 + -0.263414,
- -5 + 0.375741,
- 3 + 0.909047,
- 1 + -0.905982,
- 1 + -0.887325,
- 1 + -0.20989,
- 5 + -0.476245,
- 1 + -0.937806,
- 3 + -0.749343,
- 3 + -0.786876,
- -3 + -0.67605,
- -1 + 0.0446474,
- -5 + 0.652167,
- 1 + 0.543258,
- -5 + 0.15279,
- -5 + 0.148326,
- 5 + 0.254656,
- -3 + 0.856795,
- -7 + 0.751831,
- -3 + 0.630068,
- 5 + 0.0417778,
- -5 + -0.789099,
- -7 + 0.741281,
- -3 + 0.391712,
- -3 + -0.134653,
- -1 + 0.326939,
- 7 + -0.0234458,
- -3 + -0.23408,
- -5 + -0.239154,
- -5 + -0.832932,
- 5 + -0.305414,
- 7 + 0.447744,
- -3 + -0.729455,
- 7 + 0.48413,
- 5 + 0.236162,
- 5 + -0.534741,
- 5 + 0.00340226,
- -5 + -0.92795,
- 5 + -0.802271,
- 5 + -0.486955,
- -3 + -0.958796,
- 5 + -0.576444,
- -1 + 0.107654,
- -5 + -0.759059,
- -5 + 0.292163,
- 1 + -0.785662,
- 3 + -0.374019,
- 7 + -0.0159586,
- -1 + 0.70116,
- -5 + 0.0846993,
- 1 + 0.401001,
- 7 + 0.0279956,
- -7 + -0.394888,
- 5 + 0.505212,
- 7 + 0.786975,
- 3 + 0.532436,
- -7 + 0.204459,
- 3 + -0.615921,
- -3 + 0.0758607,
- -5 + 0.130031,
- -5 + -0.772899,
- 3 + -0.274121,
- 5 + 0.056024,
- -1 + -0.218418,
- -7 + -0.183809,
- -5 + 0.109609,
- 5 + -0.821093,
- 7 + -0.353014,
- 3 + 0.228901,
- 1 + -0.594237,
- -3 + 0.39832,
- -5 + 0.575415,
- -1 + 0.398899,
- -5 + -0.239754,
- 3 + -0.535948,
- 5 + -0.487767,
- 5 + 0.282845,
- 1 + -0.720766,
- -7 + 0.678491,
- -3 + 0.389419,
- 5 + -0.862186,
- 7 + -0.942864,
- 7 + -0.341864,
- 7 + -0.332763,
- -7 + 0.290539,
- -5 + -0.076314,
- -3 + 0.14099,
- 1 + -0.0547188,
- 3 + 0.735025,
- 3 + -0.197414,
- 5 + 0.690544,
- 5 + 0.630046,
- -3 + -0.117688,
- 7 + 0.656909,
- 7 + 0.417193,
- -3 + -0.489404,
- -1 + 0.66448,
- 3 + 0.109689,
- 1 + -0.601325,
- 5 + 0.930691,
- 1 + 0.122041,
- -3 + 0.991223,
- -5 + -0.700354,
- -1 + 0.0347951,
- 7 + 0.122125,
- 1 + 0.218395,
- -7 + -0.177617,
- 5 + 0.209456,
- -5 + -0.976741,
- -5 + -0.41843,
- -3 + -0.580374,
- -1 + -0.424389,
- -5 + -0.183439,
- 1 + 0.159905,
- 1 + -0.825052,
- -1 + -0.783269,
- 3 + 0.150836,
- -5 + 0.385557,
- -1 + -0.657701,
- -5 + 0.739214,
- 7 + -0.990613,
- -5 + 0.787245,
- -5 + 0.604144,
- -5 + -0.871588,
- 5 + 0.721765,
- 5 + 0.118939,
- -5 + -0.859039,
- -3 + 0.111408,
- -1 + -0.479201,
- 1 + -0.470303,
- -1 + -0.136117,
- 5 + 0.956995,
- 1 + -0.39388,
- -1 + 0.614385,
- 1 + 0.556813,
- 7 + 0.844387,
- 1 + -0.436025,
- -5 + -0.108634,
- 5 + -0.100592,
- -7 + -0.723946,
- 1 + 0.0688398,
- 7 + 0.180889,
- -3 + 0.628736,
- 1 + 0.112598,
- 3 + 0.318029,
- -3 + 0.634139,
- 7 + -0.691032,
- 1 + 0.356673,
- 5 + 0.0566803,
- 1 + -0.351812,
- 5 + 0.531286,
- -7 + -0.157417,
- 7 + -0.99541,
- 7 + -0.681986,
- 5 + -0.997084,
- -7 + 0.741155,
- 1 + -0.622678,
- 1 + 0.705248,
- -5 + 0.711669,
- 7 + 0.377357,
- -5 + -0.62871,
- -5 + 0.0214289,
- -1 + -0.997903,
- 5 + 0.0933239,
- 3 + -0.526274,
- -7 + -0.951203,
- -1 + -0.755676,
- 5 + 0.339232,
- -1 + 0.773219,
- -3 + 0.426269,
- 3 + -0.396471,
- 7 + 0.567064,
- 5 + 0.633394,
- -7 + 0.791714,
- 3 + 0.787449,
- 3 + -0.472383,
- -5 + -0.155762,
- -5 + -0.0783671,
- -5 + -0.338965,
- 3 + -0.793645,
- -5 + 0.876857,
- -5 + -0.02886,
- -1 + 0.566931,
- 5 + 0.623439,
- 5 + 0.50836,
- 7 + -0.3025,
- 7 + -0.714796,
- -7 + 0.179475,
- 7 + -0.662018,
- 1 + -0.348355,
- 3 + -0.794334,
- -3 + -0.157082,
- 7 + 0.149085,
- 1 + 0.640906,
- -3 + 0.349559,
- -3 + 0.857413,
- -1 + -0.0283983,
- -1 + 0.693171,
- -3 + -0.214092,
- -5 + -0.98936,
- 1 + 0.639767,
- 3 + -0.194655,
- -5 + 0.940209,
- -3 + 0.20604,
- -3 + -0.564045,
- 3 + -0.590761,
- 5 + 0.685986,
- 3 + -0.764822,
- -1 + 0.42185,
- -3 + -0.295677,
- 1 + 0.216797,
- 1 + -0.814246,
- -1 + 0.206404,
- -3 + 0.328757,
- 7 + -0.566083,
- 3 + 0.597134,
- -3 + 0.642763,
- -7 + -0.395769,
- 7 + -0.935252,
- -7 + 0.626113,
- -3 + -0.849858,
- 5 + 0.917923,
- 5 + -0.376758,
- 3 + 0.849631,
- -5 + -0.327594,
- -7 + -0.0529906,
- -3 + -0.923709,
- 1 + 0.0692206,
- -5 + 0.056296,
- 3 + 0.467438,
- -1 + -0.814233,
- -5 + -0.302013,
- -3 + 0.695497,
- 7 + 0.651437,
- 3 + 0.168943,
- 5 + 0.605341,
- -1 + -0.372329,
- 1 + 0.765342,
- 1 + 0.947534,
- -5 + 0.116956,
- -3 + 0.577997,
- 5 + 0.810715,
- 1 + -0.779946,
- -7 + -0.370998,
- 3 + 0.558406,
- -1 + -0.233575,
- 1 + 0.77588,
- -7 + -0.311882,
- 5 + -0.910265,
- 5 + -0.992932,
- 5 + -0.760745,
- 1 + 0.318678,
- 5 + -0.210387,
- 1 + 0.872963,
- 3 + 0.220112,
- -5 + -0.811578,
- 5 + -0.711665,
- 5 + -0.150111,
- -1 + 0.641725,
- 1 + 0.898414,
- -3 + -0.650104,
- 7 + -0.14629,
- 7 + 0.865109,
- -1 + -0.347701,
- -1 + 0.921759,
- 1 + 0.697452,
- 1 + 0.0354798,
- 5 + -0.176528,
- -7 + 0.664795,
- -3 + 0.896781,
- 3 + -0.958731,
- 5 + -0.141991,
- 7 + 0.120368,
- -5 + 0.485083,
- 7 + -0.376901,
- -5 + -0.43829,
- -5 + -0.586847,
- 1 + -0.959211,
- 7 + 0.0708796,
- -3 + 0.0492324,
- -3 + -0.993246,
- -1 + 0.650188,
- -1 + -0.865149,
- -5 + 0.37034,
- 7 + -0.338674,
- 3 + 0.623087,
- -7 + -0.321175,
- 7 + -0.764244,
- -1 + 0.378604,
- 1 + -0.812146,
- 3 + 0.444655,
- -5 + 0.253273,
- 7 + 0.481744,
- 3 + 0.455208,
- 5 + 0.908443,
- 1 + 0.0686094,
- -7 + 0.844868,
- -5 + -0.976591,
- 7 + -0.72575,
- 5 + 0.675135,
- -7 + 0.274097,
- -3 + 0.409609,
- 3 + -0.175133,
- -3 + 0.796693,
- 3 + -0.247288,
- -1 + -0.549564,
- -7 + 0.967288,
- -1 + -0.839667,
- 3 + -0.681989,
- -1 + -0.523145,
- -5 + 0.396439,
- 5 + -0.120618,
- 3 + 0.693885,
- -1 + -0.816144,
- -5 + -0.968818,
- -3 + -0.390704,
- 3 + -0.448062,
- 1 + 0.569756,
- 5 + -0.336729,
- -1 + 0.136729,
- 5 + 0.941006,
- 5 + -0.465103,
- 7 + 0.468966,
- -1 + 0.355103,
- -7 + 0.615847,
- -1 + -0.692941,
- -1 + -0.173114,
- 3 + 0.594599,
- 7 + 0.557483,
- 3 + 0.997697,
- -5 + 0.24401,
- 1 + -0.00963287,
- 5 + 0.0275448,
- 5 + 0.659747,
- -7 + -0.567272,
- -5 + -0.405348,
- -1 + -0.614457,
- 1 + 0.19472,
- -7 + 0.553533,
- -3 + -0.612328,
- 1 + -0.348393,
- -3 + 0.771169,
- -3 + 0.354427,
- -5 + 0.785281,
- 3 + -0.318974,
- -5 + -0.170041,
- -1 + -0.667593,
- -1 + -0.514524,
- -5 + -0.76729,
- 3 + 0.924267,
- 7 + -0.893804,
- -7 + -0.250356,
- 7 + -0.732358,
- -7 + 0.490774,
- 1 + -0.437992,
- -3 + 0.469562,
- 1 + 0.436426,
- -3 + -0.400156,
- 7 + -0.860264,
- 1 + 0.0900252,
- -1 + -0.754367,
- 1 + -0.838147,
- -5 + 0.404529,
- -7 + -0.437069,
- -5 + -0.496662,
- 5 + 0.952867,
- -3 + 0.894237,
- -3 + -0.555447,
- -1 + -0.354976,
- 1 + -0.60926,
- -7 + 0.759444,
- 3 + 0.662752,
- -7 + -0.815089,
- -5 + 0.98253,
- 3 + -0.817391,
- 5 + -0.61243,
- -5 + -0.456923,
- -1 + -0.824931,
- 7 + 0.514605,
- -1 + 0.828664,
- -5 + -0.195044,
- -3 + -0.333318,
- 3 + 0.164695,
- -7 + 0.0349422,
- 7 + 0.118845,
- 5 + -0.174882,
- 7 + -0.872202,
- 7 + 0.710986,
- 3 + 0.699916,
- -5 + 0.066256,
- 3 + -0.148756,
- 7 + 0.508584,
- 5 + 0.825367,
- -5 + -0.729841,
- -5 + -0.887612,
- 5 + -0.758424,
- -5 + 0.998181,
- -7 + 0.65577,
- 5 + -0.474471,
- 7 + -0.269234,
- 3 + 0.104569,
- -5 + -0.102212,
- -5 + 0.738547,
- 5 + -0.94242,
- -1 + 0.15571,
- 7 + -0.421775,
- -7 + 0.804305,
- 3 + 0.770802,
- 7 + 0.642568,
- -7 + 0.971034,
- 1 + -0.144741,
- -7 + 0.902049,
- 7 + 0.157032,
- 7 + -0.710021,
- 7 + 0.719006,
- 1 + -0.119823,
- -7 + 0.156298,
- 3 + 0.970851,
- -1 + -0.163907,
- -7 + -0.353286,
- -7 + 0.497258,
- -7 + 0.283671,
- 1 + 0.0405689,
- -5 + -0.962454,
- -3 + -0.219818,
- 1 + -0.436599,
- -3 + -0.651331,
- 5 + 0.192501,
- -5 + 0.627465,
- 3 + -0.0387857,
- -5 + 0.235464,
- 3 + -0.0781319,
- -1 + 0.372664,
- -7 + 0.144817,
- -3 + -0.981248,
- -7 + -0.438408,
- 5 + 0.851478,
- -1 + -0.473764,
- 1 + 0.00188464,
- 3 + 0.433134,
- -7 + -0.132385,
- 7 + -0.0645663,
- -1 + -0.202906,
- -7 + -0.19273,
- -5 + 0.490564,
- 5 + -0.986688,
- 3 + -0.259055,
- -5 + -0.0975989,
- -1 + -0.599443,
- -1 + 0.313751,
- -3 + 0.839625,
- -3 + 0.0875769,
- 7 + 0.531778,
- 5 + 0.78374,
- -7 + -0.568377,
- -5 + -0.772801,
- -5 + -0.0559519,
- -5 + 0.945151,
- -7 + 0.260123,
- -7 + -0.909106,
- -5 + 0.0617756,
- -3 + -0.0675705,
- 3 + 0.425518,
- -3 + 0.0981296,
- -1 + -0.137702,
- 5 + 0.353555,
- 7 + 0.895279,
- -7 + 0.247132,
- -1 + 0.346749,
- -3 + 0.748198,
- -5 + 0.584672,
- 3 + -0.731422,
- 3 + 0.0579248,
- 5 + 0.212579,
- 5 + 0.1419,
- -1 + -0.51401,
- 1 + -0.844899,
- -1 + -0.478985,
- -5 + 0.918879,
- 3 + -0.0802303,
- 5 + 0.995209,
- 1 + 0.228169,
- -3 + 0.580333,
- -3 + -0.866062,
- 7 + -0.978268,
- -5 + 0.501526,
- -7 + 0.334392,
- -1 + 0.442487,
- -5 + 0.0704108,
- -5 + -0.711541,
- -5 + 0.982968,
- -7 + 0.722414,
- 5 + -0.799889,
- 1 + -0.853645,
- -7 + 0.997917,
- 5 + -0.513696,
- 5 + 0.0364606,
- 5 + -0.248071,
- -7 + -0.387232,
- 1 + -0.811699,
- 1 + 0.732048,
- 3 + -0.679307,
- -1 + -0.978209,
- -1 + -0.964028,
- -5 + -0.611812,
- -7 + -0.902063,
- -3 + 0.398009,
- 3 + 0.00542146,
- 5 + 0.601782,
- 5 + -0.104203,
- 1 + 0.506752,
- -5 + 0.436524,
- 7 + 0.982469,
- -1 + -0.0633421,
- -7 + 0.446072,
- -1 + 0.927761,
- 1 + 0.658156,
- -7 + 0.785148,
- -1 + -0.591183,
- -3 + 0.0137029,
- -1 + -0.388246,
- 7 + -0.675978,
- 1 + 0.0143937,
- -7 + 0.690042,
- -5 + -0.693171,
- -7 + -0.352858,
- 3 + -0.970363,
- -7 + -0.723423,
- 3 + 0.724452,
- -3 + 0.158585,
- 7 + -0.175004,
- 1 + -0.19285,
- -1 + 0.992788,
- 3 + -0.851952,
- 5 + 0.81,
- 3 + -0.0435364,
- -1 + -0.0813053,
- -1 + -0.765415,
- -7 + -0.0372974,
- -1 + 0.694064,
- 1 + -0.136753,
- 3 + 0.826244,
- -7 + 0.140024,
- 5 + -0.0882701,
- 1 + 0.295136,
- 7 + -0.5227,
- -5 + -0.237363,
- -3 + 0.709084,
- -3 + 0.629578,
- -5 + 0.643857,
- 7 + -0.668263,
- -5 + 0.249376,
- -1 + -0.760648,
- 1 + -0.927984,
- 7 + -0.659877,
- 7 + -0.567002,
- -1 + 0.0565217,
- -3 + 0.805679,
- -3 + -0.528236,
- -7 + -0.13752,
- -3 + 0.887507,
- 7 + 0.63262,
- 3 + -0.119278,
- 3 + 0.890306,
- -1 + -0.274285,
- -1 + 0.369489,
- 7 + 0.0317755,
- 3 + -0.856605,
- 7 + 0.912634,
- -7 + 0.0492215,
- 1 + -0.276292,
- -7 + -0.177337,
- 3 + -0.787517,
- -3 + -0.53,
- -1 + -0.186417,
- 3 + -0.949098,
- -7 + -0.517213,
- -1 + -0.986841,
- 5 + 0.600896,
- 7 + 0.48168,
- -3 + -0.458465,
- 5 + 0.321443,
- -3 + -0.234238,
- 1 + -0.954936,
- 5 + -0.0275234,
- -7 + 0.924262,
- 1 + 0.977532,
- -5 + -0.669258,
- 3 + 0.364021,
- 1 + 0.135028,
- -3 + -0.473695,
- -7 + -0.185051,
- -7 + -0.232574,
- 3 + -0.944187,
- 3 + -0.0543526,
- 5 + 0.673031,
- 5 + 0.195805,
- 1 + -0.45507,
- 7 + 0.404971,
- 3 + -0.610784,
- 5 + 0.0659073,
- -1 + -0.207704,
- 7 + 0.644995,
- -1 + 0.121214,
- -3 + -0.483027,
- -7 + 0.711033,
- 5 + -0.673219,
- -1 + -0.895776,
- 3 + 0.951024,
- -3 + 0.56215,
- 3 + -0.329154,
- -5 + -0.577541,
- -7 + -0.309147,
- -1 + -0.511309,
- 7 + 0.499812,
- -5 + -0.681876,
- -1 + -0.801156,
- 7 + 0.151605,
- -3 + 0.241685,
- 7 + 0.992835,
- -3 + 0.982038,
- -5 + 0.0631867,
- -5 + 0.950436,
- 7 + 0.31088,
- 5 + -0.708879,
- -7 + 0.460315,
- 1 + 0.397522,
- 3 + -0.830289,
- -1 + -0.146992,
- 3 + 0.667571,
- -5 + 0.870575,
- 5 + -0.692335,
- 1 + -0.399896,
- -7 + -0.421033,
- 7 + -0.740574,
- -3 + 0.0441913,
- -5 + 0.000759854,
- -1 + -0.526559,
- 7 + -0.50311,
- 3 + -0.00944866,
- -7 + 0.250031,
- -5 + 0.579793,
- -3 + 0.554107,
- 5 + 0.737397,
- 1 + 0.434328,
- -5 + -0.698991,
- -7 + 0.0322755,
- 5 + -0.995791,
- -7 + 0.233862,
- 3 + -0.201264,
- 7 + -0.297969,
- -5 + 0.377501,
- 3 + -0.571389,
- -1 + 0.530284,
- 5 + -0.179379,
- 7 + -0.356844,
- -7 + 0.941165,
- 1 + 0.339271,
- 3 + -0.66842,
- -5 + -0.423012,
- 3 + 0.316588,
- -1 + -0.984114,
- 1 + -0.5428,
- -1 + 0.766658,
- 1 + -0.960606,
- 5 + -0.620487,
- 7 + 0.266202,
- 7 + 0.901102,
- 1 + -0.268669,
- -5 + -0.607472,
- -7 + -0.52709,
- -3 + 0.0705389,
- 1 + -0.608374,
- -3 + -0.288577,
- -5 + 0.843351,
- -3 + 0.612135,
- -5 + 0.230486,
- 5 + -0.244291,
- -1 + 0.576229,
- -3 + 0.446377,
- -3 + -0.106511,
- -3 + 0.889909,
- -5 + -0.918941,
- 1 + 0.848997,
- -5 + 0.10993,
- -3 + 0.256356,
- 1 + 0.504098,
- 5 + -0.170462,
- 1 + 0.835316,
- 7 + 0.644516,
- -7 + 0.90372,
- -7 + 0.463742,
- -5 + 0.349377,
- -7 + -0.553437,
- 1 + 0.330349,
- 5 + 0.710921,
- -3 + 0.654504,
- -5 + -0.447801,
- -5 + 0.0517276,
- -1 + 0.975718,
- 3 + 0.874352,
- -1 + 0.678769,
- -1 + -0.264881,
- -3 + -0.0680661,
- 1 + -0.824504,
- -7 + -0.0992408,
- -5 + -0.862084,
- 3 + -0.805812,
- 5 + 0.237566,
- -3 + 0.888929,
- 1 + -0.476846,
- -1 + 0.621217,
- 1 + 0.65046,
- 1 + -0.177248,
- -1 + 0.0533044,
- 3 + -0.176522,
- -1 + 0.676266,
- 5 + 0.0818662,
- 5 + -0.0801649,
- 5 + -0.430938,
- 3 + -0.763183,
- -7 + -0.453813,
- 3 + 0.555379,
- -3 + 0.858594,
- 3 + 0.227172,
- -1 + -0.632746,
- -7 + 0.627382,
- 1 + -0.0489046,
- 7 + -0.828429,
- 3 + 0.555978,
- -7 + -0.130752,
- 1 + 0.978551,
- 1 + 0.985192,
- -3 + -0.601231,
- -3 + 0.3876,
- 1 + 0.907771,
- -3 + -0.183183,
- -5 + -0.297217,
- -5 + 0.579173,
- -5 + 0.751301,
- 5 + 0.675477,
- -7 + -0.700691,
- 1 + 0.947316,
- -7 + -0.635739,
- -1 + -0.1091,
- -5 + -0.655627,
- -7 + -0.74121,
- 1 + 0.334598,
- 5 + -0.133385,
- -5 + 0.364959,
- 5 + -0.692856,
- -7 + -0.432334,
- -3 + 0.0911902,
- -5 + 0.670209,
- -7 + -0.0777559,
- -3 + 0.769741,
- 7 + 0.0235715,
- 1 + 0.181115,
- -7 + -0.688748,
- -7 + -0.641734,
- -1 + 0.972104,
- 7 + -0.474228,
- -7 + -0.984007,
- 3 + 0.25339,
- 3 + 0.87889,
- 5 + 0.624509,
- 5 + -0.896409,
- 7 + -0.146804,
- 5 + 0.79753,
- -1 + 0.0419583,
- -3 + -0.978575,
- 5 + -0.799147,
- 7 + -0.100029,
- 5 + 0.34877,
- 5 + 0.726533,
- -3 + 0.902539,
- -7 + -0.0300989,
- 5 + 0.843366,
- 7 + 0.98872,
- 7 + -0.428589,
- 1 + 0.644193,
- -5 + 0.0228081,
- 7 + -0.754224,
- 7 + 0.805301,
- 5 + 0.695254,
- -7 + -0.188701,
- 3 + -0.581044,
- 5 + 0.799149,
- 7 + 0.353339,
- -1 + -0.9622,
- -1 + -0.230887,
- 5 + -0.787056,
- -7 + -0.706222,
- 3 + 0.0197935,
- -1 + 0.805143,
- 7 + 0.951379,
- 5 + -0.333186,
- -3 + -0.0693998,
- -3 + 0.993613,
- -5 + -0.548791,
- -5 + -0.964111,
- 3 + -0.584394,
- 1 + 0.867385,
- -7 + -0.480054,
- 1 + -0.994699,
- 7 + 0.090273,
- -3 + 0.901709,
- 1 + 0.715806,
- 3 + 0.304813,
- 7 + 0.403796,
- 1 + -0.473723,
- 5 + 0.475125,
- -1 + 0.0271961,
- 7 + -0.487227,
- 7 + 0.229468,
- -3 + -0.189796,
- -3 + -0.625003,
- 1 + -0.401116,
- -7 + 0.67123,
- -5 + -0.927091,
- -7 + 0.270972,
- 7 + -0.617139,
- 1 + -0.91671,
- -7 + -0.712691,
- -3 + -0.840406,
- 5 + -0.406998,
- -1 + -0.849947,
- 3 + -0.158653,
- -1 + 0.0696663,
- -1 + 0.758415,
- 1 + 0.0694559,
- 1 + 0.462296,
- -5 + 0.217909,
- 1 + 0.473663,
- -3 + 0.473242,
- -3 + -0.890317,
- -3 + -0.397198,
- -7 + -0.508332,
- 5 + 0.990104,
- 5 + -0.32464,
- -1 + -0.869012,
- 7 + 0.567209,
- 1 + -0.495974,
- 3 + -0.101183,
- -7 + -0.74694,
- -5 + -0.675854,
- -1 + 0.110992,
- -5 + 0.247456,
- 7 + 0.840274,
- -3 + 0.395728,
- 5 + -0.362192,
- -3 + -0.680363,
- 5 + -0.602484,
- -3 + 0.738772,
- 1 + -0.644167,
- -3 + 0.634913,
- 3 + -0.384876,
- 5 + -0.916855,
- -5 + -0.227988,
- -3 + -0.625356,
- -5 + -0.740278,
- -1 + -0.41118,
- 3 + 0.443345,
- 3 + 0.736942,
- 1 + -0.354426,
- -7 + -0.870946,
- -3 + -0.546137,
- -7 + 0.272889,
- 1 + 0.0801028,
- 5 + -0.274639,
- -5 + -0.154875,
- -3 + -0.580005,
- -5 + -0.398665,
- 3 + -0.385197,
- 5 + -0.285359,
- 1 + 0.362706,
- -7 + -0.855772,
- -7 + 0.0454971,
- -5 + -0.424857,
- -7 + -0.504577,
- -5 + -0.00591926,
- -5 + 0.149346,
- 3 + -0.328489,
- 7 + 0.015029,
- 7 + 0.747577,
- -5 + -0.714686,
- 1 + -0.101717,
- 3 + 0.656319,
- 1 + 0.5271,
- -7 + -0.64961,
- -7 + -0.359428,
- -3 + -0.298523,
- -3 + -0.0788614,
- 1 + 0.621573,
- -1 + 0.0175043,
- 3 + -0.579268,
- 5 + 0.710546,
- 7 + -0.511833,
- 5 + 0.162637,
- -7 + -0.226472,
- 1 + 0.0095225,
- 5 + 0.21144,
- -5 + -0.582375,
- 7 + 0.231257,
- 1 + 0.248058,
- -1 + 0.922646,
- 5 + 0.00967738,
- 7 + -0.00782117,
- 1 + 0.930862,
- 1 + 0.920455,
- 7 + -0.994076,
- -5 + -0.462763,
- 1 + 0.627409,
- 3 + 0.936991,
- -7 + 0.800793,
- -1 + 0.193107,
- -7 + 0.703299,
- -1 + 0.132479,
- 1 + -0.152733,
- 5 + -0.953622,
- -7 + -0.997253,
- 7 + 0.556477,
- 3 + 0.272056,
- -3 + -0.51489,
- 5 + 0.398802,
- 5 + 0.602265,
- -5 + 0.274229,
- -7 + -0.700344,
- -7 + 0.0901991,
- 5 + 0.0552389,
- -7 + -0.536972,
- -7 + -0.0797897,
- 5 + 0.291342,
- 3 + -0.846983,
- 3 + 0.700542,
- -7 + 0.192372,
- 7 + -0.362972,
- 5 + 0.180049,
- -3 + 0.792655,
- 7 + -0.662956,
- 5 + -0.142891,
- -3 + 0.244501,
- -3 + -0.510171,
- -3 + 0.321085,
- -1 + 0.664982,
- 7 + -0.905902,
- -5 + 0.966882,
- -7 + 0.735439,
- 3 + 0.261407,
- 3 + 0.963571,
- -7 + -0.475502,
- 7 + 0.78978,
- 7 + 0.365208,
- 3 + 0.820723,
- 3 + -0.594815,
- -1 + -0.942558,
- -1 + -0.304459,
- -3 + 0.391556,
- -1 + -0.795303,
- -7 + 0.136453,
- -5 + -0.955505,
- 1 + -0.534127,
- 5 + -0.981382,
- -3 + 0.557188,
- -5 + -0.118641,
- -3 + -0.621408,
- -7 + -0.74375,
- 7 + 0.0227463,
- 5 + 0.112073,
- -3 + 0.950711,
- 5 + 0.643199,
- 5 + -0.351889,
- -1 + -0.221595,
- -1 + 0.00700172,
- 7 + 0.928086,
- 5 + 0.0356548,
- 3 + -0.370036,
- -7 + -0.830755,
- -5 + -0.222917,
- 1 + -0.782772,
- 1 + 0.237148,
- -1 + 0.86974,
- 5 + -0.537617,
- -1 + -0.434889,
- -7 + -0.0111739,
- 7 + -0.715952,
- 3 + -0.40804,
- 3 + -0.360795,
- 3 + 0.653046,
- -3 + 0.706949,
- 5 + -0.554727,
- -1 + 0.183029,
- -7 + -0.239732,
- -5 + -0.658072,
- 7 + -0.752212,
- -5 + 0.293207,
- 7 + -0.34722,
- -7 + -0.326367,
- -5 + -0.0589863,
- 5 + -0.927616,
- -1 + -0.866135,
- 3 + 0.00235856,
- -3 + -0.0437649,
- -5 + -0.585851,
- 1 + -0.481841,
- -5 + 0.632601,
- 3 + -0.874934,
- -1 + -0.230124,
- -5 + 0.403241,
- -5 + -0.986698,
- -1 + 0.968435,
- -3 + -0.530127,
- 1 + 0.919559,
- -7 + 0.425743,
- 7 + 0.123378,
- 7 + -0.142707,
- -7 + -0.494815,
- 7 + 0.440976,
- -5 + 0.890096,
- -3 + -0.708126,
- 7 + 0.943091,
- -7 + -0.0667361,
- 1 + 0.417654,
- 7 + 0.25984,
- -1 + 0.846645,
- 3 + -0.416033,
- -1 + -0.149707,
- 1 + 0.889424,
- 5 + 0.866725,
- -3 + 0.625568,
- -1 + -0.376365,
- -7 + 0.362419,
- -7 + 0.212156,
- -1 + 0.898672,
- 3 + -0.684527,
- 3 + 0.350536,
- -5 + -0.10858,
- -7 + 0.363887,
- 1 + 0.431342,
- 7 + -0.426099,
- -1 + -0.0357183,
- 5 + 0.969688,
- -7 + 0.436647,
- 1 + 0.144824,
- 7 + -0.689202,
- -5 + -0.369132,
- -7 + 0.447801,
- 3 + 0.991838,
- -5 + -0.95315,
- -5 + -0.486236,
- 7 + 0.635678,
- 7 + -0.672488,
- -5 + -0.134572,
- -5 + -0.698523,
- 3 + 0.0914014,
- 5 + 0.826151,
- 7 + 0.179363,
- 3 + 0.905552,
- 3 + 0.460779,
- 3 + -0.195297,
- -5 + 0.965511,
- 1 + -0.98716,
- 7 + 0.142015,
- -7 + -0.156042,
- 7 + 0.338355,
- -3 + 0.630815,
- -7 + -0.716086,
- -5 + 0.30445,
- -3 + -0.0663283,
- -1 + 0.954605,
- -7 + -0.516684,
- -1 + 0.739518,
- -5 + 0.0926331,
- -1 + -0.964479,
- -3 + 0.738004,
- -1 + -0.0623072,
- -3 + 0.994729,
- -7 + -0.483703,
- -5 + -0.116232,
- -3 + 0.608111,
- 5 + -0.169533,
- 1 + 0.700974,
- 7 + 0.344404,
- 1 + -0.234486,
- -5 + 0.753821,
- 3 + 0.264031,
- 1 + 0.365123,
- -1 + 0.735946,
- -3 + 0.075701,
- 5 + 0.0457206,
- -3 + 0.594172,
- 1 + 0.144428,
- 3 + -0.945545,
- 7 + -0.49231,
- -1 + 0.196516,
- 7 + 0.397096,
- -1 + 0.68979,
- 3 + -0.283773,
- -7 + -0.891651,
- -7 + 0.0992016,
- 3 + 0.364927,
- 3 + 0.692215,
- 1 + 0.902593,
- -7 + 0.511356,
- 1 + -0.329667,
- 3 + 0.151807,
- -3 + -0.469367,
- -1 + 0.839886,
- -3 + 0.990307,
- 3 + 0.318869,
- 5 + -0.74034,
- -5 + -0.339204,
- 1 + -0.452787,
- 1 + -0.736788,
- 1 + -0.248248,
- 5 + 0.785201,
- 7 + -0.243082,
- 7 + -0.107551,
- 1 + -0.729608,
- -3 + -0.358678,
- 1 + -0.786071,
- -1 + 0.370913,
- 3 + -0.398804,
- 1 + 0.0692376,
- -1 + -0.103113,
- -1 + 0.153375,
- 5 + 0.548651,
- -1 + -0.306503,
- 3 + -0.96292,
- 5 + -0.221047,
- 5 + 0.567843,
- 5 + 0.41284,
- 5 + 0.88284,
- 1 + -0.629206,
- -3 + -0.494796,
- 3 + 0.424972,
- 7 + 0.365256,
- -5 + -0.739219,
- 3 + 0.640667,
- -5 + 0.633005,
- -1 + 0.759701,
- 5 + -0.0691017,
- -5 + -0.0647394,
- -5 + -0.348828,
- -5 + 0.665346,
- -1 + -0.135857,
- 5 + 0.437672,
- 5 + 0.381016,
- -3 + -0.842788,
- -1 + -0.85829,
- -7 + 0.19863,
- -5 + -0.877027,
- 5 + -0.776832,
- 3 + -0.591161,
- 1 + 0.272311,
- 1 + 0.729332,
- -7 + -0.085479,
- -1 + 0.867551,
- -1 + 0.850484,
- -7 + 0.688455,
- -7 + 0.657501,
- 1 + -0.781022,
- 7 + -0.853813,
- -5 + 0.963325,
- 5 + -0.61377,
- 1 + -0.946282,
- -1 + -0.398061,
- 7 + -0.618336,
- -5 + 0.210241,
- -7 + 0.245468,
- 3 + -0.503244,
- -7 + -0.991443,
- -7 + -0.832428,
- 3 + 0.633537,
- 3 + -0.0513143,
- -5 + -0.740331,
- -5 + -0.571087,
- -5 + 0.932409,
- -1 + 0.310949,
- 7 + 0.803959,
- 1 + -0.37293,
- 3 + 0.625741,
- 3 + 0.335055,
- -3 + -0.0665732,
- -7 + -0.546747,
- -3 + -0.824097,
- 3 + 0.185571,
- -5 + -0.963157,
- 1 + -0.575186,
- 5 + -0.380057,
- -3 + -0.0146486,
- -7 + 0.548562,
- 7 + -0.294831,
- 1 + 0.190966,
- 3 + -0.200531,
- 3 + 0.769514,
- 1 + -0.758442,
- 5 + -0.563297,
- 3 + -0.268245,
- 7 + 0.115331,
- 7 + 0.635215,
- 1 + -0.393521,
- 1 + -0.618453,
- -5 + 0.766947,
- -5 + -0.89702,
- 3 + -0.290726,
- -1 + -0.146228,
- -7 + -0.671038,
- 1 + -0.598244,
- 3 + -0.56863,
- 7 + -0.501319,
- -7 + 0.627518,
- 3 + -0.389303,
- -3 + 0.0746856,
- 5 + -0.0666037,
- 5 + -0.275337,
- -5 + 0.132165,
- 5 + -0.379456,
- -3 + -0.232648,
- -1 + -0.722393,
- -3 + -0.848371,
- -3 + -0.894514,
- -3 + -0.52825,
- -1 + 0.868408,
- 5 + 0.305525,
- -5 + -0.274425,
- -5 + 0.22874,
- 5 + 0.71816,
- -1 + -0.744417,
- -3 + 0.874223,
- 1 + -0.0454682,
- 3 + 0.998097,
- -5 + 0.393407,
- 5 + 0.187479,
- 1 + 0.85875,
- 3 + -0.930842,
- 7 + -0.683711,
- 3 + -0.625096,
- 7 + -0.363623,
- -3 + -0.478099,
- 5 + 0.0397175,
- -1 + 0.772844,
- 1 + 0.0351828,
- -5 + -0.450596,
- 5 + -0.747949,
- -1 + -0.901913,
- 1 + -0.396489,
- 7 + 0.266602,
- -3 + -0.144345,
- -7 + 0.357022,
- -1 + 0.17734,
- 3 + -0.490206,
- 5 + -0.0589478,
- -1 + 0.0215372,
- -7 + 0.626992,
- 3 + 0.805443,
- 5 + -0.774861,
- 7 + 0.548483,
- -7 + -0.659366,
- 5 + -0.399126,
- 5 + 0.280639,
- -1 + 0.382537,
- 5 + 0.253533,
- -3 + 0.484453,
- -1 + -0.182041,
- -7 + 0.403929,
- 5 + 0.799799,
- -1 + 0.872509,
- -1 + 0.446505,
- 1 + 0.072863,
- 1 + 0.511757,
- 5 + -0.0447141,
- 7 + 0.418114,
- 3 + -0.412815,
- -7 + 0.270519,
- 1 + -0.691355,
- 3 + -0.197421,
- 3 + -0.86134,
- -5 + -0.0102158,
- 1 + 0.35777,
- 3 + 0.447566,
- -1 + 0.0185418,
- -7 + 0.78905,
- 7 + 0.691196,
- -5 + -0.980607,
- 3 + 0.307422,
- 1 + 0.612522,
- 5 + -0.199466,
- -1 + -0.459671,
- 1 + 0.170203,
- 5 + 0.345741,
- -1 + 0.442178,
- -5 + 0.431563,
- 3 + -0.534043,
- 5 + -0.76423,
- 3 + 0.121284,
- 3 + 0.645713,
- 7 + 0.96808,
- -7 + 0.488072,
- 3 + -0.00669708,
- 1 + -0.971889,
- -1 + -0.315525,
- 5 + 0.541525,
- 3 + -0.787017,
- -1 + 0.544075,
- 3 + -0.0730717,
- -5 + 0.522401,
- -5 + -0.323174,
- 7 + 0.526918,
- 5 + -0.385761,
- 5 + -0.895487,
- -3 + 0.0897052,
- -5 + -0.670281,
- -5 + -0.182219,
- -5 + 0.303178,
- -5 + -0.947146,
- -3 + -0.721791,
- -5 + -0.626817,
- 1 + -0.583032,
- 3 + 0.641241,
- -7 + -0.520007,
- 1 + -0.425207,
- -5 + 0.0712658,
- 1 + 0.812682,
- 1 + -0.143148,
- 3 + 0.0762144,
- 1 + 0.0785892,
- 7 + -0.568785,
- 1 + -0.59096,
- 3 + 0.756584,
- -1 + 0.128497,
- 3 + -0.975302,
- -1 + -0.757146,
- 5 + 0.448678,
- -7 + 0.00292395,
- -3 + -0.0190117,
- 7 + -0.211027,
- -1 + -0.668733,
- -5 + -0.447823,
- 1 + -0.502645,
- -7 + 0.47152,
- -5 + -0.364533,
- 7 + 0.745433,
- -5 + 0.753726,
- -1 + -0.307681,
- -1 + 0.791775,
- -5 + -0.151863,
- -5 + 0.815651,
- 7 + -0.0787568,
- 1 + 0.901984,
- 1 + 0.446558,
- -5 + 0.035328,
- 5 + -0.461488,
- -5 + 0.702664,
- 1 + 0.477797,
- -1 + -0.0921929,
- -3 + -0.231008,
- 7 + 0.369765,
- -7 + 0.0220315,
- 5 + -0.0497525,
- -7 + -0.0740606,
- -1 + 0.885344,
- 3 + 0.332343,
- -3 + 0.220104,
- -1 + 0.384649,
- -5 + -0.196536,
- -1 + 0.442901,
- 5 + 0.226845,
- -7 + 0.378706,
- -7 + 0.165296,
- 3 + 0.201761,
- 1 + -0.666372,
- -1 + -0.0523257,
- 3 + 0.636851,
- 5 + -0.717434,
- 1 + -0.354993,
- 3 + -0.720888,
- -5 + -0.133448,
- -5 + -0.12999,
- 5 + -0.64646,
- 1 + 0.66513,
- 7 + 0.38796,
- -3 + 0.983196,
- 1 + 0.156689,
- -1 + -0.598867,
- 7 + 0.0891009,
- -3 + 0.564803,
- 5 + 0.647083,
- 3 + 0.28552,
- -5 + -0.550295,
- 7 + -0.535946,
- 3 + -0.323109,
- 1 + 0.968116,
- -5 + 0.670887,
- 5 + 0.723851,
- -7 + 0.14941,
- 1 + 0.751713,
- -3 + 0.379236,
- -5 + 0.339108,
- -5 + -0.301987,
- 3 + -0.683341,
- -5 + -0.359829,
- 5 + -0.84713,
- -3 + 0.304565,
- -3 + 0.861481,
- 7 + -0.877059,
- -5 + 0.289428,
- -7 + -0.434084,
- -1 + -0.481805,
- -3 + 0.932735,
- -3 + -0.309733,
- -3 + -0.656653,
- -1 + 0.858222,
- -5 + -0.945002,
- -3 + -0.379574,
- 1 + -0.329053,
- -5 + -0.965912,
- -7 + -0.0862743,
- -3 + 0.564742,
- 1 + 0.430712,
- 7 + -0.134825,
- 3 + -0.0142276,
- -3 + 0.461407,
- -3 + 0.237931,
- 5 + 0.189721,
- -5 + -0.164975,
- 3 + 0.158177,
- 5 + 0.761349,
- 5 + -0.603701,
- -1 + 0.343416,
- -7 + 0.479708,
- 5 + -0.54804,
- 5 + 0.0522417,
- -7 + -0.975275,
- 3 + 0.908053,
- 7 + -0.324028,
- 1 + 0.20481,
- -1 + 0.501097,
- -3 + -0.562607,
- -5 + 0.555231,
- 1 + -0.158267,
- 3 + -0.0687857,
- 1 + 0.511831,
- -5 + -0.607408,
- 1 + 0.360143,
- -1 + 0.437194,
- -3 + -0.092719,
- 7 + 0.66663,
- -7 + 0.610324,
- 1 + 0.477642,
- -3 + -0.690053,
- 5 + -0.239834,
- 5 + 0.430824,
- -1 + -0.74709,
- -7 + 0.666542,
- -3 + 0.787307,
- 5 + 0.12119,
- -5 + 0.468506,
- -7 + -0.655536,
- -3 + -0.362963,
- -7 + -0.444575,
- -5 + -0.813438,
- 3 + -0.658917,
- -7 + -0.846612,
- -5 + 0.47478,
- 1 + -0.486082,
- -7 + 0.325601,
- -3 + 0.10135,
- 3 + 0.616988,
- -5 + 0.030061,
- 1 + 0.546106,
- -3 + -0.107568,
- 1 + -0.526698,
- 1 + -0.402568,
- 1 + 0.476488,
- 5 + -0.876816,
- -7 + -0.814004,
- -5 + -0.742022,
- 1 + 0.396799,
- 3 + 0.302924,
- 5 + -0.330856,
- 3 + -0.20346,
- 1 + -0.0134361,
- 3 + 0.603609,
- 5 + -0.531407,
- 7 + 0.711484,
- -1 + 0.520469,
- -1 + 0.148813,
- 3 + 0.0432309,
- 1 + 0.669779,
- 1 + -0.428549,
- -3 + 0.260938,
- -3 + 0.941317,
- -5 + -0.780941,
- -3 + -0.747831,
- 1 + -0.998692,
- -5 + 0.892504,
- -1 + 0.62686,
- 7 + 0.940684,
- -1 + -0.157277,
- -3 + -0.215904,
- 3 + -0.149222,
- -3 + -0.876603,
- -7 + -0.20916,
- 3 + -0.984649,
- 7 + -0.60173,
- -1 + -0.806134,
- -1 + 0.209397,
- 1 + 0.310198,
- 5 + -0.348507,
- -3 + 0.966827,
- 1 + -0.781644,
- -3 + -0.417686,
- 1 + -0.618801,
- 7 + 0.862017,
- -3 + -0.405402,
- -7 + 0.125069,
- -7 + 0.815787,
- -5 + 0.135567,
- -5 + 0.652664,
- -5 + 0.509215,
- -3 + -0.247757,
- -3 + -0.697007,
- 7 + -0.760593,
- 3 + -0.772638,
- -5 + 0.870941,
- -1 + 0.864873,
- -1 + -0.695855,
- 3 + -0.952328,
- 7 + -0.984213,
- -5 + -0.825547,
- 7 + -0.937066,
- 1 + -0.030252,
- 7 + -0.370309,
- -1 + 0.976445,
- -1 + 0.105839,
- -7 + -0.151788,
- 5 + 0.329837,
- 5 + 0.484323,
- 3 + -0.185114,
- 1 + -0.450171,
- 7 + -0.174316,
- 7 + -0.840168,
- -3 + -0.188744,
- 7 + 0.4487,
- -5 + 0.0857224,
- 7 + 0.836002,
- -3 + -0.180574,
- 7 + 0.933189,
- -3 + 0.850465,
- -3 + 0.217683,
- 7 + -0.504985,
- 3 + -0.244207,
- -3 + 0.827852,
- -3 + 0.231895,
- -3 + -0.210397,
- -5 + 0.225256,
- -5 + -0.424323,
- -3 + 0.584223,
- 5 + -0.21417,
- 7 + 0.0492111,
- -5 + 0.717212,
- 3 + 0.127463,
- 5 + -0.412335,
- -3 + -0.235105,
- 1 + -0.142685,
- 5 + -0.499895,
- 3 + -0.081105,
- -5 + -0.145618,
- 7 + -0.823428,
- 5 + -0.860577,
- 3 + -0.433851,
- 1 + -0.917788,
- 1 + 0.0316082,
- -7 + 0.825787,
- -7 + -0.453454,
- -7 + 0.00504467,
- -3 + 0.495271,
- 3 + 0.0318126,
- 5 + -0.344928,
- -1 + -0.550629,
- -7 + -0.352606,
- -1 + -0.122732,
- -3 + 0.159171,
- 3 + 0.261004,
- 3 + -0.691171,
- 3 + -0.746879,
- 1 + 0.626657,
- -3 + 0.0388675,
- -1 + 0.51117,
- 5 + -0.673213,
- -3 + 0.864677,
- -7 + -0.726019,
- 7 + -0.729394,
- -5 + 0.330155,
- -7 + -0.0177368,
- -7 + -0.300845,
- 1 + 0.615713,
- 5 + 0.00178831,
- 1 + 0.0232089,
- 7 + 0.0501066,
- -5 + -0.620755,
- 1 + -0.446627,
- -1 + -0.417687,
- 7 + 0.871591,
- 7 + -0.750383,
- 7 + 0.402812,
- 1 + -0.147176,
- -5 + 0.443187,
- 3 + 0.286959,
- 5 + 0.608735,
- -3 + 0.380043,
- 3 + -0.175819,
- 7 + -0.829562,
- -7 + -0.79598,
- -1 + -0.192267,
- -5 + -0.110678,
- 1 + 0.6394,
- 1 + -0.0846046,
- 1 + 0.714054,
- 5 + 0.811509,
- 1 + -0.398193,
- 7 + 0.760568,
- -1 + -0.452345,
- -5 + 0.687367,
- 5 + -0.318674,
- -3 + 0.324117,
- -7 + 0.236211,
- -5 + 0.649759,
- 7 + -0.548562,
- 3 + 0.0579074,
- -3 + 0.967526,
- 5 + 0.205966,
- 3 + -0.575908,
- -5 + -0.137605,
- 7 + 0.927195,
- -5 + 0.454236,
- 5 + -0.445633,
- 3 + 0.770301,
- 7 + -0.281772,
- -1 + -0.810031,
- -5 + 0.104421,
- -3 + 0.920684,
- -1 + 0.868938,
- 3 + -0.0053164,
- -3 + -0.718631,
- -5 + 0.455326,
- 5 + -0.820026,
- -5 + -0.768273,
- 3 + 0.0752762,
- 5 + 0.714693,
- 7 + -0.17771,
- -3 + 0.42292,
- -1 + -0.0175617,
- 5 + 0.528179,
- 3 + 0.568353,
- 5 + -0.587159,
- 1 + 0.801071,
- 7 + 0.0826319,
- -3 + 0.0275306,
- -5 + 0.676104,
- -7 + 0.583124,
- -3 + 0.218791,
- -7 + 0.227567,
- -3 + -0.430536,
- 5 + 0.654163,
- 3 + -0.467692,
- 7 + -0.155845,
- -7 + 0.089255,
- -3 + 0.938383,
- -3 + 0.906627,
- 7 + 0.950595,
- -5 + -0.489709,
- 7 + 0.671718,
- 7 + 0.164742,
- 3 + -0.852821,
- 7 + 0.582895,
- -3 + -0.742699,
- 1 + -0.0381558,
- 1 + 0.752823,
- 1 + 0.749102,
- -1 + 0.403834,
- -3 + -0.442988,
- 3 + 0.769955,
- -1 + 0.729227,
- 3 + -0.464394,
- -1 + 0.982971,
- 5 + 0.32225,
- 3 + 0.707018,
- 7 + 0.284523,
- -5 + -0.390641,
- 7 + 0.838552,
- 1 + -0.261646,
- 7 + 0.763129,
- -1 + 0.26582,
- 7 + 0.47961,
- 5 + 0.195016,
- -1 + 0.442942,
- 1 + -0.566928,
- 1 + -0.885894,
- 3 + 0.809517,
- 7 + -0.794782,
- 1 + 0.396051,
- -1 + -0.717371,
- -7 + -0.372855,
- -3 + -0.435502,
- -5 + 0.486243,
- -7 + 0.226385,
- -3 + -0.674962,
- 5 + -0.818546,
- -1 + 0.662066,
- -3 + 0.371445,
- 7 + -0.181262,
- -7 + -0.96998,
- 7 + -0.243668,
- 1 + -0.622788,
- -3 + -0.934349,
- -7 + -0.531977,
- 7 + 0.913129,
- -5 + 0.0873188,
- -5 + -0.802866,
- 5 + 0.176445,
- 7 + 0.931233,
- -1 + -0.345816,
- -7 + -0.698489,
- 3 + -0.0641756,
- -1 + 0.20042,
- 3 + -0.225253,
- 7 + 0.611709,
- -3 + -0.526143,
- 5 + -0.494852,
- -7 + -0.543889,
- 5 + -0.865676,
- 7 + -0.361067,
- -7 + 0.157247,
- -1 + -0.148807,
- -1 + 0.754306,
- -3 + -0.232635,
- 1 + 0.285416,
- 5 + 0.977439,
- 3 + -0.545843,
- -5 + -0.684446,
- 5 + 0.00538877,
- -1 + -0.416723,
- 1 + 0.455052,
- -1 + -0.694408,
- -5 + 0.5697,
- -3 + 0.239728,
- 7 + -0.157425,
- -3 + 0.307093,
- 3 + 0.598074,
- -3 + -0.192316,
- -5 + 0.683009,
- 1 + -0.276813,
- 7 + -0.0605859,
- 7 + -0.160651,
- 1 + 0.745574,
- 5 + -0.595225,
- -3 + 0.679057,
- -7 + 0.681067,
- -3 + 0.254237,
- 3 + -0.309311,
- -7 + 0.537294,
- 7 + -0.527087,
- -1 + -0.914636,
- -5 + 0.3696,
- -5 + 0.758544,
- -3 + 0.615554,
- -3 + -0.800559,
- 5 + 0.857245,
- -7 + 0.911095,
- -7 + -0.476043,
- 1 + 0.286482,
- -7 + -0.106087,
- -5 + 0.396264,
- -5 + -0.897017,
- 1 + -0.963821,
- -7 + -0.566173,
- -5 + 0.578676,
- 1 + 0.813064,
- 7 + 0.491473,
- 7 + -0.270985,
- 5 + 0.132949,
- 5 + 0.0161494,
- 1 + 0.474008,
- -5 + 0.796655,
- -3 + -0.63918,
- 3 + -0.967985,
- 7 + 0.879643,
- -1 + 0.214509,
- -5 + 0.00227151,
- 5 + 0.0762274,
- 3 + 0.59941,
- 3 + 0.340686,
- -5 + -0.518312,
- -5 + -0.6534,
- -3 + -0.133582,
- 1 + 0.772737,
- -3 + -0.796512,
- -1 + -0.232784,
- 7 + -0.567475,
- -5 + -0.612535,
- -5 + -0.743451,
- -5 + 0.922795,
- 7 + -0.360325,
- -5 + 0.664416,
- -7 + 0.537588,
- -7 + 0.090611,
- -1 + -0.411909,
- 3 + -0.926915,
- 7 + 0.395344,
- -7 + -0.661518,
- -3 + -0.170838,
- 7 + -0.357837,
- -5 + 0.471491,
- -3 + -0.382249,
- -3 + -0.52305,
- -1 + -0.97666,
- 3 + 0.0582765,
- -1 + -0.0656394,
- 7 + -0.406727,
- 1 + 0.00918714,
- -5 + -0.137935,
- 7 + -0.614004,
- 1 + -0.979364,
- -7 + 0.416733,
- -1 + -0.759126,
- -7 + -0.370293,
- -7 + -0.100497,
- 1 + 0.869131,
- -3 + 0.164885,
- -1 + -0.0975662,
- -7 + 0.186475,
- 3 + -0.918565,
- 3 + -0.0801415,
- 7 + -0.100654,
- -7 + -0.0564053,
- -5 + -0.266266,
- 1 + -0.250558,
- -7 + 0.00064827,
- 1 + 0.0900851,
- -5 + -0.598895,
- -3 + -0.300177,
- -3 + -0.733429,
- -1 + 0.644141,
- -7 + 0.473614,
- -1 + -0.641922,
- 5 + -0.771156,
- 1 + -0.408759,
- 5 + 0.12316,
- -5 + 0.293248,
- 1 + -0.878825,
- -7 + -0.414203,
- 1 + -0.158712,
- 7 + 0.739709,
- -7 + -0.86936,
- 3 + 0.642115,
- 3 + -0.385535,
- -7 + 0.143439,
- -3 + 0.698413,
- 5 + -0.678345,
- 5 + 0.565038,
- 5 + 0.815733,
- 5 + -0.707831,
- -7 + -0.849665,
- 3 + -0.293231,
- 3 + 0.511878,
- -7 + 0.0476101,
- -5 + -0.612903,
- 5 + 0.912856,
- -1 + -0.229084,
- -1 + -0.228542,
- -1 + 0.543728,
- 7 + -0.254476,
- 5 + -0.538093,
- 7 + 0.873386,
- -7 + -0.797387,
- 1 + 0.472407,
- -5 + 0.952256,
- -7 + 0.795923,
- -1 + -0.0898826,
- -3 + 0.851045,
- 3 + 0.649821,
- -5 + -0.623912,
- -1 + -0.232825,
- -5 + -0.293336,
- 3 + -0.175406,
- 7 + -0.126623,
- -3 + -0.458458,
- -1 + -0.716308,
- 3 + -0.442831,
- 5 + -0.240306,
- -3 + 0.62798,
- 7 + -0.901771,
- -1 + 0.980463,
- 3 + -0.502372,
- -7 + -0.861722,
- -1 + 0.827093,
- 1 + 0.12554,
- -3 + 0.270311,
- -5 + 0.348095,
- -1 + 0.913085,
- 7 + 0.957399,
- 7 + 0.340458,
- 5 + 0.0422461,
- -1 + -0.369125,
- -3 + 0.43044,
- 7 + -0.632377,
- -1 + -0.90659,
- 1 + -0.89239,
- 7 + 0.828316,
- 5 + 0.824523,
- -7 + -0.0536567,
- 1 + -0.0399239,
- 1 + 0.197041,
- -1 + -0.554157,
- -5 + 0.0431199,
- -3 + -0.304071,
- -3 + -0.331796,
- 5 + 0.822257,
- 3 + -0.638709,
- 3 + 0.639501,
- -1 + -0.549931,
- -5 + 0.893208,
- 3 + 0.791099,
- 7 + 0.153618,
- 3 + -0.838246,
- -7 + 0.475597,
- 1 + -0.354901,
- -7 + -0.761264,
- -1 + 0.106035,
- -3 + -0.481434,
- -1 + 0.234136,
- 5 + 0.375285,
- -7 + -0.539323,
- -3 + -0.671027,
- -3 + 0.212608,
- -5 + 0.992672,
- -3 + -0.655146,
- -1 + -0.675066,
- -1 + 0.944776,
- 5 + 0.653261,
- 7 + 0.703227,
- -1 + -0.329846,
- -3 + -0.29662,
- 5 + 0.0306179,
- 3 + 0.308382,
- 5 + -0.37852,
- 1 + 0.569875,
- -1 + 0.262195,
- -7 + 0.65172,
- -1 + -0.324076,
- -1 + -0.592955,
- 3 + 0.330534,
- -7 + 0.236835,
- 7 + -0.16363,
- 5 + -0.350766,
- 7 + 0.33076,
- -3 + 0.713702,
- 7 + 0.986953,
- 1 + -0.484957,
- 1 + 0.232317,
- 1 + -0.241183,
- 1 + -0.652168,
- -7 + -0.969083,
- -3 + -0.00466762,
- 7 + -0.643621,
- 5 + -0.512406,
- 3 + 0.559345,
- -1 + 0.876841,
- 1 + 0.0247327,
- -5 + 0.579806,
- -7 + -0.45585,
- -1 + -0.978404,
- -3 + -0.211921,
- 3 + 0.0595151,
- -5 + -0.772737,
- 1 + 0.701463,
- 7 + -0.055659,
- 1 + -0.434081,
- -7 + -0.748698,
- 5 + -0.742137,
- 5 + -0.0588123,
- -5 + 0.446934,
- -7 + -0.9576,
- -1 + -0.910423,
- -1 + -0.798973,
- -7 + 0.643822,
- -3 + -0.240149,
- 1 + -0.366265,
- 1 + -0.168219,
- -7 + -0.030838,
- 7 + -0.591915,
- -3 + -0.92018,
- 7 + 0.57597,
- -1 + 0.351344,
- -7 + 0.647625,
- 5 + -0.537432,
- -5 + -0.69753,
- 3 + 0.489766,
- -3 + -0.263308,
- 1 + 0.40383,
- -1 + 0.0716793,
- -3 + 0.0739884,
- 7 + -0.543397,
- -5 + 0.313842,
- -1 + -0.290457,
- -3 + -0.84267,
- -3 + -0.568324,
- -3 + -0.18694,
- 7 + 0.544842,
- 5 + 0.340199,
- -5 + -0.465435,
- 5 + 0.386054,
- 3 + -0.248471,
- -1 + -0.536871,
- -3 + -0.00456425,
- 5 + 0.30784,
- -7 + 0.567282,
- -3 + -0.689596,
- 7 + -0.973479,
- -5 + -0.292588,
- 1 + -0.0853992,
- 1 + 0.54008,
- 1 + 0.933126,
- 7 + 0.308498,
- -5 + 0.933511,
- -1 + -0.616556,
- 1 + 0.5256,
- -3 + 0.11786,
- -1 + 0.742156,
- -1 + 0.169955,
- -1 + -0.96657,
- -3 + 0.556796,
- -1 + -0.865691,
- -3 + -0.238262,
- -5 + 0.647911,
- 3 + 0.359834,
- 7 + 0.613736,
- 1 + 0.507745,
- -7 + -0.892512,
- 3 + 0.444704,
- 7 + -0.939748,
- -1 + 0.672554,
- -7 + 0.136662,
- -7 + 0.565658,
- 3 + 0.942443,
- -1 + 0.0449975,
- 1 + 0.92684,
- 3 + -0.297685,
- 5 + 0.568496,
- 3 + -0.144333,
- 1 + -0.166059,
- 5 + 0.245617,
- -7 + 0.0561295,
- 5 + -0.053852,
- 5 + 0.796947,
- -5 + 0.352517,
- -5 + 0.967329,
- 5 + -0.892274,
- 7 + -0.335576,
- -1 + -0.545664,
- 5 + 0.768217,
- -7 + -0.188918,
- -7 + 0.285642,
- -3 + -0.467917,
- -1 + 0.356141,
- -7 + -0.382192,
- -5 + 0.0410403,
- -3 + 0.593099,
- -1 + -0.407076,
- 7 + 0.399012,
- 3 + -0.215368,
- 5 + 0.00567285,
- 3 + 0.833758,
- 7 + -0.469107,
- -3 + 0.84339,
- -1 + -0.648244,
- -1 + 0.45709,
- 5 + 0.221697,
- -3 + 0.2979,
- -1 + -0.801441,
- 5 + 0.358525,
- 5 + 0.0155232,
- 7 + -0.613239,
- -3 + 0.770038,
- -3 + 0.386763,
- -1 + -0.977012,
- -5 + 0.0247041,
- 3 + -0.774763,
- 1 + -0.269862,
- 3 + 0.598317,
- -7 + -0.604919,
- -5 + -0.295425,
- -3 + -0.501016,
- 5 + 0.893051,
- -7 + 0.592268,
- -1 + -0.135156,
- 5 + -0.766252,
- -3 + 0.445672,
- 5 + 0.612924,
- -5 + 0.107889,
- -1 + 0.306333,
- -3 + -0.720024,
- 1 + -0.256542,
- -5 + -0.644907,
- -1 + -0.198375,
- -1 + 0.530318,
- 7 + 0.865427,
- -5 + -0.186188,
- 3 + 0.15118,
- 5 + 0.652307,
- 1 + 0.908472,
- 3 + 0.747761,
- -1 + -0.654492,
- 1 + -0.454527,
- 5 + 0.682724,
- -5 + 0.372245,
- 7 + 0.871819,
- 3 + -0.80367,
- -1 + 0.448117,
- -1 + 0.948526,
- -7 + -0.348271,
- 7 + -0.927127,
- 1 + 0.449701,
- -1 + -0.680563,
- 1 + 0.892784,
- 1 + -0.0924386,
- -1 + -0.959661,
- 7 + -0.081394,
- 5 + -0.963336,
- -5 + 0.805157,
- -7 + -0.285785,
- -7 + -0.592211,
- -5 + 0.413432,
- -1 + -0.723101,
- -3 + -0.0432179,
- -3 + 0.357774,
- 3 + -0.969629,
- -7 + 0.840992,
- 7 + -0.0670359,
- 1 + -0.230027,
- -7 + 0.00539775,
- -1 + 0.992222,
- -5 + 0.508197,
- -1 + -0.0701932,
- -7 + -0.916136,
- 1 + 0.121754,
- 3 + 0.979212,
- 5 + 0.710977,
- -3 + -0.444553,
- 1 + 0.775755,
- 1 + -0.731095,
- -5 + -0.962054,
- -7 + -0.137716,
- 1 + 0.0744596,
- -3 + -0.298853,
- 3 + -0.287877,
- 7 + -0.537653,
- 7 + -0.370057,
- 5 + 0.558642,
- -1 + -0.306097,
- 5 + 0.298301,
- 5 + 0.890951,
- 7 + 0.461226,
- 5 + -0.273165,
- -3 + 0.767864,
- -1 + -0.427128,
- -7 + 0.0742497,
- 3 + -0.628171,
- -1 + -0.383706,
- -5 + 0.926895,
- -3 + -0.111893,
- -1 + -0.568481,
- 3 + 0.982367,
- 3 + -0.746265,
- 7 + 0.602531,
- 5 + 0.639663,
- -5 + 0.640932,
- 3 + -0.339199,
- -7 + -0.872224,
- 7 + 0.493771,
- 5 + -0.0426846,
- 7 + -0.222289,
- 7 + -0.802753,
- 5 + -0.998975,
- 5 + 0.739618,
- 5 + -0.949418,
- -7 + -0.348646,
- 7 + -0.122117,
- -3 + -0.786274,
- -1 + -0.910026,
- 5 + -0.521515,
- 5 + 0.786492,
- -3 + -0.956601,
- -7 + -0.935189,
- -1 + 0.816024,
- 5 + 0.675236,
- 5 + 0.0495799,
- -7 + 0.738648,
- 7 + 0.424409,
- 3 + -0.438266,
- -7 + -0.491474,
- 1 + 0.22495,
- -5 + -0.0235629,
- -3 + 0.479672,
- -1 + 0.84058,
- -5 + -0.166951,
- 5 + -0.0577841,
- -1 + -0.642721,
- -1 + 0.723607,
- 1 + -0.873909,
- 3 + -0.888751,
- -1 + -0.370589,
- -3 + -0.0403842,
- 3 + 0.564038,
- 1 + -0.590923,
- -1 + -0.301823,
- 3 + -0.525907,
- -7 + -0.700129,
- -7 + -0.286343,
- -1 + -0.746766,
- -1 + 0.510312,
- -7 + 0.68781,
- -1 + -0.071507,
- 5 + 0.20512,
- 7 + 0.193939,
- -3 + 0.0940258,
- -1 + -0.815724,
- 7 + 0.914182,
- 3 + 0.582396,
- -5 + 0.182791,
- 5 + -0.169328,
- 5 + -0.539398,
- 1 + -0.544711,
- -7 + -0.29523,
- -7 + -0.220718,
- -7 + -0.424836,
- -1 + -0.583509,
- 5 + -0.998364,
- 7 + -0.624936,
- -3 + 0.682019,
- 7 + -0.0926723,
- -3 + -0.596477,
- -1 + -0.380871,
- -3 + -0.215605,
- 7 + -0.0981703,
- -7 + -0.181927,
- -1 + 0.668344,
- 1 + 0.550972,
- 1 + -0.362117,
- -1 + 0.434212,
- -7 + 0.529025,
- 5 + -0.166071,
- -3 + 0.473601,
- 5 + 0.555215,
- 7 + 0.878004,
- 3 + 0.90408,
- -5 + 0.504969,
- -3 + -0.667642,
- -5 + -0.538538,
- 5 + 0.188161,
- -1 + 0.914107,
- 3 + 0.472097,
- 7 + 0.510842,
- -5 + 0.985461,
- -7 + -0.394255,
- -5 + 0.890095,
- 5 + 0.634067,
- -7 + -0.944812,
- -1 + -0.199624,
- -1 + -0.447444,
- 3 + -0.228946,
- 7 + 0.22322,
- -5 + 0.654362,
- -5 + -0.200935,
- 3 + -0.833657,
- -7 + 0.802499,
- 1 + -0.704644,
- 5 + -0.415231,
- 5 + -0.488818,
- -5 + -0.405574,
- -3 + -0.551587,
- 3 + -0.143344,
- -5 + 0.992058,
- 7 + 0.973004,
- -1 + 0.899068,
- -1 + -0.201666,
- -5 + -0.327868,
- 3 + -0.727053,
- -7 + 0.268601,
- -7 + 0.109424,
- 7 + -0.950672,
- 1 + 0.76586,
- -3 + 0.875399,
- 7 + 0.0168127,
- -5 + -0.751942,
- 1 + 0.455423,
- 5 + -0.133098,
- 5 + 0.576325,
- -5 + -0.760309,
- -7 + -0.273288,
- -7 + -0.766843,
- 1 + -0.862775,
- 7 + -0.885211,
- 7 + 0.696724,
- -1 + 0.0780369,
- 1 + 0.275855,
- -5 + 0.21323,
- -1 + 0.30191,
- 5 + -0.129398,
- -3 + -0.659394,
- 7 + -0.537345,
- -5 + 0.726379,
- 1 + -0.351187,
- 1 + 0.413273,
- -7 + -0.460414,
- -1 + 0.780082,
- 7 + -0.750839,
- 7 + 0.140123,
- -1 + 0.431409,
- -1 + 0.467309,
- 7 + -0.189717,
- -5 + -0.619566,
- 1 + -0.664491,
- 5 + -0.259023,
- -3 + 0.956683,
- -3 + -0.749516,
- -5 + 0.131912,
- -7 + 0.20736,
- -7 + -0.370862,
- 3 + -0.38448,
- -7 + -0.0683076,
- 5 + -0.0808511,
- 3 + -0.716107,
- -7 + 0.282494,
- -5 + 0.690208,
- 5 + -0.0140297,
- 3 + -0.0253589,
- -1 + -0.286539,
- 1 + 0.632755,
- 3 + 0.678366,
- 7 + -0.298717,
- 7 + 0.931446,
- 3 + -0.000155271,
- 5 + 0.593412,
- -1 + -0.237465,
- 3 + 0.495449,
- 1 + 0.854041,
- 7 + 0.417438,
- 5 + 0.130533,
- 3 + 0.11828,
- 7 + -0.492641,
- -3 + 0.31251,
- -1 + -0.746348,
- -3 + 0.00667295,
- -7 + -0.849606,
- -1 + -0.621633,
- 5 + -0.780689,
- -7 + 0.325068,
- -1 + 0.14253,
- -5 + -0.467373,
- -7 + -0.215694,
- -5 + 0.473324,
- -5 + -0.0749665,
- 1 + 0.0177372,
- 1 + 0.874646,
- -3 + -0.548775,
- -5 + -0.644173,
- 7 + 0.890543,
- 1 + -0.258939,
- -1 + -0.381203,
- 7 + -0.989668,
- 7 + -0.370075,
- -7 + 0.0443089,
- 7 + -0.655745,
- -1 + 0.576317,
- 1 + -0.867409,
- -1 + -0.242211,
- 3 + -0.414673,
- -3 + -0.668824,
- -7 + -0.880169,
- -7 + -0.337623,
- 3 + 0.421604,
- 5 + 0.213655,
- 5 + -0.797275,
- 5 + 0.0784746,
- -7 + 0.29279,
- 5 + -0.266808,
- 5 + -0.847968,
- 3 + 0.627592,
- 5 + 0.100925,
- -7 + -0.836569,
- -5 + -0.484448,
- -7 + -0.260665,
- 7 + 0.98659,
- 5 + 0.811925,
- 5 + -0.263092,
- 3 + -0.423208,
- 3 + -0.219005,
- -7 + -0.0725037,
- -1 + -0.814871,
- 3 + 0.181891,
- -3 + 0.309198,
- 1 + 0.951535,
- -7 + 0.694465,
- -3 + 0.851734,
- -3 + 0.240617,
- 7 + -0.545582,
- 7 + -0.582447,
- -3 + -0.895393,
- 1 + -0.607017,
- 5 + 0.575812,
- 7 + 0.0485804,
- -5 + -0.609581,
- 3 + -0.991071,
- 1 + -0.69817,
- -1 + 0.612983,
- 7 + 0.124632,
- 1 + -0.934992,
- -5 + 0.629333,
- -1 + -0.479678,
- -7 + -0.690851,
- 3 + 0.0123024,
- 3 + 0.579883,
- -7 + -0.797862,
- 3 + 0.930494,
- 5 + 0.0959856,
- 5 + 0.799511,
- 3 + -0.702544,
- 3 + 0.863534,
- -7 + 0.723902,
- 3 + -0.925485,
- -3 + 0.0838314,
- 5 + -0.539124,
- -7 + 0.795782,
- -7 + -0.508871,
- 3 + -0.666186,
- -5 + -0.437818,
- 1 + 0.430824,
- -1 + 0.890288,
- 3 + 0.0323077,
- -5 + -0.451717,
- 1 + -0.994217,
- -5 + -0.889329,
- 1 + -0.154296,
- 3 + -0.139546,
- 3 + 0.783946,
- -1 + 0.843542,
- -7 + 0.742655,
- 3 + 0.0644047,
- -3 + 0.707173,
- 7 + -0.292937,
- -1 + 0.978045,
- 3 + -0.495493,
- 1 + 0.576421,
- -5 + 0.830068,
- -7 + -0.7389,
- -3 + 0.545496,
- 5 + 0.525718,
- -5 + 0.491613,
- -5 + 0.0724149,
- -5 + -0.581892,
- -5 + 0.148299,
- -3 + -0.0143521,
- -7 + 0.224096,
- -1 + -0.58379,
- -7 + -0.746189,
- 3 + 0.678161,
- 5 + -0.60352,
- 1 + -0.0123151,
- -3 + 0.935789,
- 7 + 0.146463,
- 5 + 0.0833464,
- -5 + 0.0973773,
- 1 + -0.634221,
- 5 + -0.199689,
- -5 + -0.977316,
- 1 + -0.468532,
- -3 + 0.912407,
- -1 + 0.618525,
- -5 + 0.641828,
- -3 + 0.161639,
- 3 + -0.521444,
- 1 + 0.217545,
- -3 + 0.776886,
- -5 + -0.0861521,
- 7 + -0.684462,
- 3 + 0.025459,
- 5 + -0.588791,
- 3 + -0.968869,
- -5 + 0.936218,
- 5 + -0.962381,
- 1 + 0.102731,
- 7 + 0.487412,
- 5 + -0.586347,
- -5 + 0.483033,
- 3 + 0.147303,
- 7 + 0.545176,
- -1 + -0.346122,
- -3 + -0.550012,
- -3 + 0.175068,
- 5 + -0.32015,
- 1 + 0.524341,
- -7 + 0.645118,
- -5 + -0.940018,
- -1 + -0.97908,
- -7 + -0.515108,
- -3 + 0.367395,
- 1 + 0.545659,
- 1 + -0.286328,
- 5 + -0.58779,
- 1 + 0.337098,
- 7 + -0.330973,
- -3 + 0.374149,
- 7 + -0.0352384,
- -3 + 0.100802,
- -3 + -0.496571,
- 5 + -0.780307,
- 1 + -0.478443,
- 5 + 0.67526,
- 7 + -0.425565,
- 7 + 0.754558,
- -7 + -0.775828,
- 5 + 0.655701,
- 7 + -0.438407,
- 3 + -0.775985,
- 7 + -0.666725,
- -1 + 0.797674,
- 1 + -0.749333,
- -7 + 0.194764,
- -7 + 0.625181,
- -5 + -0.060977,
- -5 + 0.643178,
- 3 + -0.933005,
- -3 + -0.998434,
- 3 + 0.713815,
- -3 + -0.574046,
- -3 + -0.0416154,
- -7 + 0.296629,
- 7 + 0.191779,
- -7 + 0.833033,
- -3 + 0.487987,
- -3 + -0.575328,
- 5 + 0.496461,
- 3 + 0.589905,
- 7 + -0.924183,
- -1 + 0.696718,
- 5 + -0.875373,
- -3 + 0.0319824,
- 5 + -0.207871,
- 3 + 0.177233,
- -3 + -0.761711,
- 1 + 0.401589,
- 7 + 0.538526,
- 7 + -0.320289,
- -3 + -0.281917,
- -5 + -0.547839,
- -7 + -0.322797,
- -5 + -0.605992,
- 5 + 0.785395,
- -1 + 0.0550308,
- -5 + 0.511285,
- -7 + 0.402531,
- -7 + -0.464181,
- 5 + -0.160938,
- -5 + -0.735561,
- -5 + 0.0996571,
- 7 + 0.593118,
- 7 + -0.0328994,
- -5 + -0.98964,
- 3 + 0.205471,
- -1 + 0.200857,
- 7 + -0.771514,
- 1 + -0.587245,
- 3 + 0.26805,
- -3 + 0.784424,
- -5 + -0.963779,
- 7 + -0.505932,
- -1 + -0.171588,
- -1 + 0.670593,
- -7 + 0.301767,
- 5 + 0.0138393,
- -1 + -0.984387,
- -1 + 0.0391519,
- -3 + -0.222087,
- 7 + 0.0864488,
- 5 + -0.4927,
- 7 + 0.257574,
- -3 + 0.232144,
- -7 + 0.327466,
- 1 + -0.464061,
- -3 + -0.275329,
- -1 + -0.0648923,
- -7 + 0.674159,
- -7 + -0.413218,
- -7 + -0.692417,
- 1 + -0.762459,
- -5 + -0.913253,
- -7 + 0.36255,
- -5 + 0.917413,
- -7 + 0.556944,
- 7 + 0.869794,
- -5 + 0.599393,
- -7 + -0.957509,
- 3 + -0.0653876,
- -3 + 0.542317,
- 7 + -0.919778,
- -1 + 0.389195,
- 1 + -0.694826,
- -1 + -0.684451,
- 5 + -0.232338,
- 7 + 0.107159,
- 1 + -0.408376,
- 3 + -0.669585,
- 5 + 0.257082,
- 5 + 0.831891,
- -1 + 0.211606,
- -5 + -0.384855,
- 7 + 0.020007,
- -5 + -0.428625,
- -3 + -0.0360878,
- 5 + -0.848203,
- 3 + 0.0254734,
- -3 + 0.749542,
- -7 + -0.804563,
- -1 + -0.0972806,
- 1 + -0.248763,
- -5 + -0.480906,
- -7 + 0.494774,
- -7 + 0.809284,
- 1 + 0.892301,
- 3 + -0.866702,
- 7 + 0.549121,
- -7 + -0.807113,
- 5 + 0.817796,
- -3 + -0.258985,
- -3 + -0.652257,
- 1 + 0.857754,
- 1 + 0.602559,
- -3 + 0.459551,
- -5 + 0.12109,
- 7 + 0.228169,
- 3 + 0.268535,
- -5 + -0.511365,
- 3 + 0.473797,
- -3 + 0.789188,
- 5 + -0.233201,
- -1 + 0.337202,
- 3 + 0.0872898,
- -5 + -0.577231,
- -3 + -0.794605,
- -3 + 0.948282,
- 1 + 0.86739,
- 7 + -0.853303,
- 1 + 0.585277,
- -5 + -0.0480538,
- 3 + 0.131517,
- -5 + 0.256086,
- 3 + -0.220017,
- -1 + 0.968746,
- 1 + -0.866085,
- 1 + -0.75045,
- 3 + 0.103057,
- 3 + -0.280213,
- 7 + -0.915525,
- 1 + 0.910469,
- -1 + 0.122471,
- 7 + 0.756213,
- -1 + -0.979998,
- -3 + -0.526045,
- -3 + -0.515105,
- -3 + 0.191857,
- -5 + 0.861293,
- -5 + 0.557644,
- -7 + 0.955665,
- -7 + -0.218954,
- -5 + 0.843849,
- 3 + 0.700339,
- -5 + 0.308848,
- 5 + -0.671504,
- -7 + -0.977673,
- -3 + -0.243973,
- -7 + -0.21181,
- 5 + -0.722984,
- 1 + -0.679969,
- 1 + -0.943541,
- -5 + 0.705531,
- -5 + -0.327772,
- 3 + -0.462895,
- -3 + 0.0536484,
- -5 + -0.181505,
- 1 + -0.89014,
- 3 + -0.24572,
- 3 + -0.890222,
- -3 + 0.668824,
- -1 + -0.785433,
- -5 + -0.835302,
- 7 + -0.464588,
- -3 + -0.970526,
- -7 + -0.881556,
- 3 + -0.690873,
- -7 + 0.627452,
- 7 + 0.162041,
- 1 + 0.574909,
- -3 + -0.436167,
- -7 + -0.415736,
- -1 + -0.330565,
- 3 + -0.0637465,
- 1 + -0.952135,
- 7 + 0.820211,
- 1 + 0.670167,
- 3 + -0.227245,
- 3 + 0.784935,
- -7 + -0.114356,
- -7 + -0.79073,
- -7 + -0.0845568,
- -3 + 0.0352457,
- -1 + 0.23913,
- 3 + -0.319363,
- -1 + -0.784674,
- 7 + 0.182406,
- -3 + -0.208943,
- 1 + -0.0539068,
- 5 + -0.793545,
- 7 + -0.926668,
- -3 + -0.327488,
- -5 + 0.286006,
- 5 + 0.755716,
- -1 + 0.396711,
- -5 + 0.50953,
- -5 + 0.0396668,
- -7 + 0.294158,
- 7 + 0.191498,
- 1 + -0.157408,
- 1 + -0.341843,
- 1 + 0.34502,
- 1 + 0.892611,
- 7 + 0.205394,
- -3 + 0.558871,
- -5 + 0.209696,
- -1 + 0.119176,
- 3 + -0.0071817,
- -5 + -0.177535,
- 3 + 0.909066,
- -3 + -0.741923,
- 1 + -0.539941,
- -3 + -0.037078,
- 1 + 0.791042,
- -5 + 0.482362,
- -5 + -0.0119576,
- -3 + 0.52501,
- -7 + 0.76094,
- -7 + 0.813217,
- 7 + 0.985842,
- 3 + -0.529906,
- 1 + -0.423377,
- -3 + 0.0981717,
- -3 + -0.223135,
- -5 + -0.61793,
- 5 + -0.559953,
- 5 + -0.469591,
- -1 + 0.342377,
- 3 + -0.0782716,
- 7 + -0.684588,
- 7 + 0.389739,
- 5 + 0.10658,
- -5 + 0.922608,
- 7 + 0.602939,
- -1 + 0.464956,
- 3 + -0.789037,
- 5 + 0.429394,
- 3 + -0.550469,
- 1 + -0.900731,
- -3 + -0.623247,
- -7 + -0.650424,
- -1 + 0.131661,
- -1 + -0.806985,
- 1 + 0.960326,
- -1 + -0.193632,
- 7 + 0.582939,
- -1 + -0.468436,
- 5 + 0.0584084,
- -3 + 0.989501,
- -7 + -0.836051,
- -7 + 0.494241,
- -3 + 0.338635,
- -1 + -0.648491,
- -3 + 0.319444,
- 5 + -0.976509,
- -7 + -0.560152,
- 1 + 0.968145,
- -3 + 0.506876,
- 1 + -0.446687,
- -3 + -0.557403,
- -5 + 0.386343,
- 7 + -0.26601,
- 5 + 0.768097,
- -1 + -0.862516,
- 3 + 0.092811,
- 1 + 0.688699,
- -7 + 0.437148,
- -7 + 0.819611,
- -5 + 0.433439,
- -3 + 0.0525214,
- 7 + -0.875873,
- -1 + -0.318693,
- -7 + 0.941041,
- 3 + -0.938497,
- -5 + -0.700787,
- -5 + -0.208713,
- -1 + -0.926069,
- 5 + 0.763435,
- -3 + -0.753673,
- -3 + -0.436892,
- 5 + 0.25309,
- 3 + 0.376517,
- 7 + 0.234089,
- -1 + 0.602584,
- 7 + -0.729457,
- -5 + 0.528713,
- 5 + -0.0616122,
- -5 + 0.485624,
- -3 + 0.341517,
- 3 + -0.364478,
- 7 + 0.124957,
- -1 + -0.27282,
- 5 + 0.606241,
- -7 + 0.409408,
- -7 + 0.326685,
- 1 + -0.778263,
- -5 + -0.479604,
- -5 + 0.454517,
- 5 + -0.236371,
- -5 + -0.208087,
- -7 + -0.336902,
- -3 + 0.704184,
- -1 + -0.607403,
- -1 + 0.790341,
- -1 + -0.458402,
- 3 + 0.29028,
- -5 + 0.608615,
- -5 + 0.064577,
- 7 + -0.440438,
- 7 + 0.518133,
- 3 + -0.400959,
- -5 + 0.957821,
- -3 + 0.832433,
- -7 + -0.941491,
- -3 + -0.158894,
- -3 + 0.735858,
- -5 + -0.942659,
- -7 + 0.362461,
- -3 + 0.175003,
- -3 + 0.756938,
- 5 + -0.586989,
- -3 + -0.867437,
- -7 + 0.204605,
- 7 + -0.447344,
- 7 + 0.37656,
- -7 + 0.548076,
- 5 + -0.720016,
- -7 + -0.533887,
- -1 + 0.0948688,
- -1 + 0.921622,
- 5 + -0.363181,
- 1 + 0.875163,
- 1 + -0.975703,
- -7 + -0.991177,
- 3 + 0.142339,
- -7 + -0.670125,
- 7 + 0.835181,
- -7 + -0.176508,
- 7 + -0.391808,
- -3 + 0.659639,
- -7 + 0.311382,
- -5 + 0.965804,
- 3 + 0.127325,
- 1 + -0.000208556,
- -7 + -0.777168,
- -3 + 0.467445,
- -7 + -0.274472,
- 7 + -0.125423,
- -7 + -0.341567,
- -7 + -0.152778,
- 3 + 0.328462,
- 3 + 0.96799,
- 3 + -0.863599,
diff --git a/gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_output.dat b/gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_output.dat
deleted file mode 100644
index 462b664b5..000000000
--- a/gr-atsc/src/lib/qa_atsci_viterbi_decoder_t1_output.dat
+++ /dev/null
@@ -1,2484 +0,0 @@
-69,
-35,
-24,
-72,
-92,
-92,
-20,
-88,
-31,
-124,
-88,
-87,
-65,
-30,
-169,
-225,
-0,
-98,
-8,
-39,
-35,
-233,
-205,
-67,
-15,
-37,
-249,
-114,
-194,
-215,
-196,
-7,
-251,
-93,
-80,
-215,
-186,
-228,
-48,
-217,
-97,
-137,
-177,
-163,
-168,
-90,
-132,
-168,
-189,
-140,
-208,
-224,
-118,
-158,
-36,
-134,
-196,
-29,
-248,
-134,
-245,
-189,
-141,
-240,
-26,
-221,
-200,
-212,
-194,
-248,
-173,
-35,
-130,
-95,
-198,
-42,
-185,
-74,
-211,
-119,
-215,
-164,
-88,
-78,
-66,
-124,
-212,
-6,
-154,
-204,
-141,
-143,
-137,
-27,
-127,
-164,
-249,
-72,
-120,
-187,
-64,
-38,
-222,
-195,
-133,
-165,
-237,
-63,
-240,
-193,
-183,
-199,
-101,
-15,
-21,
-168,
-140,
-233,
-175,
-38,
-182,
-60,
-182,
-64,
-87,
-53,
-228,
-80,
-126,
-93,
-11,
-191,
-132,
-234,
-130,
-10,
-143,
-112,
-74,
-127,
-49,
-2,
-71,
-150,
-18,
-93,
-63,
-158,
-71,
-238,
-197,
-253,
-43,
-123,
-62,
-130,
-177,
-35,
-211,
-47,
-129,
-223,
-238,
-6,
-202,
-112,
-17,
-89,
-224,
-91,
-217,
-17,
-94,
-33,
-168,
-112,
-126,
-231,
-14,
-197,
-214,
-212,
-195,
-1,
-79,
-1,
-132,
-1,
-36,
-87,
-48,
-165,
-55,
-30,
-172,
-1,
-143,
-189,
-90,
-112,
-24,
-52,
-130,
-119,
-85,
-42,
-231,
-211,
-18,
-246,
-153,
-232,
-202,
-92,
-234,
-26,
-93,
-110,
-27,
-130,
-197,
-75,
-40,
-253,
-106,
-212,
-254,
-250,
-145,
-89,
-106,
-170,
-141,
-236,
-33,
-227,
-23,
-9,
-183,
-41,
-255,
-80,
-18,
-201,
-172,
-252,
-227,
-10,
-107,
-255,
-141,
-49,
-74,
-181,
-46,
-181,
-138,
-44,
-175,
-27,
-133,
-26,
-198,
-19,
-6,
-232,
-246,
-29,
-241,
-174,
-71,
-240,
-254,
-90,
-185,
-171,
-87,
-157,
-182,
-194,
-157,
-67,
-243,
-232,
-248,
-34,
-157,
-130,
-78,
-77,
-158,
-212,
-103,
-100,
-231,
-110,
-76,
-222,
-140,
-61,
-140,
-211,
-46,
-138,
-46,
-232,
-54,
-133,
-133,
-236,
-72,
-35,
-47,
-59,
-11,
-40,
-94,
-168,
-171,
-172,
-246,
-74,
-128,
-93,
-174,
-104,
-204,
-251,
-70,
-88,
-57,
-210,
-44,
-103,
-93,
-90,
-79,
-148,
-223,
-213,
-129,
-39,
-248,
-177,
-99,
-4,
-217,
-193,
-172,
-133,
-110,
-162,
-207,
-239,
-0,
-126,
-87,
-205,
-121,
-158,
-37,
-179,
-113,
-81,
-27,
-207,
-171,
-107,
-99,
-139,
-65,
-228,
-178,
-58,
-149,
-22,
-62,
-111,
-216,
-234,
-244,
-70,
-141,
-195,
-54,
-142,
-66,
-141,
-91,
-187,
-44,
-129,
-111,
-157,
-210,
-138,
-108,
-126,
-245,
-208,
-9,
-55,
-180,
-188,
-113,
-74,
-211,
-175,
-185,
-171,
-154,
-174,
-242,
-40,
-114,
-40,
-183,
-180,
-182,
-19,
-112,
-226,
-148,
-223,
-128,
-103,
-106,
-237,
-229,
-96,
-189,
-239,
-151,
-114,
-172,
-8,
-189,
-127,
-184,
-118,
-43,
-83,
-37,
-29,
-123,
-151,
-70,
-50,
-76,
-252,
-69,
-188,
-223,
-218,
-156,
-96,
-65,
-6,
-77,
-39,
-102,
-11,
-23,
-254,
-125,
-195,
-7,
-59,
-67,
-191,
-178,
-111,
-18,
-215,
-141,
-142,
-111,
-211,
-192,
-187,
-208,
-6,
-119,
-176,
-225,
-19,
-16,
-34,
-26,
-94,
-74,
-128,
-105,
-97,
-127,
-231,
-37,
-134,
-35,
-104,
-69,
-213,
-215,
-88,
-172,
-101,
-230,
-27,
-56,
-167,
-214,
-9,
-174,
-78,
-185,
-143,
-98,
-202,
-178,
-124,
-40,
-253,
-253,
-146,
-94,
-124,
-122,
-131,
-2,
-157,
-236,
-72,
-114,
-196,
-161,
-31,
-41,
-136,
-58,
-98,
-47,
-17,
-107,
-222,
-96,
-37,
-110,
-194,
-239,
-32,
-63,
-24,
-29,
-60,
-170,
-124,
-185,
-37,
-0,
-188,
-195,
-237,
-4,
-53,
-178,
-165,
-84,
-219,
-45,
-143,
-62,
-93,
-161,
-169,
-60,
-1,
-206,
-170,
-196,
-190,
-203,
-4,
-214,
-232,
-65,
-129,
-101,
-250,
-166,
-102,
-182,
-105,
-83,
-186,
-159,
-5,
-96,
-244,
-225,
-142,
-132,
-31,
-236,
-37,
-201,
-40,
-39,
-152,
-210,
-236,
-86,
-157,
-240,
-44,
-134,
-49,
-173,
-235,
-44,
-83,
-81,
-226,
-189,
-165,
-157,
-93,
-170,
-254,
-81,
-140,
-141,
-213,
-171,
-121,
-251,
-117,
-161,
-35,
-13,
-116,
-16,
-99,
-17,
-0,
-144,
-152,
-50,
-61,
-132,
-95,
-145,
-214,
-66,
-79,
-123,
-223,
-172,
-38,
-222,
-254,
-178,
-107,
-211,
-94,
-229,
-207,
-212,
-134,
-242,
-225,
-251,
-2,
-69,
-12,
-3,
-214,
-164,
-54,
-20,
-40,
-149,
-165,
-254,
-215,
-245,
-122,
-183,
-162,
-160,
-150,
-160,
-83,
-1,
-116,
-177,
-230,
-67,
-133,
-109,
-54,
-103,
-104,
-56,
-173,
-117,
-60,
-131,
-26,
-115,
-151,
-67,
-9,
-61,
-65,
-224,
-50,
-188,
-152,
-212,
-92,
-46,
-116,
-175,
-48,
-232,
-97,
-23,
-44,
-231,
-132,
-98,
-78,
-237,
-155,
-251,
-98,
-215,
-126,
-124,
-74,
-22,
-191,
-83,
-83,
-1,
-52,
-133,
-189,
-205,
-90,
-26,
-252,
-207,
-202,
-45,
-183,
-43,
-68,
-228,
-19,
-201,
-70,
-98,
-182,
-225,
-93,
-25,
-185,
-220,
-150,
-4,
-243,
-86,
-88,
-70,
-88,
-141,
-203,
-21,
-90,
-38,
-48,
-87,
-245,
-250,
-132,
-173,
-38,
-200,
-145,
-57,
-145,
-215,
-156,
-72,
-185,
-250,
-98,
-114,
-215,
-248,
-119,
-202,
-78,
-207,
-16,
-166,
-92,
-220,
-188,
-183,
-2,
-237,
-14,
-247,
-231,
-146,
-164,
-14,
-91,
-53,
-72,
-237,
-13,
-228,
-53,
-199,
-222,
-151,
-57,
-181,
-144,
-177,
-127,
-222,
-128,
-143,
-133,
-220,
-107,
-66,
-147,
-109,
-47,
-162,
-101,
-23,
-52,
-9,
-37,
-143,
-63,
-110,
-125,
-77,
-82,
-179,
-20,
-49,
-75,
-78,
-230,
-219,
-255,
-102,
-186,
-127,
-246,
-64,
-92,
-98,
-130,
-240,
-208,
-177,
-146,
-53,
-200,
-198,
-63,
-238,
-86,
-127,
-92,
-212,
-204,
-175,
-135,
-224,
-224,
-210,
-47,
-199,
-173,
-46,
-45,
-104,
-174,
-36,
-168,
-10,
-134,
-42,
-250,
-86,
-220,
-141,
-139,
-165,
-83,
-203,
-148,
-170,
-74,
-241,
-126,
-22,
-160,
-6,
-247,
-128,
-216,
-38,
-72,
-134,
-85,
-117,
-238,
-3,
-153,
-151,
-13,
-32,
-194,
-8,
-118,
-158,
-149,
-2,
-68,
-233,
-205,
-217,
-148,
-23,
-202,
-19,
-46,
-106,
-25,
-38,
-235,
-241,
-76,
-51,
-120,
-162,
-169,
-103,
-165,
-66,
-254,
-179,
-98,
-192,
-188,
-217,
-95,
-82,
-219,
-164,
-59,
-169,
-125,
-208,
-193,
-71,
-227,
-239,
-177,
-252,
-22,
-157,
-238,
-98,
-208,
-102,
-5,
-121,
-206,
-170,
-188,
-204,
-94,
-31,
-141,
-26,
-248,
-237,
-108,
-212,
-146,
-168,
-125,
-15,
-120,
-62,
-87,
-91,
-46,
-9,
-88,
-68,
-166,
-70,
-167,
-118,
-173,
-172,
-240,
-124,
-87,
-172,
-72,
-181,
-203,
-214,
-207,
-196,
-196,
-59,
-152,
-86,
-228,
-21,
-102,
-92,
-84,
-190,
-183,
-131,
-199,
-16,
-199,
-110,
-86,
-110,
-229,
-4,
-27,
-213,
-128,
-114,
-129,
-201,
-39,
-77,
-160,
-247,
-17,
-100,
-51,
-169,
-187,
-23,
-191,
-33,
-115,
-20,
-223,
-43,
-151,
-167,
-59,
-94,
-21,
-146,
-205,
-251,
-150,
-233,
-208,
-23,
-91,
-82,
-224,
-131,
-159,
-129,
-122,
-177,
-229,
-173,
-91,
-160,
-196,
-27,
-194,
-56,
-47,
-162,
-99,
-198,
-74,
-159,
-37,
-95,
-49,
-243,
-91,
-200,
-220,
-43,
-223,
-55,
-126,
-192,
-187,
-29,
-65,
-53,
-207,
-39,
-226,
-42,
-200,
-167,
-69,
-138,
-223,
-116,
-45,
-67,
-59,
-119,
-226,
-97,
-215,
-20,
-84,
-50,
-221,
-48,
-94,
-188,
-104,
-220,
-125,
-35,
-249,
-191,
-89,
-200,
-230,
-60,
-243,
-175,
-227,
-56,
-57,
-195,
-173,
-103,
-7,
-233,
-222,
-234,
-74,
-181,
-254,
-158,
-232,
-219,
-207,
-70,
-152,
-56,
-34,
-22,
-92,
-28,
-213,
-181,
-229,
-188,
-241,
-216,
-107,
-213,
-17,
-165,
-153,
-190,
-12,
-160,
-167,
-235,
-139,
-242,
-161,
-138,
-144,
-137,
-101,
-96,
-208,
-254,
-152,
-242,
-20,
-244,
-14,
-234,
-170,
-243,
-167,
-155,
-204,
-19,
-113,
-221,
-184,
-11,
-156,
-197,
-171,
-68,
-177,
-55,
-54,
-82,
-193,
-199,
-220,
-39,
-39,
-172,
-37,
-192,
-158,
-58,
-180,
-173,
-37,
-94,
-161,
-204,
-250,
-109,
-224,
-108,
-75,
-153,
-119,
-232,
-94,
-35,
-45,
-15,
-90,
-99,
-98,
-27,
-43,
-62,
-66,
-83,
-234,
-104,
-20,
-137,
-162,
-201,
-54,
-200,
-39,
-215,
-149,
-34,
-69,
-117,
-142,
-144,
-14,
-6,
-121,
-109,
-41,
-166,
-125,
-131,
-10,
-223,
-159,
-53,
-29,
-225,
-137,
-8,
-74,
-157,
-145,
-237,
-102,
-200,
-181,
-142,
-159,
-74,
-177,
-229,
-192,
-64,
-118,
-207,
-70,
-239,
-60,
-111,
-149,
-185,
-243,
-160,
-153,
-146,
-214,
-182,
-116,
-95,
-191,
-190,
-253,
-80,
-171,
-99,
-25,
-97,
-242,
-185,
-172,
-163,
-158,
-108,
-228,
-20,
-59,
-42,
-4,
-120,
-154,
-154,
-49,
-141,
-58,
-202,
-32,
-16,
-129,
-149,
-112,
-65,
-83,
-109,
-146,
-255,
-209,
-171,
-96,
-196,
-100,
-13,
-103,
-2,
-121,
-76,
-23,
-181,
-118,
-28,
-45,
-17,
-183,
-95,
-158,
-241,
-42,
-191,
-2,
-172,
-84,
-115,
-237,
-168,
-224,
-127,
-168,
-178,
-42,
-8,
-118,
-142,
-22,
-222,
-145,
-143,
-42,
-169,
-69,
-160,
-197,
-114,
-177,
-124,
-210,
-80,
-110,
-252,
-16,
-113,
-168,
-101,
-228,
-149,
-13,
-197,
-20,
-181,
-119,
-63,
-190,
-237,
-206,
-212,
-203,
-95,
-100,
-245,
-9,
-169,
-150,
-207,
-28,
-72,
-76,
-238,
-153,
-186,
-234,
-169,
-44,
-146,
-14,
-17,
-40,
-28,
-214,
-61,
-209,
-77,
-125,
-144,
-59,
-75,
-100,
-6,
-171,
-200,
-252,
-180,
-114,
-147,
-131,
-142,
-219,
-207,
-124,
-117,
-138,
-102,
-31,
-183,
-249,
-45,
-200,
-34,
-74,
-158,
-96,
-27,
-236,
-221,
-172,
-39,
-40,
-16,
-46,
-212,
-217,
-43,
-136,
-75,
-190,
-11,
-217,
-154,
-219,
-85,
-15,
-102,
-188,
-46,
-29,
-182,
-92,
-229,
-217,
-166,
-131,
-57,
-194,
-112,
-22,
-110,
-151,
-63,
-127,
-197,
-19,
-88,
-241,
-156,
-163,
-175,
-168,
-125,
-73,
-131,
-211,
-88,
-233,
-143,
-135,
-7,
-70,
-227,
-236,
-31,
-138,
-112,
-88,
-77,
-224,
-111,
-187,
-120,
-174,
-59,
-62,
-194,
-147,
-47,
-94,
-55,
-222,
-6,
-180,
-40,
-138,
-135,
-129,
-116,
-23,
-8,
-123,
-93,
-236,
-103,
-125,
-118,
-216,
-213,
-195,
-184,
-69,
-127,
-49,
-244,
-187,
-111,
-182,
-78,
-158,
-21,
-134,
-125,
-27,
-59,
-165,
-165,
-195,
-38,
-25,
-218,
-47,
-149,
-56,
-27,
-252,
-181,
-146,
-213,
-139,
-86,
-142,
-208,
-213,
-191,
-196,
-145,
-46,
-123,
-223,
-205,
-144,
-102,
-75,
-171,
-161,
-240,
-81,
-101,
-23,
-107,
-64,
-70,
-0,
-120,
-98,
-253,
-46,
-244,
-210,
-185,
-74,
-96,
-138,
-32,
-32,
-78,
-177,
-79,
-201,
-145,
-28,
-89,
-248,
-103,
-5,
-154,
-88,
-87,
-255,
-112,
-195,
-63,
-183,
-196,
-184,
-25,
-193,
-230,
-14,
-148,
-160,
-89,
-245,
-42,
-122,
-21,
-121,
-43,
-100,
-67,
-189,
-129,
-157,
-182,
-233,
-162,
-80,
-65,
-250,
-80,
-178,
-190,
-143,
-105,
-130,
-72,
-131,
-67,
-47,
-145,
-216,
-208,
-235,
-205,
-251,
-101,
-227,
-116,
-145,
-71,
-183,
-78,
-201,
-84,
-4,
-178,
-247,
-85,
-244,
-242,
-165,
-166,
-176,
-53,
-16,
-50,
-126,
-147,
-118,
-173,
-37,
-78,
-125,
-16,
-28,
-120,
-117,
-0,
-237,
-6,
-71,
-164,
-85,
-17,
-249,
-90,
-195,
-240,
-175,
-184,
-227,
-85,
-94,
-147,
-138,
-110,
-197,
-8,
-2,
-60,
-182,
-39,
-139,
-51,
-55,
-167,
-172,
-173,
-167,
-153,
-179,
-239,
-62,
-9,
-1,
-55,
-99,
-196,
-40,
-19,
-124,
-12,
-104,
-219,
-159,
-243,
-74,
-101,
-251,
-76,
-161,
-178,
-115,
-44,
-230,
-171,
-212,
-146,
-88,
-124,
-44,
-12,
-108,
-107,
-21,
-109,
-163,
-121,
-50,
-204,
-140,
-175,
-216,
-244,
-138,
-119,
-232,
-213,
-221,
-228,
-33,
-127,
-150,
-149,
-172,
-124,
-64,
-129,
-15,
-153,
-253,
-59,
-166,
-105,
-167,
-187,
-215,
-74,
-53,
-9,
-22,
-193,
-184,
-238,
-182,
-67,
-102,
-158,
-24,
-68,
-130,
-58,
-195,
-24,
-207,
-111,
-149,
-16,
-240,
-164,
-170,
-238,
-224,
-80,
-88,
-135,
-12,
-47,
-209,
-65,
-57,
-232,
-2,
-242,
-215,
-185,
-53,
-62,
-87,
-78,
-130,
-218,
-136,
-69,
-243,
-87,
-181,
-136,
-104,
-166,
-44,
-18,
-148,
-13,
-99,
-237,
-148,
-111,
-28,
-102,
-176,
-86,
-79,
-179,
-72,
-38,
-109,
-125,
-100,
-197,
-203,
-231,
-159,
-83,
-44,
-146,
-171,
-226,
-27,
-20,
-137,
-72,
-39,
-29,
-85,
-138,
-10,
-234,
-249,
-39,
-81,
-170,
-125,
-160,
-94,
-197,
-198,
-203,
-67,
-43,
-145,
-15,
-18,
-48,
-98,
-63,
-195,
-14,
-34,
-222,
-35,
-171,
-39,
-74,
-201,
-125,
-212,
-212,
-103,
-206,
-251,
-185,
-121,
-121,
-89,
-215,
-63,
-32,
-163,
-130,
-75,
-52,
-145,
-94,
-101,
-244,
-158,
-40,
-3,
-192,
-7,
-38,
-107,
-47,
-113,
-52,
-172,
-69,
-8,
-20,
-20,
-4,
-205,
-141,
-126,
-38,
-101,
-189,
-71,
-9,
-64,
-147,
-62,
-210,
-241,
-163,
-198,
-143,
-204,
-202,
-80,
-212,
-241,
-187,
-4,
-98,
-240,
-176,
-168,
-249,
-197,
-188,
-254,
-146,
-73,
-124,
-185,
-175,
-57,
-1,
-184,
-122,
-148,
-246,
-76,
-134,
-154,
-19,
-21,
-102,
-222,
-102,
-59,
-207,
-33,
-63,
-49,
-18,
-240,
-218,
-11,
-181,
-150,
-9,
-72,
-224,
-134,
-2,
-143,
-192,
-3,
-71,
-58,
-151,
-62,
-135,
-29,
-216,
-154,
-51,
-63,
-120,
-153,
-123,
-72,
-187,
-187,
-122,
-206,
-171,
-84,
-218,
-97,
-234,
-228,
-169,
-203,
-106,
-172,
-90,
-42,
-175,
-162,
-101,
-71,
-224,
-236,
-101,
-185,
-135,
-153,
-248,
-0,
-51,
-116,
-72,
-238,
-47,
-194,
-189,
-218,
-22,
-151,
-60,
-1,
-123,
-230,
-204,
-230,
-146,
-38,
-17,
-66,
-200,
-118,
-137,
-169,
-99,
-239,
-98,
-234,
-136,
-91,
-234,
-187,
-208,
-51,
-170,
-255,
-245,
-103,
-218,
-11,
-255,
-22,
-12,
-123,
-252,
-217,
-97,
-142,
-255,
-115,
-208,
-200,
-234,
-90,
-114,
-77,
-73,
-212,
-56,
-209,
-48,
-35,
-141,
-0,
-86,
-55,
-0,
-75,
-159,
-218,
-87,
-159,
-240,
-100,
-26,
-237,
-61,
-124,
-124,
-61,
-239,
-77,
-6,
-218,
-167,
-120,
-39,
-241,
-77,
-96,
-195,
-125,
-132,
-80,
-126,
-218,
-136,
-126,
-38,
-40,
-88,
-126,
-199,
-73,
-226,
-225,
-55,
-32,
-94,
-179,
-94,
-78,
-1,
-100,
-40,
-168,
-220,
-80,
-154,
-41,
-177,
-93,
-167,
-53,
-173,
-37,
-16,
-54,
-164,
-55,
-94,
-253,
-181,
-37,
-70,
-152,
-7,
-126,
-184,
-102,
-50,
-22,
-180,
-51,
-123,
-221,
-220,
-87,
-46,
-118,
-129,
-223,
-211,
-41,
-20,
-129,
-78,
-37,
-183,
-243,
-92,
-21,
-240,
-17,
-59,
-55,
-169,
-67,
-181,
-98,
-170,
-231,
-121,
-94,
-27,
-244,
-60,
-247,
-76,
-106,
-109,
-206,
-73,
-64,
-247,
-94,
-193,
-70,
-131,
-121,
-57,
-223,
-143,
-41,
-241,
-203,
-97,
-155,
-14,
-23,
-253,
-184,
-255,
-119,
-23,
-26,
-108,
-83,
-17,
-184,
-190,
-127,
-135,
-7,
-191,
-126,
-102,
-129,
-196,
-233,
-251,
-254,
-200,
-138,
-40,
-186,
-85,
-137,
-85,
-100,
-160,
-83,
-29,
-159,
-202,
-53,
-185,
-54,
-137,
-203,
-239,
-71,
-74,
-119,
-79,
-10,
-245,
-181,
-140,
-186,
-158,
-135,
-184,
-103,
-18,
-224,
-33,
-103,
-106,
-118,
-204,
-10,
-201,
-234,
-170,
-147,
-31,
-99,
-202,
-168,
-47,
-186,
-239,
-121,
-50,
-62,
-131,
-39,
-243,
-15,
-225,
-146,
-151,
-154,
-249,
-169,
-123,
-26,
-17,
-229,
-145,
-221,
-239,
-90,
-199,
-153,
-238,
-230,
-253,
-185,
-142,
-44,
-116,
-126,
-166,
-166,
-189,
-41,
-206,
-176,
-57,
-176,
-67,
-208,
-74,
-60,
-121,
-197,
-87,
-138,
-170,
-232,
-104,
-154,
-67,
-48,
-52,
-50,
-22,
-49,
-236,
-165,
-94,
-96,
-36,
-4,
-7,
-225,
-46,
-213,
-146,
-104,
-133,
-213,
-57,
-207,
-18,
-178,
-149,
-105,
-61,
-63,
-82,
-166,
-218,
-150,
-214,
-14,
-200,
-237,
-64,
-180,
-147,
-159,
-21,
-183,
-164,
-28,
-152,
-210,
-241,
-42,
-59,
-118,
-0,
-116,
-70,
-18,
diff --git a/gr-atsc/src/lib/qa_convolutional_interleaver.cc b/gr-atsc/src/lib/qa_convolutional_interleaver.cc
deleted file mode 100644
index bfe86f0ea..000000000
--- a/gr-atsc/src/lib/qa_convolutional_interleaver.cc
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cppunit/TestAssert.h>
-#include <qa_convolutional_interleaver.h>
-
-void
-qa_convolutional_interleaver::t0 ()
-{
- static int input[16] = {
- 1, 2, 3, 4,
- 5, 6, 7, 8,
- 9, 10, 11, 12,
- 13, 14, 15, 16
- };
-
- static int output[16] = {
- 1, 0, 0, 0,
- 5, 2, 0, 0,
- 9, 6, 3, 0,
- 13, 10, 7, 4
- };
-
- // test interleaver
- intl = new convolutional_interleaver<int>(true, 4, 1);
-
- for (int i = 0; i < 16; i++)
- CPPUNIT_ASSERT_EQUAL (output[i], intl->transform (input[i]));
-}
-
-void
-qa_convolutional_interleaver::t1 ()
-{
- static int input[16] = {
- 1, 0, 0, 0,
- 5, 2, 0, 0,
- 9, 6, 3, 0,
- 13, 10, 7, 4
- };
-
- static int output[16] = {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 1, 2, 3, 4
- };
-
- // test deinterleaver
- intl = new convolutional_interleaver<int>(false, 4, 1);
-
- for (int i = 0; i < 16; i++)
- CPPUNIT_ASSERT_EQUAL (output[i], intl->transform (input[i]));
-}
-
-void
-qa_convolutional_interleaver::t2 ()
-{
- intl = new convolutional_interleaver<int>(true, 4, 1);
- deintl = new convolutional_interleaver<int>(false, 4, 1);
-
- int icount = 6000;
- int dcount = 6000;
-
- int end_to_end_delay = intl->end_to_end_delay ();
- for (int i = 0; i < end_to_end_delay; i++){
- CPPUNIT_ASSERT_EQUAL (0, deintl->transform (intl->transform (icount++)));
- }
-
- for (int i = 0; i < 3 * end_to_end_delay; i++){
- CPPUNIT_ASSERT_EQUAL (dcount++, deintl->transform (intl->transform (icount++)));
- }
-}
-
-void
-qa_convolutional_interleaver::t3 ()
-{
- intl = new convolutional_interleaver<int>(true, 4, 2);
- deintl = new convolutional_interleaver<int>(false, 4, 2);
-
- int icount = 6000;
- int dcount = 6000;
-
- int end_to_end_delay = intl->end_to_end_delay ();
- for (int i = 0; i < end_to_end_delay; i++){
- CPPUNIT_ASSERT_EQUAL (0, deintl->transform (intl->transform (icount++)));
- }
-
- for (int i = 0; i < 3 * end_to_end_delay; i++){
- CPPUNIT_ASSERT_EQUAL (dcount++, deintl->transform (intl->transform (icount++)));
- }
-}
-
-void
-qa_convolutional_interleaver::t4 ()
-{
- intl = new convolutional_interleaver<int>(true, 52, 4);
- deintl = new convolutional_interleaver<int>(false, 52, 4);
-
- int icount = 6000;
- int dcount = 6000;
-
- int end_to_end_delay = intl->end_to_end_delay ();
- CPPUNIT_ASSERT_EQUAL (10608, end_to_end_delay);
-
- for (int i = 0; i < end_to_end_delay; i++){
- CPPUNIT_ASSERT_EQUAL (0, deintl->transform (intl->transform (icount++)));
- }
-
- for (int i = 0; i < 3 * end_to_end_delay; i++){
- CPPUNIT_ASSERT_EQUAL (dcount++, deintl->transform (intl->transform (icount++)));
- }
-}
diff --git a/gr-atsc/src/lib/qa_convolutional_interleaver.h b/gr-atsc/src/lib/qa_convolutional_interleaver.h
deleted file mode 100644
index b60181d73..000000000
--- a/gr-atsc/src/lib/qa_convolutional_interleaver.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_CONVOLUTIONAL_INTERLEAVER_H_
-#define _QA_CONVOLUTIONAL_INTERLEAVER_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <convolutional_interleaver.h>
-
-class qa_convolutional_interleaver : public CppUnit::TestCase {
- private:
- convolutional_interleaver<int> *intl;
- convolutional_interleaver<int> *deintl;
-
- CPPUNIT_TEST_SUITE (qa_convolutional_interleaver);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST (t2);
- CPPUNIT_TEST (t3);
- CPPUNIT_TEST (t4);
- CPPUNIT_TEST_SUITE_END ();
-
- public:
-
- void setUp (){
- intl = 0;
- deintl = 0;
- }
-
- void tearDown (){
- delete intl;
- intl = 0;
- delete deintl;
- deintl = 0;
- }
-
- private:
-
- void t0 ();
- void t1 ();
- void t2 ();
- void t3 ();
- void t4 ();
-
-};
-
-
-#endif /* _QA_CONVOLUTIONAL_INTERLEAVER_H_ */
diff --git a/gr-atsc/src/lib/qa_interleaver_fifo.cc b/gr-atsc/src/lib/qa_interleaver_fifo.cc
deleted file mode 100644
index a9de97ff3..000000000
--- a/gr-atsc/src/lib/qa_interleaver_fifo.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cppunit/TestAssert.h>
-#include <qa_interleaver_fifo.h>
-
-void
-qa_interleaver_fifo::t0 ()
-{
- fifo = new interleaver_fifo<int>(0);
-
- for (int i = 10; i < 20; i++)
- CPPUNIT_ASSERT_EQUAL (i, fifo->stuff (i));
-}
-
-void
-qa_interleaver_fifo::t1 ()
-{
- fifo = new interleaver_fifo<int>(1);
-
- CPPUNIT_ASSERT_EQUAL (0, fifo->stuff (2));
-
- for (int i = 1; i < 10; i++)
- CPPUNIT_ASSERT_EQUAL (i * 2, fifo->stuff ((i + 1) * 2));
-}
-
-void
-qa_interleaver_fifo::t2 ()
-{
- fifo = new interleaver_fifo<int>(4);
-
- CPPUNIT_ASSERT_EQUAL (0, fifo->stuff (1));
- CPPUNIT_ASSERT_EQUAL (0, fifo->stuff (2));
- CPPUNIT_ASSERT_EQUAL (0, fifo->stuff (3));
- CPPUNIT_ASSERT_EQUAL (0, fifo->stuff (4));
-
- for (int i = 5; i < 20; i++)
- CPPUNIT_ASSERT_EQUAL (i - 4, fifo->stuff (i));
-}
diff --git a/gr-atsc/src/lib/qa_interleaver_fifo.h b/gr-atsc/src/lib/qa_interleaver_fifo.h
deleted file mode 100644
index 9783548ca..000000000
--- a/gr-atsc/src/lib/qa_interleaver_fifo.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_INTERLEAVER_FIFO_H_
-#define _QA_INTERLEAVER_FIFO_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-#include <interleaver_fifo.h>
-
-class qa_interleaver_fifo : public CppUnit::TestCase {
- private:
- interleaver_fifo<int> *fifo;
-
- public:
-
- void tearDown (){
- delete fifo;
- fifo = 0;
- }
-
- CPPUNIT_TEST_SUITE (qa_interleaver_fifo);
- CPPUNIT_TEST (t0);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST (t2);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
-
- void t0 ();
- void t1 ();
- void t2 ();
-
-};
-
-
-#endif /* _QA_INTERLEAVER_FIFO_H_ */
diff --git a/gr-atsc/src/lib/test_atsci.cc b/gr-atsc/src/lib/test_atsci.cc
deleted file mode 100644
index bf0a7eafc..000000000
--- a/gr-atsc/src/lib/test_atsci.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2006,2010,2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <gr_unittests.h>
-#include <cppunit/TextTestRunner.h>
-#include <cppunit/XmlOutputter.h>
-#include <qa_atsci.h>
-
-int
-main (int argc, char **argv)
-{
- CppUnit::TextTestRunner runner;
- std::ofstream xmlfile(get_unittest_path("gr_atsc.xml").c_str());
- CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
-
- runner.addTest (qa_atsc::suite ());
- runner.setOutputter(xmlout);
-
- bool was_successful = runner.run ("", false);
-
- return was_successful ? 0 : 1;
-}
diff --git a/gr-atsc/src/python/CMakeLists.txt b/gr-atsc/src/python/CMakeLists.txt
deleted file mode 100644
index fa9f91156..000000000
--- a/gr-atsc/src/python/CMakeLists.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2011-2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# Install python examples
-########################################################################
-include(GrPython)
-
-GR_PYTHON_INSTALL(
- PROGRAMS
- btl-fsd.py
- fpll.py
- interp.py
- xlate.py
- viterbi-out.py
- DESTINATION ${GR_PKG_DATA_DIR}/examples/atsc
- COMPONENT "atsc_examples"
-)
-
-install(
- FILES README
- DESTINATION ${GR_PKG_DATA_DIR}/examples/atsc
- COMPONENT "atsc_examples"
-)
-
-########################################################################
-# Handle the unit tests
-########################################################################
-if(ENABLE_TESTING)
-
-list(APPEND GR_TEST_PYTHON_DIRS
- ${CMAKE_BINARY_DIR}/gr-atsc/src/lib
-)
-list(APPEND GR_TEST_TARGET_DEPS gnuradio-atsc)
-
-include(GrTest)
-file(GLOB py_qa_test_files "qa_*.py")
-foreach(py_qa_test_file ${py_qa_test_files})
- get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
- GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file})
-endforeach(py_qa_test_file)
-endif(ENABLE_TESTING)
diff --git a/gr-atsc/src/python/README b/gr-atsc/src/python/README
deleted file mode 100644
index 74d6ba134..000000000
--- a/gr-atsc/src/python/README
+++ /dev/null
@@ -1,34 +0,0 @@
-Decoding ATSC using 19.2MSps rate over 5 processes
---------------------------------------------------
-
-1) Verify signal, adjust antenna and find best gain setting using uhd_fft.py,
-station frequency from the fcc video database, and sample rate to 6.4e6.
-
-2) Capture data - adjust gain (-g) frequency (-f) and which side
-the tvrx is on to fit your local setup:
-
-uhd_rx_cfile.py -s --samp-rate=6.4e6 -g 65 -f 503e6 atsc_data_6-4m_complex
-
-You probably still need fast disks to take the data, like a raid-0 set of
-striped sata drives. Make sure there are no or very few Ou overruns. Saving
-the raw usrp data in 'short' form halves the disk space/bus bandwidth that
-the usual complex form uses.
-
-3) Make pipes:
-
-mkfifo /tmp/atsc_pipe_1
-mkfifo /tmp/atsc_pipe_2
-mkfifo /tmp/atsc_pipe_3
-mkfifo /tmp/atsc_pipe_4
-mkfifo /tmp/atsc_pipe_5
-
-4) In seperate windows run processes:
-
-./interp_short.py <input rf data at 6.4Msps>
-./xlate.py
-./fpll.py
-./btl-fsd.py
-./viterbi-out.py <output mpeg transport stream>
-
-
-
diff --git a/gr-atsc/src/python/all_atsc.py b/gr-atsc/src/python/all_atsc.py
deleted file mode 100644
index 0137839bd..000000000
--- a/gr-atsc/src/python/all_atsc.py
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/env /usr/bin/python
-#
-# Copyright 2004 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This module starts the atsc processing chain taking the captured
-# off-air signal created with:
-#
-# uhd_rx_cfile.py --samp-rate=6.4e6
-# -f <center of tv signal channel freq>
-# -g <appropriate gain for best signal / noise>
-# -s output shorts
-#
-# All this module does is multiply the sample rate by 3, from 6.4e6 to
-# 19.2e6 complex samples / sec, then lowpass filter with a cutoff of 3.2MHz
-# and a transition band width of .5MHz. Center of the tv channels is
-# then at 0 with edges at -3.2MHz and 3.2MHz.
-
-from gnuradio import gr, atsc
-import sys, os, math
-
-def graph (args):
-
- nargs = len(args)
- if nargs == 2:
- infile = args[0]
- outfile = args[1]
- else:
- raise ValueError('usage: interp.py input_file output_file\n')
-
- tb = gr.top_block ()
-
- # Convert to a from shorts to a stream of complex numbers.
- srcf = gr.file_source (gr.sizeof_short,infile)
- s2ss = gr.stream_to_streams(gr.sizeof_short,2)
- s2f1 = gr.short_to_float()
- s2f2 = gr.short_to_float()
- src0 = gr.float_to_complex()
- tb.connect(srcf, s2ss)
- tb.connect((s2ss, 0), s2f1, (src0, 0))
- tb.connect((s2ss, 1), s2f2, (src0, 1))
-
- # Low pass filter it and increase sample rate by a factor of 3.
- lp_coeffs = gr.firdes.low_pass ( 3, 19.2e6, 3.2e6, .5e6, gr.firdes.WIN_HAMMING )
- lp = gr.interp_fir_filter_ccf ( 3, lp_coeffs )
- tb.connect(src0, lp)
-
- # Upconvert it.
- duc_coeffs = gr.firdes.low_pass ( 1, 19.2e6, 9e6, 1e6, gr.firdes.WIN_HAMMING )
- duc = gr.freq_xlating_fir_filter_ccf ( 1, duc_coeffs, 5.75e6, 19.2e6 )
- # Discard the imaginary component.
- c2f = gr.complex_to_float()
- tb.connect(lp, duc, c2f)
-
- # Frequency Phase Lock Loop
- input_rate = 19.2e6
- IF_freq = 5.75e6
- # 1/2 as wide because we're designing lp filter
- symbol_rate = atsc.ATSC_SYMBOL_RATE/2.
- NTAPS = 279
- tt = gr.firdes.root_raised_cosine (1.0, input_rate, symbol_rate, .115, NTAPS)
- # heterodyne the low pass coefficients up to the specified bandpass
- # center frequency. Note that when we do this, the filter bandwidth
- # is effectively twice the low pass (2.69 * 2 = 5.38) and hence
- # matches the diagram in the ATSC spec.
- arg = 2. * math.pi * IF_freq / input_rate
- t=[]
- for i in range(len(tt)):
- t += [tt[i] * 2. * math.cos(arg * i)]
- rrc = gr.fir_filter_fff(1, t)
-
- fpll = atsc.fpll()
-
- pilot_freq = IF_freq - 3e6 + 0.31e6
- lower_edge = 6e6 - 0.31e6
- upper_edge = IF_freq - 3e6 + pilot_freq
- transition_width = upper_edge - lower_edge
- lp_coeffs = gr.firdes.low_pass (1.0,
- input_rate,
- (lower_edge + upper_edge) * 0.5,
- transition_width,
- gr.firdes.WIN_HAMMING);
-
- lp_filter = gr.fir_filter_fff (1,lp_coeffs)
-
- alpha = 1e-5
- iir = gr.single_pole_iir_filter_ff(alpha)
- remove_dc = gr.sub_ff()
-
- tb.connect(c2f, fpll, lp_filter)
- tb.connect(lp_filter, iir)
- tb.connect(lp_filter, (remove_dc,0))
- tb.connect(iir, (remove_dc,1))
-
- # Bit Timing Loop, Field Sync Checker and Equalizer
-
- btl = atsc.bit_timing_loop()
- fsc = atsc.fs_checker()
- eq = atsc.equalizer()
- fsd = atsc.field_sync_demux()
-
- tb.connect(remove_dc, btl)
- tb.connect((btl, 0),(fsc, 0),(eq, 0),(fsd, 0))
- tb.connect((btl, 1),(fsc, 1),(eq, 1),(fsd, 1))
-
- # Viterbi
-
- viterbi = atsc.viterbi_decoder()
- deinter = atsc.deinterleaver()
- rs_dec = atsc.rs_decoder()
- derand = atsc.derandomizer()
- depad = atsc.depad()
- dst = gr.file_sink(gr.sizeof_char, outfile)
- tb.connect(fsd, viterbi, deinter, rs_dec, derand, depad, dst)
-
- dst2 = gr.file_sink(gr.sizeof_gr_complex, "atsc_complex.data")
- tb.connect(src0, dst2)
-
- tb.run ()
-
-if __name__ == '__main__':
- graph (sys.argv[1:])
-
-
diff --git a/gr-atsc/src/python/atsc_utils.py b/gr-atsc/src/python/atsc_utils.py
deleted file mode 100644
index fced6d190..000000000
--- a/gr-atsc/src/python/atsc_utils.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Copyright 2006 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-import random
-import sys
-
-MPEG_SYNC_BYTE = 0x47
-
-def make_fake_transport_stream_packet(npkts):
- """
- Return a sequence of 8-bit ints that represents an MPEG Transport Stream packet.
-
- @param npkts: how many 188-byte packets to return
-
- FYI, each ATSC Data Frame contains two Data Fields, each of which contains
- 312 data segments. Each transport stream packet maps to a data segment.
- """
- r = [0] * (npkts * 188)
- i = 0
- for j in range(npkts):
- r[i+0] = MPEG_SYNC_BYTE
- r[i+1] = random.randint(0, 127) # top bit (transport error bit) clear
- i = i + 2
- for n in range(186):
- r[i + n] = random.randint(0, 255)
- i = i + 186
-
- return r
-
-
-def pad_stream(src, sizeof_total, sizeof_pad):
- sizeof_valid = sizeof_total - sizeof_pad
- assert sizeof_valid > 0
- assert (len(src) % sizeof_valid) == 0
- npkts = len(src) // sizeof_valid
- dst = [0] * (npkts * sizeof_total)
- for i in range(npkts):
- src_s = i * sizeof_valid
- dst_s = i * sizeof_total
- dst[dst_s:dst_s + sizeof_valid] = src[src_s:src_s + sizeof_valid]
- return dst
-
-
-def depad_stream(src, sizeof_total, sizeof_pad):
- sizeof_valid = sizeof_total - sizeof_pad
- assert sizeof_valid > 0
- assert (len(src) % sizeof_total) == 0
- npkts = len(src) // sizeof_total
- dst = [0] * (npkts * sizeof_valid)
- for i in range(npkts):
- src_s = i * sizeof_total
- dst_s = i * sizeof_valid
- dst[dst_s:dst_s + sizeof_valid] = src[src_s:src_s + sizeof_valid]
- return dst
-
-
diff --git a/gr-atsc/src/python/btl-fsd.py b/gr-atsc/src/python/btl-fsd.py
deleted file mode 100755
index 826e71016..000000000
--- a/gr-atsc/src/python/btl-fsd.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2005,2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-
-from gnuradio import gr
-from gnuradio import atsc
-import os
-
-print os.getpid()
-
-tb = gr.top_block()
-
-btl = atsc.bit_timing_loop()
-fsc = atsc.fs_checker()
-eq = atsc.equalizer()
-fsd = atsc.field_sync_demux()
-
-out_data = gr.file_sink(atsc.sizeof_atsc_soft_data_segment,"/tmp/atsc_pipe_5")
-
-inp = gr.file_source(gr.sizeof_float,"/tmp/atsc_pipe_3")
-
-tb.connect(inp,btl)
-tb.connect((btl,0),(fsc,0),(eq,0),(fsd,0))
-tb.connect((btl,1),(fsc,1),(eq,1),(fsd,1))
-tb.connect(fsd,out_data)
-
-tb.run()
-
-
diff --git a/gr-atsc/src/python/fpll.py b/gr-atsc/src/python/fpll.py
deleted file mode 100755
index aed975557..000000000
--- a/gr-atsc/src/python/fpll.py
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2005 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-
-from gnuradio import gr, atsc
-import math, os
-
-def main():
-
- print os.getpid()
-
- tb = gr.top_block()
-
- u = gr.file_source(gr.sizeof_float,"/tmp/atsc_pipe_2")
-
- input_rate = 19.2e6
- IF_freq = 5.75e6
-
-
- # 1/2 as wide because we're designing lp filter
- symbol_rate = atsc.ATSC_SYMBOL_RATE/2.
- NTAPS = 279
- tt = gr.firdes.root_raised_cosine (1.0, input_rate, symbol_rate, .115, NTAPS)
- # heterodyne the low pass coefficients up to the specified bandpass
- # center frequency. Note that when we do this, the filter bandwidth
- # is effectively twice the low pass (2.69 * 2 = 5.38) and hence
- # matches the diagram in the ATSC spec.
- arg = 2. * math.pi * IF_freq / input_rate
- t=[]
- for i in range(len(tt)):
- t += [tt[i] * 2. * math.cos(arg * i)]
- rrc = gr.fir_filter_fff(1, t)
-
- fpll = atsc.fpll()
-
- pilot_freq = IF_freq - 3e6 + 0.31e6
- lower_edge = 6e6 - 0.31e6
- upper_edge = IF_freq - 3e6 + pilot_freq
- transition_width = upper_edge - lower_edge
- lp_coeffs = gr.firdes.low_pass (1.0,
- input_rate,
- (lower_edge + upper_edge) * 0.5,
- transition_width,
- gr.firdes.WIN_HAMMING);
-
- lp_filter = gr.fir_filter_fff (1,lp_coeffs)
-
- alpha = 1e-5
- iir = gr.single_pole_iir_filter_ff(alpha)
- remove_dc = gr.sub_ff()
-
- out = gr.file_sink(gr.sizeof_float,"/tmp/atsc_pipe_3")
- # out = gr.file_sink(gr.sizeof_float,"/mnt/sata/atsc_data_float")
-
- tb.connect(u, fpll, lp_filter)
- tb.connect(lp_filter, iir)
- tb.connect(lp_filter, (remove_dc,0))
- tb.connect(iir, (remove_dc,1))
- tb.connect(remove_dc, out)
-
- tb.run()
-
-
-if __name__ == '__main__':
- main ()
-
-
-
diff --git a/gr-atsc/src/python/interp.py b/gr-atsc/src/python/interp.py
deleted file mode 100755
index 8a3cc8d4c..000000000
--- a/gr-atsc/src/python/interp.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env /usr/bin/python
-#
-# Copyright 2004,2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This module starts the atsc processing chain taking the captured
-# off-air signal created with:
-#
-# uhd_rx_cfile.py --samp-rate=6.4e6
-# -f <center of tv signal channel freq>
-# -g <appropriate gain for best signal / noise>
-#
-# All this module does is multiply the sample rate by 3, from 6.4e6 to
-# 19.2e6 complex samples / sec, then lowpass filter with a cutoff of 3.2MHz
-# and a transition band width of .5MHz. Center of the tv channels is
-# then at 0 with edges at -3.2MHz and 3.2MHz.
-
-from gnuradio import gr
-import sys
-
-def graph (args):
-
- nargs = len (args)
- if nargs == 1:
- infile = args[0]
- else:
- sys.stderr.write('usage: interp.py input_file\n')
- sys.exit (1)
-
- tb = gr.top_block ()
-
- src0 = gr.file_source (gr.sizeof_gr_complex,infile)
-
- lp_coeffs = gr.firdes.low_pass ( 3, 19.2e6, 3.2e6, .5e6, gr.firdes.WIN_HAMMING )
- lp = gr.interp_fir_filter_ccf ( 1, lp_coeffs )
-
- file = gr.file_sink(gr.sizeof_gr_complex,"/tmp/atsc_pipe_1")
-
- tb.connect( src0, lp, file )
-
- tb.start()
- raw_input ('Head End: Press Enter to stop')
- tb.stop()
-
-if __name__ == '__main__':
- graph (sys.argv[1:])
-
-
diff --git a/gr-atsc/src/python/interp_short.py b/gr-atsc/src/python/interp_short.py
deleted file mode 100755
index c5ea337f9..000000000
--- a/gr-atsc/src/python/interp_short.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env /usr/bin/python
-#
-# Copyright 2004 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This module starts the atsc processing chain taking the captured
-# off-air signal created with:
-#
-# uhd_rx_cfile.py --samp-rate=6.4e6
-# -f <center of tv signal channel freq>
-# -g <appropriate gain for best signal / noise>
-# -s output shorts
-#
-# All this module does is multiply the sample rate by 3, from 6.4e6 to
-# 19.2e6 complex samples / sec, then lowpass filter with a cutoff of 3.2MHz
-# and a transition band width of .5MHz. Center of the tv channels is
-# then at 0 with edges at -3.2MHz and 3.2MHz.
-
-from gnuradio import gr
-import sys, os
-
-def graph (args):
-
- print os.getpid()
-
- nargs = len (args)
- if nargs == 1:
- infile = args[0]
- else:
- sys.stderr.write('usage: interp.py input_file\n')
- sys.exit (1)
-
- tb = gr.top_block ()
-
- srcf = gr.file_source (gr.sizeof_short,infile)
- s2ss = gr.stream_to_streams(gr.sizeof_short,2)
- s2f1 = gr.short_to_float()
- s2f2 = gr.short_to_float()
- src0 = gr.float_to_complex()
-
-
- lp_coeffs = gr.firdes.low_pass ( 3, 19.2e6, 3.2e6, .5e6, gr.firdes.WIN_HAMMING )
- lp = gr.interp_fir_filter_ccf ( 3, lp_coeffs )
-
- file = gr.file_sink(gr.sizeof_gr_complex,"/tmp/atsc_pipe_1")
-
- tb.connect( srcf, s2ss )
- tb.connect( (s2ss, 0), s2f1, (src0,0) )
- tb.connect( (s2ss, 1), s2f2, (src0,1) )
- tb.connect( src0, lp, file)
-
- tb.start()
- raw_input ('Head End: Press Enter to stop')
- tb.stop()
-
-if __name__ == '__main__':
- graph (sys.argv[1:])
-
-
diff --git a/gr-atsc/src/python/qa_atsc.py b/gr-atsc/src/python/qa_atsc.py
deleted file mode 100755
index c6b8d2e95..000000000
--- a/gr-atsc/src/python/qa_atsc.py
+++ /dev/null
@@ -1,222 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2006,2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import atsc # qa code needs to run without being installed
-#from gnuradio import atsc
-from atsc_utils import *
-import sys
-
-
-class memoize(object):
- def __init__(self, thunk):
- self.thunk = thunk
- self.cached = False
- self.value = None
-
- def __call__(self):
- if self.cached:
- return self.value
- self.value = self.thunk()
- self.cached = True
- return self.value
-
-
-"""
-Make a fake transport stream that's big enough for our purposes.
-We generate 8 full fields. This is relatively expensive. It
-takes about 2 seconds to execute.
-"""
-make_transport_stream = \
- memoize(lambda : tuple(make_fake_transport_stream_packet(8 * atsc.ATSC_DSEGS_PER_FIELD)))
-
-
-def pad_transport_stream(src):
- """
- An MPEG transport stream packet is 188 bytes long. Internally we use a packet
- that is 256 bytes long to help with buffer alignment. This function adds the
- appropriate trailing padding to convert each packet from 188 to 256 bytes.
- """
- return pad_stream(src, atsc.sizeof_atsc_mpeg_packet, atsc.sizeof_atsc_mpeg_packet_pad)
-
-
-def depad_transport_stream(src):
- """
- An MPEG transport stream packet is 188 bytes long. Internally we use a packet
- that is 256 bytes long to help with buffer alignment. This function removes the
- trailing padding to convert each packet from 256 back to 188 bytes.
- """
- return depad_stream(src, atsc.sizeof_atsc_mpeg_packet, atsc.sizeof_atsc_mpeg_packet_pad)
-
-
-class vector_source_ts(gr.hier_block2):
- """
- MPEG Transport stream source for testing.
- """
- def __init__(self, ts):
- """
- Pad tranport stream packets to 256 bytes and reformat appropriately.
-
- @param ts: MPEG transport stream.
- @type ts: sequence of ints in [0,255]; len(ts) % 188 == 0
- """
-
- src = gr.vector_source_b(pad_transport_stream(ts))
- s2v = gr.stream_to_vector(gr.sizeof_char, atsc.sizeof_atsc_mpeg_packet)
-
- gr.hier_block2.__init__(self, "vector_source_ts",
- gr.io_signature(0, 0, 0),
- s2v.output_signature())
- self.connect(src, s2v, self)
-
-
-class vector_sink_ts(gr.hier_block2):
- """
- MPEG Transport stream sink for testing.
- """
- def __init__(self):
- """
- """
-
- v2s = gr.vector_to_stream(gr.sizeof_char, atsc.sizeof_atsc_mpeg_packet)
- self.sink = gr.vector_sink_b()
- gr.hier_block2.__init__(self, "vector_sink_ts",
- v2s.input_signature(),
- gr.io_signature(0, 0, 0))
- self.connect(self, v2s, self.sink)
-
- def data(self):
- """
- Extracts tranport stream from sink and returns it to python.
-
- Depads tranport stream packets from 256 back to 188 bytes.
- @rtype: tuple of ints in [0,255]; len(result) % 188 == 0
- """
- return tuple(depad_transport_stream(self.sink.data()))
-
-
-
-class qa_atsc(gr_unittest.TestCase):
-
- def setUp(self):
- self.tb = gr.top_block()
-
- def tearDown(self):
- self.tb = None
-
-
- # The tests are run in alphabetical order
-
- def test_loopback_000(self):
- """
- Loopback randomizer to derandomizer
- """
- src_data = make_transport_stream()
- expected_result = src_data
-
- src = vector_source_ts(src_data)
- rand = atsc.randomizer()
- derand = atsc.derandomizer()
- dst = vector_sink_ts()
- self.tb.connect(src, rand, derand, dst)
- self.tb.run ()
- result_data = dst.data ()
- self.assertEqual (expected_result, result_data)
-
- def test_loopback_001(self):
- """
- Loopback randomizer/rs_encoder to rs_decoder/derandomizer
- """
- src_data = make_transport_stream()
- expected_result = src_data
-
- src = vector_source_ts(src_data)
- rand = atsc.randomizer()
- rs_enc = atsc.rs_encoder()
- rs_dec = atsc.rs_decoder()
- derand = atsc.derandomizer()
- dst = vector_sink_ts()
- self.tb.connect(src, rand, rs_enc, rs_dec, derand, dst)
- self.tb.run ()
- result_data = dst.data ()
- self.assertEqual (expected_result, result_data)
-
- def test_loopback_002(self):
- """
- Loopback randomizer/rs_encoder/interleaver to
- deinterleaver/rs_decoder/derandomizer
- """
- src_data = make_transport_stream()
- interleaver_delay = 52
- expected_result = src_data[0:len(src_data)-(interleaver_delay*atsc.ATSC_MPEG_PKT_LENGTH)]
-
- src = vector_source_ts(src_data)
- rand = atsc.randomizer()
- rs_enc = atsc.rs_encoder()
- inter = atsc.interleaver()
- deinter = atsc.deinterleaver()
- rs_dec = atsc.rs_decoder()
- derand = atsc.derandomizer()
- dst = vector_sink_ts()
- self.tb.connect(src, rand, rs_enc, inter, deinter, rs_dec, derand, dst)
- self.tb.run ()
- result_data = dst.data ()
- result_data = result_data[(interleaver_delay*atsc.ATSC_MPEG_PKT_LENGTH):len(result_data)]
- self.assertEqual (expected_result, result_data)
-
-
- def test_loopback_003(self):
- """
- Loopback randomizer/rs_encoder/interleaver/trellis_encoder
- via ds_to_softds to
- viterbi_decoder/deinterleaver/rs_decoder/derandomizer
- """
- src_data = make_transport_stream()
- interleaver_delay = 52
- viterbi_delay = 12
- expected_result = src_data[0:len(src_data)-((interleaver_delay+viterbi_delay)*atsc.ATSC_MPEG_PKT_LENGTH)]
-
- src = vector_source_ts(src_data)
- rand = atsc.randomizer()
- rs_enc = atsc.rs_encoder()
- inter = atsc.interleaver()
- trellis = atsc.trellis_encoder()
- softds = atsc.ds_to_softds()
- viterbi = atsc.viterbi_decoder()
- deinter = atsc.deinterleaver()
- rs_dec = atsc.rs_decoder()
- derand = atsc.derandomizer()
- dst = vector_sink_ts()
- self.tb.connect(src, rand, rs_enc, inter, trellis, softds, viterbi, deinter, rs_dec, derand, dst)
- self.tb.run ()
- result_data = dst.data ()[((interleaver_delay+viterbi_delay)*atsc.ATSC_MPEG_PKT_LENGTH):len(dst.data())]
- self.assertEqual (expected_result, result_data)
-
-
-if __name__ == '__main__':
- gr_unittest.main()
-
-
-
-
-
-
diff --git a/gr-atsc/src/python/viterbi-out.py b/gr-atsc/src/python/viterbi-out.py
deleted file mode 100755
index 67edd99b2..000000000
--- a/gr-atsc/src/python/viterbi-out.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2006,2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-
-from gnuradio import gr, atsc
-import sys, os
-
-def main(args):
-
- print os.getpid()
-
- nargs = len (args)
- if nargs == 1:
- outfile = args[0]
- else:
- sys.stderr.write ('usage: viterbi_out.py output_file\n')
- sys.exit (1)
-
- tb = gr.top_block()
-
- src = gr.file_source(atsc.sizeof_atsc_soft_data_segment, "/tmp/atsc_pipe_5")
- viterbi = atsc.viterbi_decoder()
- deinter = atsc.deinterleaver()
- rs_dec = atsc.rs_decoder()
- derand = atsc.derandomizer()
- depad = atsc.depad()
- dst = gr.file_sink(gr.sizeof_char,outfile)
- tb.connect(src, viterbi, deinter, rs_dec, derand, depad, dst)
- tb.run ()
-
-
-if __name__ == '__main__':
- main(sys.argv[1:])
-
-
-
-
-
-
diff --git a/gr-atsc/src/python/xlate.py b/gr-atsc/src/python/xlate.py
deleted file mode 100755
index 68e280a8c..000000000
--- a/gr-atsc/src/python/xlate.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env /usr/bin/python
-#
-# Copyright 2004,2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This module upconverts the 19.2e6 sample rate signal from a center
-# of 0 to 5.75e6 and converts to float, to prepare the signal for
-# the old gnuradio 0.9 block (bit timing loop, field sync checker,
-# equalizer and field sync demux), effectively simulating an
-# mc4020 card, except the sample rate is 19.2e6 instead of 20e6.
-#
-# The signal is then centered on 5.75e6 with edges at 5.75 + 3.2 = 8.95MHz
-# and 5.75 - 3.2 = 2.55Mhz, low pass filtered with cutoff at 9Mhz and a
-# transition band width of 1Mhz.
-#
-# Input complex -3.2 to 3.2Mhz, output float 2.55 to 8.95Mhz.
-
-from gnuradio import gr
-import os
-
-def graph ():
- print os.getpid()
- sampling_freq = 19200000
-
- tb = gr.top_block ()
-
- src0 = gr.file_source (gr.sizeof_gr_complex,"/tmp/atsc_pipe_1")
-
- duc_coeffs = gr.firdes.low_pass ( 1, 19.2e6, 9e6, 1e6, gr.firdes.WIN_HAMMING )
- duc = gr.freq_xlating_fir_filter_ccf ( 1, duc_coeffs, 5.75e6, 19.2e6 )
-
- c2f = gr.complex_to_float()
- file = gr.file_sink(gr.sizeof_float,"/tmp/atsc_pipe_2")
-
- tb.connect( src0, duc, c2f, file )
-
- tb.run()
-
-if __name__ == '__main__':
- graph ()